MATLAB代码逐行解析:高斯消元法求解线性方程组
clear;清空工作区变量clc;清空命令窗口A=[10 -7 0 1 -3 2.099999 6 2 5 -1 5 -1 2 1 0 2];定义矩阵A,为4行4列的矩阵,值为给定的数值b=[8;5.900001;5;1];定义向量b,为4行1列的列向量,值为给定的数值[m,n]=size(A);获取矩阵A的行数和列数,分别赋值给m和nL=eye(n);定义单位下三角矩阵L,为n行n列的矩阵,对角线上的元素为1,其余为0U=zeros(n);定义上三角矩阵U,为n行n列的矩阵,所有元素为0flag='ok';定义字符串flag,赋值为'ok'for i=1:n U(1,i)=A(1,i); end将矩阵A的第1行复制到矩阵U的第1行for r=2:n L(r,1)=A(r,1)/U(1,1); end计算矩阵L的第2到n行第1列的元素,值为矩阵A对应位置的元素除以矩阵U第1行对应位置的元素for i=2:n for j=i:n z=L(i,1:i-1)*U(1:i-1,j); U(i,j)=A(i,j)-z; end if abs(U(i,i))<eps flag='failure' return; end for k=i+1:n m=L(k,1:i-1)*U(1:i-1,i); L(k,i)=(A(k,i)-m)/U(i,i); end end计算矩阵L和U的第2到n行和第2到n列的元素,通过高斯消元法计算 如果U的对角线元素小于eps,则将flag赋值为'failure',并退出循环L输出矩阵LU输出矩阵Uy=L\b;通过矩阵L和向量b计算y,即解方程Ly=bx=U\y通过矩阵U和向量y计算x,即解方程Ux=ydetA=det(L)*det(U)计算矩阵A的行列式,即det(A),等于矩阵L的行列式和矩阵U的行列式的乘积
原文地址: https://www.cveoy.top/t/topic/n1RO 著作权归作者所有。请勿转载和采集!