【计算方法笔记】列高斯消元法解线性方程组

来源:互联网 发布:下载切换mp3软件 编辑:程序博客网 时间:2024/06/05 07:02


针对齐次方程组

解线性方程组AX=b
采用高斯列主元方法为:

k=1:n-1时

  • 选主元,并判断主元是否在精度内,不在则输出无解
  • 换行
  • 消元

k=n时

  • 判断A(n,n)是否为0,为0则无法迭代输出无解 不为0则回代求解

重点理解矩阵的乘法

%高斯消元法%列主元素消元法,主元的选择是在对角线元素所在列的行下面选择%注意b和解的向量都是列向量,同时矩阵的乘法就是线性方程组的表示方法clear;A=[1,2,1,-2;2,5,3,-2;-2,-2,3,5;1,3,2,5];b=[-1;3;15;9];[n,cl]=size(A);x=zeros(n,1);for k=1:n-1    [prime,maxk]=max(abs(A(k:n,k)));%在第k列在对角元包括对角元下面寻找主元    maxk=maxk+k-1;    if prime<=eps        disp('无解!!!');%结束    else        %换行        temp=A(k,1:cl);        A(k,1:cl)=A(maxk,1:cl);        A(maxk,1:cl)=temp;        temp1=b(k);        b(k)=b(maxk);        b(maxk)=temp1;        clear temp1,temp;        %消元分系数矩阵A和b消元,从第k+1行开始计算        b(k+1:n,1)=b(k+1:n,1)-A(k+1:n,k)/A(k,k)*b(k,1);           A(k+1:n,1:cl)=A(k+1:n,1:cl)-(A(k+1:n,k)/A(k,k))*A(k,1:cl);         endendif(k+1==n)    if abs(A(k,k))<=eps        disp('无解!!!');    else        %回代求解        x(n,1)=b(n,1)/A(n,n);        for i=n-1:-1:1            x(i,1)=(b(i,1)-A(i,i+1:n)*x(i+1:n,1))/A(i,i);        end        disp(x);    endend        
原创粉丝点击