Я пытаюсь понять ошибку округления для основных арифметических операций в MATLAB, и я наткнулся на следующий любопытный пример.
(0.3)^3 == (0.3)*(0.3)*(0.3)
ans = 0
Я хотел бы точно знать, как вычисляется левая часть. Документация MATLAB предполагает, что для целых степеней используется алгоритм "возведения в степень возведения в квадрат".
"Матричная мощность X ^ p равна X мощности p, если p - скаляр. Если p - целое число, мощность вычисляется путем повторного квадратирования."
Итак, я предположил, что (0.3)^3
и (0.3)*(0.3)^2
вернут одно и то же значение. Но это не так. Как объяснить разницу в ошибке округления?