高斯消元法(matlab)

这篇具有很好参考价值的文章主要介绍了高斯消元法(matlab)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

高斯部分主元消元法

高斯列主元消元法


 高斯部分主元消去法:

原理:将线性方程组的系数即为矩阵A(n,n),对应的值即为 B(n,1),记增广矩阵C为(A,B);

第一步:找出系数中绝对值最大的元素,将其交换到C(1,1),通过线性运算,使得第一列C(1,1)下面的元素都消为0;

第二步:找出除第一行第一列元素,系数中绝对值最大的元素,将其交换到C(2,2),通过线性运算,使得第二列C(2,2)下面的元素全部消为0;并以此类推,得到一个上三角矩阵;

注意:在高斯全主元消元时,可能交换了列,再得到上三角后,需要将列交换回来;

例:

高斯消元法matlab,matlab,线性代数,开发语言

%高斯主元消去法
clc;
clear;
close all;
A=[1 2 3;5 4 10;3 -0.1 1];%输入矩阵系数
B=[1;0;2];
C=[A B];
[m,n]=size(C); %计算出增广矩阵的行数和列数
%找主元->消去—>找主元->消去
%高斯主元消元法会更改列数,需要记录下来,消元完毕后再改回来;
%生成一个行向量r来记录列数的更改;
r=1:m
H=m;L=n;
for q=1:m-1
 %找出主元
 max=0;   
for i=q:H
    for j=q:L-1
     if(abs(C(i,j))>max)
         max=abs(C(i,j));
         a=i;
         b=j;%利用a,b来记录最大值的位置,方便后续的交换位置;
       
     end
    end
    
end

%将主元换至第q行第q列
C([q,a],:)=C([a,q],:);%交换第q行和最大值所在的第a行
C(:,[q,b])=C(:,[b,q]);%交换第q列和最大值所在的第b列
%r记录列的更换
r(:,[q,b])=r(:,[b,q]);%交换第q列和最大值所在的第b列
disp(C(q,q));
disp(C);
%消元过程,消去主元下面一列
for k=q+1:m
   temp=C(q,q)/C(k,q);
   for d=1:n
  C(k,d)=temp*C(k,d)-C(q,d);
    end
end
disp(C);
end
disp(r(2));

%反带回方程式
x=zeros(1,m)%生成1行m列的0矩阵
for s=m:-1:1;
    x(s)=C(s,n);
    for t=1:m-s;
     x(s)=x(s)-C(s,n-t)*x(m+1-t);
     %disp(C(s,n-t));
    end
    x(s)=x(s)/C(s,s);
end
%将更换的列更改回来,按照r给定的顺序重新排列
for l=1:m
 X(r(l))=x(l); 
end
disp(X);
    

 运行结果:

高斯消元法matlab,matlab,线性代数,开发语言

 可以解得:x1=1.200 x2=2.00 x3=-1.40

高斯列主元消元法:

原理:将线性方程组的系数即为矩阵A(n,n),对应的值即为 B(n,1),记增广矩阵C为(A,B);

 第一步:找出第一列绝对值最大的元素,将其换到C(1,1),通过线性运算使得第一列C(1,1)下所有元素都消为0; 

第二步:找出第二列绝对值最大的元素,将其换到C(2,2),通过线性运算使得第一列C(2,2)下所有元素都消为0;并以此类推:

例:

高斯消元法matlab,matlab,线性代数,开发语言

%高斯列主元消元法
clc;
clear;
close all;
A=[1/4 1/5 1/6;1/3 1/4 1/5;1/2 1 2];%输入矩阵系数
B=[9;8;8];

C=[A B];
[m,n]=size(C); %计算出增广矩阵的行数和列数
H=m;L=n;

%找出第一列中最大元素->消元—>找出第二列中最大元素—>消元...


    for i=1:n-2%第i列
        max=0;
        for j=i:m%第j行
            if(abs(C(j,i))>max)
                max=abs(C(j,i));
                a=i;%记录i列中最大在第a列
                b=j;%记录i列中最大在第b行
            end
        end
        disp(max);
    %找到一列中最大元素后,交换位置
 C([i,b],:)=C([b,i],:);%交换第i行和最大值所在的第b行使得列最大元素在C(i,i);
disp(C);
%消元
for k=i+1:m
    temp=C(i,i)/C( k,i)
  for d=1:n
  C(k,d)=temp*C(k,d)-C(i,d);
    end
end  
disp(C);
    end
 
    %反带回方程
x=zeros(1,m)%生成1行m列的0矩阵   
x=zeros(1,m)%生成1行m列的0矩阵
for s=m:-1:1;
    x(s)=C(s,n);
    for t=1:m-s;
     x(s)=x(s)-C(s,n-t)*x(m+1-t);
     %disp(C(s,n-t));
    end
    x(s)=x(s)/C(s,s);
end
disp(x);

 运行结果:

高斯消元法matlab,matlab,线性代数,开发语言

 x1=-227.0769 x2=476.9231 x3=-177.6923文章来源地址https://www.toymoban.com/news/detail-735454.html

