Я решаю 3 линейных алгебраических уравнения с использованием MATLAB. Я знаю ожидаемые решения, один из которых должен быть 0
, но он показывает 2.2204e-16
.MATLAB показывает очень маленькое значение вместо 0 (ноль)
MATLAB Код:
a=[2 5 -3; 9 2 3; 7 -12 5]
b=[-11; 0; 8]
x=inv(a)*b
Ожидаемое решение -1, 0, 3
, но он показывает:
-1.0000e+00
2.2204e-16
3.0000e+00
Технически, я не использовал программное обеспечение MATLAB для этого, но употребил this онлайн Октава переводчик.
Я ожидаю ровно 0 как выход, а не 2.2204e-16
. Как мне подойти к этому?
Это называется "машина точность" .. См [это сообщение] (http://stackoverflow.com/q/686439/3372061) Чтобы получить больше информации. –
Да, это решило !! – partho
@SandipanDey Это опасный совет, потому что если выход деления - это некоторое _legit_ десятичное число - эта информация будет потеряна. @partho - если вы _must_ вокруг него, сделайте это, используя известное количество степеней точности - 'round (..., N)', где 'N' около 6 должно делать в вашем случае. Однако проблема заключается в том, что вы используете неправильные операторы для решения линейного уравнения .... Я отправлю ответ в ближайшее время. –