Matlab中的矩阵索引与除法
我正在尝试编码高斯消去法,这是我正在使用的一段代码。矩阵已为三角形,但此表达式中存在错误:Matlab中的矩阵索引与除法,matlab,gaussian,Matlab,Gaussian,我正在尝试编码高斯消去法,这是我正在使用的一段代码。矩阵已为三角形,但此表达式中存在错误: x(n) = b(n) / A(n, n); 以下是完整的代码: function [x] = gauss(A, b) n = size(A); for k=1 : n-1 for i=k+1 : n m = A(i, k) / A(k, k); for j=1 : n A(i, j) = A(i, j) - m *
x(n) = b(n) / A(n, n);
以下是完整的代码:
function [x] = gauss(A, b)
n = size(A);
for k=1 : n-1
for i=k+1 : n
m = A(i, k) / A(k, k);
for j=1 : n
A(i, j) = A(i, j) - m * A(k, j);
end
b(i) = b(i) - m * b(k);
end
end
x(n) = b(n) / A(n, n);
disp(double(b(n)));
for k=n-1 : -1 : 1
s=0;
for i=k+1 : n
s = s + A(k, i) * x(i);
end
x(k) = (b(k) - s) / A(k, k);
end
disp(x);
end
谢谢你的帮助。顺便说一句,我是Matlab的新手
编辑:添加更多信息
我这样调用这个函数:
A=[632;9-14;1053]
b=[12 37 21]
sol = gauss(A, b);
这条线
n = size(A);
将有一个向量结果,因为a
是一个矩阵。看来您在等这一行
x(n) = b(n) / A(n, n);
行为类似于标量除法,但使用n
向量实际上是在尝试对不同维度的矩阵进行除法。根据示例代码检查这些语句的输出
n = size(A);
A(n,n)
b(n)
请注意,您不是在处理标量。如果希望n
成为等于a
行数的标量,请尝试替换
n = size(A);
与
现在
n
应该真正代表A的行数
A和b的维度是什么?问题现在更新了。:)非常感谢。我发现了我的错误。我通过[n,n]=大小(A)来解决它;
[n n1] = size(A);