Моя функция для рассчитает Гауссово исключение (без parcial поворота) с Scilab возвращаются странный результат для таких операций, какСтранный результат в гауссовой ликвидации с Scilab
0.083333 - 1.000000*0.083333 = -0.000000
(минус ноль, я действительно не понимаю)
И когда я получаю доступ к этому результату в матрице, число показано - 1.388D-17
. У кого-то есть идея, почему это? Ниже мой код для исключения гаусс. A - расширенная матрица (A | b)
function [r] = gaussian_elimination(A)
//Get a tuple representing matrix dimension
[row, col] = size(A)
if ((row ~= 1) & (col ~= 2)) then
for k = 1:row
disp(A)
if A(k, k) ~= 0 then
for i = k+1:row
m = real(A(i, k)/A(k, k))
for j = 1:col
a = A(k, j)
new_element = A(i, j) - m*a
printf("New Element A(%d, %d) = %f - %f*%f = %f\n", i, j, A(i,j), m, a, new_element)
A(i,j) = 0
A(i,j) = new_element
end
end
else
A = "Inconsistent system"
break
end
end
else
A = A(1,1)
end
r = A
Самое странное, что для некоторых матриц это не происходит.
Спасибо, парень, я действительно подозревал, что это круглая ошибка, потому что я выполняю вторую половину кода (обратная подстановка) с помощью этой матрицы, результат был верным. Я перепроверяю, если об этом говорится в документации scilab. Большое спасибо. – frodrigues