标签:
杂谈 |
用matlab实现高斯列主元消去法解线性方程及LU分解 function x=gaussLinearEquation(A,b) %高斯法解线性方程Ax=b disp('原方程为AX=b:') A b disp('------------------------') n=length(b); eps=10^-2; for k=1:n-1 end disp('消元后所得到的上三角阵是') A %回代 b(n)=b(n)/A(n,n); for i=n-1:-1:1 end clear x; x=b; disp('AX=b的解x是') x 用法: 在控制台输入: A=[1.003 0.333 1.504 -0.333; b=[ 3.005,5.407,0.136,3.772 ]'; 执行gaussLinearEquation(A,b);即可得到结果。
使用matlab实现矩阵的LU分解 function [L,U]=myLU(A) %实现对矩阵A的LU分解,L为下三角矩阵 A [n,n]=size(A); L=zeros(n,n); U=zeros(n,n); for i=1:n end for k=1:n end 用法,在控制台输入 A=[1 2 3 -4;-3 -4 -12 13;2 10 0 -3;4 14 9 -13]; 然后执行[l,u]=myLU(A); 这样得到l和u,可以通过l*u与A比较来验证LU分解的正确性。 注意: [L1,U1]=lu(x) [L2,U2,P]=lu(x) [L3,U3,P,Q] = lu(X) MATLAB中[L1,U1]=lu(x)的结果:L是下三角的置换矩阵即L1=p*L2,U是上三角阵。Matlab中LU分解采用高斯消元法,结果是不唯一的,只要[L1,U1]=lu(x)满足L1*U1=x, [L2,U2,P]=lu(x)满足L2*U2=p*x,[L3,U3,P,Q] = lu(X)满足 L3*U3= P*X*Q就行了。 |