#polynomials #maple
Вопрос:
Например, многочлен определяется следующим образом:
f := (x, y) -> 333.75y^6 x^2(11x^2y^2 — y^6 — 12y^4 — 2) 5.5y^8 1/2*x/y
В maple я рассчитываю оценить это до 5 значимых цифр, таких как:
evalf[5](f(77617,33096))
И получите значение, равное: 1*10^32.
Почему это не на 5 сиг рис? Почему это не близко к значению 7,878 * 10^29, когда вы увеличиваете требуемое количество сигнатур?
Спасибо!
Ответ №1:
Не снижайте рабочую точность настолько низко, особенно если вы пытаетесь вычислить точный ответ (а затем округлить его для удобства).
Что еще более важно, для составных выражений рабочая точность с плавающей запятой ( Digits
или индекс evalf
вызова)-это просто спецификация рабочей точности, а не запрос точности.
Снижая рабочую точность настолько, что вы видите большую ошибку округления при вычислении с плавающей запятой.
restart;
f := (x, y) -> 333.75*y^6
x^2*(11*x^2*y^2 - y^6 - 12*y^4 - 2)
5.5*y^8 1/2*x/y:
for d from 5 to 15 do
evalf[5](evalf[d](f(77617,33096)));
end do;
32
1 10
31
-3 10
30
1 10
29
8 10
29
7.9 10
29
7.88 10
29
7.878 10
29
7.8784 10
29
7.8785 10
29
7.8785 10
29
7.8785 10