作业帮 > 综合 > 作业

用matlab对矩阵进行高斯消元

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 06:39:19
用matlab对矩阵进行高斯消元
求问有没有内置代码直接能用的?
%求解例题2.1
%高斯法求解线性方程组Ax=b
%A为输入矩阵系数,b为方程组右端系数
%方程组的解保存在x变量中
%先输入方程系数
A=[1 2 3;2 7 5;1 4 9];
b=[1 6 -3]';
[m,n]=size(A);
%检查系数正确性
if m~=n
   error('矩阵A的行数和列数必须相同');
   return;
end
if m~=size(b)
   error('b的大小必须和A的行数或A的列数相同');
   return;
end
%再检查方程是否存在唯一解
if rank(A)~=rank([A,b])
   error('A矩阵的秩和增广矩阵的秩不相同,方程不存在唯一解');
   return;
end
%这里采用增广矩阵行变换的方式求解
c=n+1;
A(:,c)=b;
%%消元过程
for k=1:n-1
A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/A(k,k))*A(k, k:c);
End
%%回代结果
x=zeros(length(b),1); 
x(n)=A(n,c)/A(n,n);
for k=n-1:-1:1
x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k);
end
%显示计算结果
disp('x=');
disp(x);