到了这里,关于高斯消元法(matlab)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 高斯消元法(matlab)

    目录 高斯部分主元消元法 高斯列主元消元法  高斯部分主元消去法: 原理:将线性方程组的系数即为矩阵A(n,n),对应的值即为 B(n,1),记增广矩阵C为(A,B); 第一步:找出系数中绝对值最大的元素,将其交换到C(1,1),通过线性运算,使得第一列C(1,1)下面的元素都消为0; 第二步

    2024年02月06日
    浏览(43)
  • 高斯列主消元法 求非齐次线性方程组 C语言实现代码

    高斯列主元素消去法是由高斯消去法改进的算法 下面浅浅分享一下本人对该方法的理解 Ax = b 先说高斯消去法,感觉基本的思路就跟我们手算非齐次线性方程组差不多,在线性代数中,我们求解方程组都是这种思路,消元的过程相当于是,由系数矩阵A和非齐次项b得到的增广

    2024年02月05日
    浏览(43)
  • MATLAB数值分析学习笔记:线性代数方程组的求解和高斯-赛德尔方法

    迭代法是前面介绍的消元法的有效替代,线性代数方程组常用的迭代法有 高斯-赛德尔方法 和 雅克比迭代法, 下面会讲到二者的不同之处,大家会发现两者的实现原理其实类似,只是方法不同,本篇只重点介绍高斯-赛德尔方法。 看了我之前的笔记的同学应该已经对迭代法不

    2024年02月05日
    浏览(60)
  • 线性代数笔记2--矩阵消元

    0. 简介 矩阵消元 1. 消元过程 实例方程组 { x + 2 y + z = 2 3 x + 8 y + z = 12 4 y + z = 2 begin{cases} x+2y+z=2\\\\ 3x+8y+z=12\\\\ 4y+z=2 end{cases} ⎩ ⎨ ⎧ ​ x + 2 y + z = 2 3 x + 8 y + z = 12 4 y + z = 2 ​ 矩阵化 A = [ 1 2 1 3 8 1 0 4 1 ] X = [ x y z ] A= begin{bmatrix} 1 2 1 \\\\ 3 8 1 \\\\ 0 4 1 end{bmatrix} \\\\ X= begin{bmatrix} x\\\\

    2024年02月22日
    浏览(44)
  • 列主高斯消元法

    看过我前几个博文的小伙伴们,细心的小伙伴会发现我前面讲过一个 高斯消元法 ,那么和接下来讲的列主高斯消去法有什么区别呢?? 目录 一、前言 二、列主高斯消元法 1.数学计算过程 三、代码实现过程 1、源代码展示(这次没有采用高斯消元法中校园的时候,进阶的列

    2024年01月22日
    浏览(51)
  • C语言用高斯消元法求行列式

    目录 数学原理 选择主元 程序设计 整体流程与代码 测试函数 测试结果 高斯消元法求行列式:利用初等行变换,化为上三角行列式,求其主对角线的乘积 行列式的初等行变换: 1)换行变换:交换两行(行列式需变号) 2)倍法变换:将行列式的某一行(列)的所有元素同乘

    2024年02月08日
    浏览(43)
  • [数论第三节]高斯消元法/求组合数/卡特兰数

    求解含有n个未知数,n个方程的多元线性方程组 O(n^3) 初等行变换: 某行乘以一个非零数 交换两行 某行加上另一行的若干倍 利用初等行变换将方程组化为上三角矩阵 解的情况: 完美阶梯型:唯一解 非完美阶梯型: 0 == 非0:无解 0 == 0:无穷解 步骤: 枚举每一列 找到这一列

    2024年02月13日
    浏览(36)
  • matlab线性代数常用函数

    矩阵 A mathbf{A} A 行列式 det(A) 矩阵 A mathbf{A} A 的迹 trace(A) 矩阵 A mathbf{A} A 的秩 rank(A) 矩阵 A mathbf{A} A 的范数 norm(A) 矩阵 A mathbf{A} A 的特征多项式 poly(A) 这是数值法求解,解析法可以用 charppoly ,新版本方法可能有改变 矩阵 A mathbf{A} A 的多项式求值 poly(a,A) ,a是多项式系数的

    2024年02月07日
    浏览(57)
  • matlab 入门(三)线性代数

    在MATLAB中,用“A^n”来计算矩阵A的n次方, 用“sqrtm”函数来计算矩阵的开方 (sqrtm(A)求的是满足X*X=A的矩阵X。) 矩阵对数运算与矩阵指数运算互为逆运算, 可以分别用函数expm和logm来实现。 Expm: 以e为底对矩阵求指数,并不是对每个元素求指数,对每个元素求指数的指令是ex

    2024年01月19日
    浏览(46)
  • 【算法小记】——机器学习中的概率论和线性代数,附线性回归matlab例程

    内容包含笔者个人理解,如果错误欢迎评论私信告诉我 线性回归matlab部分参考了up主DR_CAN博士的课程 在回归拟合数据时,根据拟合对象,可以把分类问题视为一种简答的逻辑回归。在逻辑回归中算法不去拟合一段数据而是判断输入的数据是哪一个种类。有很多算法既可以实现

    2024年01月24日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包