2024-09-01
Matlab
00

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=rankB<n,有无穷多解.') return end end disp('方程组的解为:'); disp(X) %列主元消去法 disp('在(2)中的情况:'); A = A2; 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=rankB<n,有无穷多解.') return end end disp('方程组的解为:'); disp(X) %use matlib %disp('使用matlib直接求解'); %disp(A2\b);

结果

>> 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
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!