【发布时间】:2014-10-19 19:33:26
【问题描述】:
我用 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
最奇怪的是,对于某些矩阵,这不会发生。
【问题讨论】:
标签: linear-algebra scilab