我正在尝试使用前向消除来减少Matlab中的矩阵。到目前为止,我一直没有成功。这是我到目前为止编写的代码。 (它的形式为ax = b)
a = [4 1 -1;5 1 2;6 1 1];
b = [-2 4 6];
width = size(a,2);
height = size(a,1);
x=1;
y=1;
i=1;
% forward elimination
for i=1 : width
for y=2 : height
factor = a(y,x) / a(1,x);
for x=i : width
a(y,x) = a(y,x) - a(1,x) * factor;
end
x=1;
end
end
这会产生这样的输出:
4.0000 1.0000 -1.0000
0 -0.2500 3.2500
0 -0.5000 2.5000
所以它很接近但我在最后一行需要多一个零。任何人都可以帮忙解决这个问题吗?我很感激。
答案 0 :(得分:2)
我猜你正在寻找这个:
clear all
close all
a = [4 1 -1;5 1 2;6 1 1];
b = [-2 4 6];
width = size(a,2);
height = size(a,1);
% forward elimination
for i=1 : width
for y=i+1 : height
factor = a(y,i) / a(i,i);
for x=i : width
a(y,x) = a(y,x) - a(i,x) * factor;
end
end
end
另请注意,如果a
不是方形,则i
位于{1,...,min(width,height)}
。当您在a
中进行b
中的相同操作时会发生这种情况,因为a = [a,b] =增强矩阵。