(1) использовать horner
, чтобы изменить выражение таким образом, чтобы его можно было более точно оценивать.
(%i1) display2d : false;
(%o1) false
(%i2) horner (x^5-6*x^4+14*x^3-20*x^2+24*x-16, x);
(%o2) x*(x*(x*((x-6)*x+14)-20)+24)-16
(%i3) subst (x=1.999993580023622, %);
(%o3) -1.77635683940025E-15
(2) использовать арифметику bigfloat (variable precision).
(%i4) subst (x=1.999993580023622b0, x^5-6*x^4+14*x^3-20*x^2+24*x-16);
(%o4) -1.332267629550188b-15
(%i5) fpprec : 50 $
(%i6) fpprintprec : 8 $
(%i7) subst (x=1.999993580023622b0, x^5-6*x^4+14*x^3-20*x^2+24*x-16);
(%o7) -1.5876314b-15
(3) использовать рациональную арифметику, которая является точной.
(%i2) rat (1.999993580023622);
rat: replaced 1.999993580023622 by 38317775/19158949 = 1.999993580023622
(%o2) 38317775/19158949
(%i3) subst (x=38317775/19158949, x^5-6*x^4+14*x^3-20*x^2+24*x-16);
(%o3) -4098340979864306910009/2581418432543842245350194942774769749
(%i4) float (%);
(%o4) -1.587631407677531E-15
На каком языке это? Что делает 'limit'? – Jubobs
@Jubobs [Maxima] (http://maxima.sourceforge.net). –
@RobertDodier Спасибо. Я не знал, что тег [tag: maxima] относится к чему-то, кроме математической концепции. – Jubobs