作业帮 > 综合 > 作业

Matlab错误求解A=[1 -1 1 -3; 0 -1 -1 1;2 -2 -4 6;1 -2 -41];b=[1;0

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/06/02 02:39:31
Matlab错误求解
A=[1 -1 1 -3; 0 -1 -1 1;2 -2 -4 6;1 -2 -41];
b=[1;0; -1;-1];
B=[A b];
n=length(b);
RA=rank(A);
RB=rank(B);
zhica=RB-RA;
if zhica~=0
disp('该问题无解')
return
end
if RA==RB
ifRA==n
disp('只有一个解')
X=zeros(n,1);
forp= 1:n-1
q=find(B(p:n,p)==max(abs((B(p:n,p)))))+p-1;% In B q's address is q+p-1
t=B(p,p:end);
B(p,p:end)=B(q(1),p:end);
B(q(1),p:end)=t;
for k=p+1:n
m= B(k,p)/ B(p,p);
B(k,p:end)= B(k,p:end)-m* B(p,p:end);
end
end
b=B(:,n+1);
A=B(:,1:n);
X(n)=b(n)/A(n,n);
for q=n-1:-1:1
X(q)=(b(q)-sum(A(q,q+1:end)*X(q+1:end)))/A(q,q);
end
X
else
disp('问题的解无穷大 ')
end
end
为什么无法运行.之前我用一个3阶的矩阵算可以
再试一下:
clc,clear
A=[1 -1 1 -3; 0 -1 -1 1;2 -2 -4 6;1 -2 -4 1];
b=[1;0; -1;-1];
B=[A b];
n=length(b);
RA=rank(A);
RB=rank(B);
zhica=RB-RA;
if zhica~=0
disp('该问题无解')
return
end
if RA==RB
if RA==n
disp('只有一个解')
X=zeros(n,1);
for p=1:n-1
%%下面这句有个小问题
q=find(B(p:n,p)-max(abs(B(p:n,p))))+p-1;% In B q's address is q+p-1
t=B(p,p:end);
B(p,p:end)=B(q(1),p:end);
B(q(1),p:end)=t;
for k=p+1:n
m= B(k,p)/ B(p,p);
B(k,p:end)= B(k,p:end)-m* B(p,p:end);
end
end
b=B(:,n+1);
A=B(:,1:n);
X(n)=b(n)/A(n,n);
for q=n-1:-1:1
X(q)=(b(q)-sum(A(q,q+1:end)*X(q+1:end)))/A(q,q);
end
X
else
disp('问题的解无穷大 ')
end
end
输出结果:
只有一个解
X =
0
-0.5000
0.5000
0