matlab的函数和运行后的样子,但是还是和书上的不一样,X = 10.0000 1.0000 应该在后面,怎么回事?
%用按比例主元消去法解线性方程组Ax=b%RA,RB分别表示系数矩阵A和增广矩阵B的秩%N表示向量b的维数,X是解向量function[RA,RB,N,X]=Ratio(...
%用按比例主元消去法解线性方程组Ax=b
%RA,RB分别表示系数矩阵A和增广矩阵B的秩
%N表示向量b的维数,X是解向量
function[RA,RB,N,X]=Ratio(A,b)
B=[A b];
N=length(b);
RA=rank(A);
RB=rank(B);
RDiff=RB-RA;
if RDiff>0
disp('因为RA~=RB,所以此方程组无解.')
return
end
if RA==RB
if RA==N
disp('因为RA=RB=n,所以此方程组有唯一解.')
X=zeros(N,1);
C=zeros(1,N+1);
T=0;
D=B';
s=max(abs(D(1:N,:)));
S=s';
for i=1:N-1
[Y k]=max((abs(B(i:N,i)))./S(i:N));
K=min(k);
C=B(i,:);
B(i,:)=B(K+i-1,:);
B(K+i-1,:)=C;
T=S(i);
S(i)=S(K+i-1);
S(K+i-1)=T;
for j=i+1:N
m=B(j,i)/B(i,i);
B(j,i:N+1)=B(k,i:N+1)-m*B(i,i:N+1);
end
end
b=B(1:N,N+1);
A=B(1:N,1:N);
X(N)=b(N)/A(N,N);
for i=N-1:-1:1
X(i)=(b(i)-sum(A(i,i+1:N)*X(i+1:N)))/A(i,i);
end
else
disp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')
end
X=X'
end
老师说是和书上的缩进不同,但是我又找不出来。。。 展开
%RA,RB分别表示系数矩阵A和增广矩阵B的秩
%N表示向量b的维数,X是解向量
function[RA,RB,N,X]=Ratio(A,b)
B=[A b];
N=length(b);
RA=rank(A);
RB=rank(B);
RDiff=RB-RA;
if RDiff>0
disp('因为RA~=RB,所以此方程组无解.')
return
end
if RA==RB
if RA==N
disp('因为RA=RB=n,所以此方程组有唯一解.')
X=zeros(N,1);
C=zeros(1,N+1);
T=0;
D=B';
s=max(abs(D(1:N,:)));
S=s';
for i=1:N-1
[Y k]=max((abs(B(i:N,i)))./S(i:N));
K=min(k);
C=B(i,:);
B(i,:)=B(K+i-1,:);
B(K+i-1,:)=C;
T=S(i);
S(i)=S(K+i-1);
S(K+i-1)=T;
for j=i+1:N
m=B(j,i)/B(i,i);
B(j,i:N+1)=B(k,i:N+1)-m*B(i,i:N+1);
end
end
b=B(1:N,N+1);
A=B(1:N,1:N);
X(N)=b(N)/A(N,N);
for i=N-1:-1:1
X(i)=(b(i)-sum(A(i,i+1:N)*X(i+1:N)))/A(i,i);
end
else
disp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')
end
X=X'
end
老师说是和书上的缩进不同,但是我又找不出来。。。 展开
1个回答
展开全部
function[RA,RB,N,X]=Ratio(A,b)
%用按比例主元消去法解线性方程组Ax=b
%RA,RB分别表示系数矩阵A和增广矩阵B的秩
%N表示向量b的长度,X是解向量
%{
试验用
A=[1 3 5;3 6 9;5 9 3];b=[6 19 35]';
[RA,RB,N,X]=Ratio(A,b)
A=[1 2 3;4 5 6;7 8 9];b=[6 19 35]';
[RA,RB,N,X]=Ratio(A,b)
%}
B=[A b];
N=length(b);
RA=rank(A);
RB=rank(B);
RDiff=RB-RA;
if RDiff>0
disp('因为RA~=RB,所以此方程组无解.')
return
elseif RA==RB
if RA==N
disp('因为RA=RB=n,所以此方程组有唯一解.')
X=zeros(N,1);
%C=zeros(1,N+1);
%T=0;
D=B';
s=max(abs(D(1:N,:)));
S=s';
for i=1:N-1
[~, k]=max((abs(B(i:N,i)))./S(i:N));
K=min(k);
C=B(i,:);
B(i,:)=B(K+i-1,:);
B(K+i-1,:)=C;
T=S(i);
S(i)=S(K+i-1);
S(K+i-1)=T;
for j=i+1:N
m=B(j,i)/B(i,i);
B(j,i:N+1)=B(k,i:N+1)-m*B(i,i:N+1);
end
end
b=B(1:N,N+1);
A=B(1:N,1:N);
X(N)=b(N)/A(N,N);
for i=N-1:-1:1
X(i)=(b(i)-sum(A(i,i+1:N)*X(i+1:N)))/A(i,i);
end
else
disp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')
end
X=X';
end
%用按比例主元消去法解线性方程组Ax=b
%RA,RB分别表示系数矩阵A和增广矩阵B的秩
%N表示向量b的长度,X是解向量
%{
试验用
A=[1 3 5;3 6 9;5 9 3];b=[6 19 35]';
[RA,RB,N,X]=Ratio(A,b)
A=[1 2 3;4 5 6;7 8 9];b=[6 19 35]';
[RA,RB,N,X]=Ratio(A,b)
%}
B=[A b];
N=length(b);
RA=rank(A);
RB=rank(B);
RDiff=RB-RA;
if RDiff>0
disp('因为RA~=RB,所以此方程组无解.')
return
elseif RA==RB
if RA==N
disp('因为RA=RB=n,所以此方程组有唯一解.')
X=zeros(N,1);
%C=zeros(1,N+1);
%T=0;
D=B';
s=max(abs(D(1:N,:)));
S=s';
for i=1:N-1
[~, k]=max((abs(B(i:N,i)))./S(i:N));
K=min(k);
C=B(i,:);
B(i,:)=B(K+i-1,:);
B(K+i-1,:)=C;
T=S(i);
S(i)=S(K+i-1);
S(K+i-1)=T;
for j=i+1:N
m=B(j,i)/B(i,i);
B(j,i:N+1)=B(k,i:N+1)-m*B(i,i:N+1);
end
end
b=B(1:N,N+1);
A=B(1:N,1:N);
X(N)=b(N)/A(N,N);
for i=N-1:-1:1
X(i)=(b(i)-sum(A(i,i+1:N)*X(i+1:N)))/A(i,i);
end
else
disp('请注意:因为RA=RB<n,所以此方程组有无穷多解.')
end
X=X';
end
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询