matlab 用列主元高斯消去法求逆矩阵

clc;clear;formatshortdisp('请输入矩阵A:');A=input('A=');[n,n]=size(A);whiledet(A)==0disp('... clc;clear;format short
disp('请输入矩阵A:');
A=input('A=');
[n,n]=size(A);
while det(A)==0
disp('矩阵A不存在逆矩阵');
clear;
disp('请重新输入矩阵A');
A=input('A=');
[n,n]=size(A);
continue
end
s=1;P=zeros(1,n);
while s<=n
max=abs(A(s,s));
big=0;
for m=s:n
if max<abs(A(m,s))
max=abs(A(m,s));
q=m;
big=1;
else continue
end
end
if big==1
P(s)=q;
D=A(s,:);
A(s,:)=A(q,:);
A(q,:)=D;
end
for i=1:n
if i~=s
for j=1:n
if j~=s
A(i,j)=A(i,j)-A(s,j)*A(i,s)/A(s,s);
else continue
end
end
else continue
end
A(i,s)=-A(i,s)/A(s,s);
end
for k=1:n
if k<s
A(s,k)=A(s,k)/A(s,s);
end
if k==s
A(s,k)=1/A(s,s);
end
if k>s
A(s,k)=A(s,k)*A(s,s);
end
end
s=s+1;
end
P
A
for i=n:(-1):1
if P(i)~=0
p=P(i);
d=A(:,i);
A(:,i)=A(:,p);
A(:,p)=d;
else continue
end
end
A

请教一下这个M文件的主要思路(我看不懂···)以及加上主要语句的注释~~
展开
 我来答
语大热K
推荐于2017-09-12 · TA获得超过1.3万个赞
知道小有建树答主
回答量:1494
采纳率:0%
帮助的人:1795万
展开全部
程序如下
function x=gauss(A,b) %高斯求解方程组
%x=gauss(A,b)
n=length(A);
a=[A,b];
for k=1:n-1
maxa=max(abs(a(k:n,k)));
if maxa==0
return;
end
for i=k:n
if abs(a(i,k))==maxa
y=a(i,k:n+1);a(i,k:n+1)=a(k,k:n+1);a(k,k:n+1)=y;
break;
end
end
for i=k+1:n
l(i,k)=a(i,k)/a(k,k);
a(i,k+1:n+1)=a(i,k+1:n+1)-l(i,k).*a(k,k+1:n+1);
end
end
%回代
if a(n,n)==0
return
end
x(n)=a(n,n+1)/a(n,n);
for i=n-1:-1:1
x(i)=(a(i,n+1)-sum(a(i,i+1:n).*x(i+1:n)))/a(i,i);
end
调用示例如下:
A=[2,-1,3;4,2,5;1,2,0];
b=[1;4;7];
x=gauss(A,b)
x =
9 -1 -6
百度网友4327fcbb9b
推荐于2017-10-04 · 知道合伙人教育行家
百度网友4327fcbb9b
知道合伙人教育行家
采纳数:26422 获赞数:292079
从师范学校毕业后一直在现在单位工作

向TA提问 私信TA
展开全部
matlab 用列主元高斯消去法求逆矩阵:
a=input('请输入线性方程组的系数矩阵'); b=input('请输入线性方程组的右端列向量'); [Row,Col]=size(a); if Row ~= Col

'线性方程组的系数矩阵非方阵,程序终止'
return
end
if det(a)==0
'线性方程组的系数矩阵行列式为0'
return
end
%Gauss消元法 for k=1:n-1
if a (k,k) ==0
'对角线元素a(%1d,%1d)为零,程序终止'
return
end
for i =k+1:n
l(i,k) = a(i,k)/a(k,k);
for j=k+1:n
a(i,j)=a(i,j)-l(i,j)*a(k,j);
end
b(i)=b(i)-l(i,k)*b(k);
end
end
%回代过程 if a(n,n)==0
'对角线元素a(%1d,%1d)为零,程序终止'
return
end
x(n)=b(n)/a(n,n);
'线性方程组解为' x(n)
for i = n-1:-1:1
x(i)=b(i);
for j=k+1:n
x(i)= x(i)-a(i,j)*x(j);
end
x(i)=x(i)/a(i,i);
x(i)
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ahu250
2010-09-01 · 超过27用户采纳过TA的回答
知道答主
回答量:94
采纳率:0%
帮助的人:31.8万
展开全部
建议楼主先弄明白高斯法求逆的思路,再回过来看这个程序,应该问题不大
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秒懂百科精选
高粉答主

2020-12-18 · 每个回答都超有意思的
知道答主
回答量:60.8万
采纳率:14%
帮助的人:3.2亿
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式