matlab全主元法解方程组,MATLAB 列主元消去法 解方程组

clear

% creat all input variable

disp('(1)中为A1 (2)中为A2');

A1 = [3.01,6.03,1.99;

1.27,4.16,-1.23;

0.987,-4.81,9.34];

A2 = A1;

A2(1,1) = 3.00;

A2(3,1) = 0.990;

b = [1,1,1]';

% display

disp('MAT A1 is ');

disp(A1);

disp('MAT A2 is ');

disp(A2);

disp('MAT b is ');

disp(b);

disp('detA1 is ');

disp(det(A1));

disp('detA2 is ');

disp(det(A2));

disp('cond(A1,1) is ');

disp(cond(A1,1));

disp('cond(A1,2) is ');

disp(cond(A1,2));

disp('cond(A1,inf) is ');

disp(cond(A1,inf));

%列主元消去法

disp('在(1)中的情况:');

A = A1;

B = [A,b];

n = length(b);

rankA=rank(A);

rankB=rank(B);

if rankB-rankA>0

disp('此方程组无解.\n')

end

if rankA==rankB

if rankA==n

fprintf('rankA=rankB=%d,有唯一解.\n',n)

X=zeros(n,1);

for p=1:n-1

t=find(abs(B(p:end,p))==max(abs(B(p:end,p))))+p-1;

if abs(B(t,p))~=abs(B(p,p))

l=B(t,:);

B(t,:)=B(p,:);

B(p,:)=l;

end %列主元判断

for k=p+1:n

m= B(k,p)/ B(p,p);

B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);

end

end

%把方程组系数矩阵A化为同解的上三角矩阵

b=B(1:n,n+1);

A=B(1:n,1:n);

X(n)=b(n)/A(n,n);

for q=n-1:-1:1

X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);

end

%从xn至x1逐个求解上三角方程组

else

disp('rankA=rankB0

disp('此方程组无解.\n')

end

if rankA==rankB

if rankA==n

fprintf('rankA=rankB=%d,有唯一解.\n',n)

X=zeros(n,1);

for p=1:n-1

t=find(abs(B(p:end,p))==max(abs(B(p:end,p))))+p-1;

if abs(B(t,p))~=abs(B(p,p))

l=B(t,:);

B(t,:)=B(p,:);

B(p,:)=l;

end %列主元判断

for k=p+1:n

m= B(k,p)/ B(p,p);

B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);

end

end

%把方程组系数矩阵A化为同解的上三角矩阵

b=B(1:n,n+1);

A=B(1:n,1:n);

X(n)=b(n)/A(n,n);

for q=n-1:-1:1

X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q);

end

%从xn至x1逐个求解上三角方程组

else

disp('rankA=rankB

结果

>> Untitled

(1)中为A1 (2)中为A2

MAT A1 is

3.0100 6.0300 1.9900

1.2700 4.1600 -1.2300

0.9870 -4.8100 9.3400

MAT A2 is

3.0000 6.0300 1.9900

1.2700 4.1600 -1.2300

0.9900 -4.8100 9.3400

MAT b is

1

1

1

detA1 is

-0.0305

detA2 is

-0.4070

cond(A1,1) is

5.5228e+04

cond(A1,2) is

3.0697e+04

cond(A1,inf) is

5.6751e+04

在(1)中的情况:

rankA=rankB=3,有唯一解.

方程组的解为:

1.0e+03 *

1.5926

-0.6319

-0.4936

在(2)中的情况:

rankA=rankB=3,有唯一解.

方程组的解为:

56.3415

-22.1547

-17.3024

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值