MATLAB-线性方程组求解

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

线性方程组是线性代数中的重要内容之一,其理论发展的最为完善。MATLAB中包含多种处理线性方程组的命令,下面进行详细介绍。

对于形如AX=B的方程组来说,假设其系数矩阵A是m×n的矩阵,根据其维数可以将方程组分以下3种情况。

1)若m=n,则为恰定方程组,即方程数等于未知量数。

2)若m>n,则为超定方程组,即方程数大于未知量数。

3)若m<n,则为欠定方程组,即方程数小于未知量数。

线性方程组解的类型也可以分为以下3种情况。

1)若rank(A)= rank( [ A | B])≥n,则方程组有唯一解。

2)若rank( A)= rank([A| B])<n,则方程组有无穷解。

3)若rank(A )≠rank([A|B]),则方程组无解。

不难看出,线性方程组解的类型是由对应齐次方程组的解、对应系数矩阵和增广矩阵间的关系共同决定的。

非齐次线性方程组AX=B解的形式可以描述如下。

1)使用null 函数求解对应非齐次线性方程组AX=B对应的齐次方程组AX=0的基础解系,也可以称为通解,则AX=B的解都可以通过通解的线性组合表示。

2)求解非齐次线性方程组AX=B的特解。

3)最后求得非齐次线性方程组AX=B解的形式为通解的线性组合加上特解。下面介绍 MATLAB中求解线形方程组的方法。

除法求解方法

若线性方程组AX=B的系数矩阵可逆,则A \B给出方程组的唯一解。

例1:使用除法求解系数矩阵可逆的恰定线性方程组。

在命令行窗口中输入如下语句。

>>A=pascal(4) %A为四阶可道矩阵

det_A =det(A) %计算矩阵A的行列式

B= rand(4,1) %随机生成4行1列的矩阵B

X1=A\B %求出方程唯一解

X2 =in(A) *B %A\B等价于inv(A)*B

命令行窗口中的输出结果如下。

A=

1 1 1 1

1 2 3 4

1 3 6 10

1 4 10 20

det_A=

1.000

B=

0.8147

0.9058

0.1270

0.9134

X1=

-2.5813

9.1360

-8.1751

2.4351

X2=

-2.5813

9.1360

-8.1751

2.4351

若线性方程组AX=B的系数矩阵不可逆,则方程组的解不存在或者不唯一。此时执行A\B,则 MATLAB会显示提示信息,表示该矩阵是奇异矩阵,无法得到精确的数值解。

例2:使用除法求解欠定线性方程组。

在命令行窗口中输入如下语句。

>>C= magic(4);

A=C(2;4,:)

B=[ 0;1;0];

X=A\B

命令行窗口中的输出结果如下所示。

A=

5 11 10 8

9 7 6 12

4 14 15 1

X=

0.2475

-0.0662

0

-0. 0637

例3:使用除法求解超定线性方程组。在命令行窗口中输入如下语句。

>>T=magie(5)

A=T(:,2:5)

B=[0;0;1 ;0;0];

X=AIB

命令行窗口中的输出结果如下所示。

T=

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

A=

24 1 8 15

5 7 14 16

6 13 20 22

12 19 21 3

18 25 2 9

X=

-0.0222

0. 0060

0.0034

0.0303

求逆求解方法

例1中,已经介绍了通过求逆的方法求解线性方程组的解,这里着重介绍利用伪逆方法求解。对于方程组而言,其系数矩阵可能是方阵但不可逆,也可能不是方阵,无论上述两种情况的哪一种都将导致它的逆不存在或无意义,此时就需要引入伪逆的概念。

伪逆矩阵包含很多种形式(具体情况请参考矩阵的有关书籍),下面介绍最常用的基于

最小二乘的最优伪逆。MATLAB使用pinv函数来实现,即可以使用矩阵A的伪逆矩阵pinv(A)来得到方程的一个解,其对应的数值解为pinv( A) * B。

例4使用伪逆矩阵的方法求解奇异矩阵线性方程组的解。

在命令行窗口中输人如下语句。

>>A=[ 1 5 8;-135;174];

B=[3;6;9];

X= pinv(A)* B

C=A*X

命令行窗口中的输出结果如下所示。

X=

-2.6897

1. 9655

-0. 5172

C=

3.0000

6.0000

9. 0000

从例题中的输出结果可以看出,通过使用伪逆矩阵的方法可以求解得到数值解,同时该数值解可以精确地满足预期结果。

上面的例子都是介绍如何计算特解,下面介绍如何计算线性方程组的所有解。

例5使用求逆法计算线性方程组的所有解。

在命令行窗口中输入如下语句。

>>A=[1 3 5 7;2 4 6 8;9 10 11 12];

B=[1;2;3];

X1=null(A)

X2 = pinv(A)*B

命令行窗口中的输出结果如下所示。

X1=

0.5336 -0.1237

-0.6193 0.5626

-0.3622 -0.7542

0.4479 0.3153

X2=

0.0344

0.0579

0.0814

0.1049

此时线性方程组的所有解为X=a×X1( :,1 )+b×X2 ,( :,2)+X2,其中a、b为任意实数。文章来源地址https://www.toymoban.com/news/detail-415675.html

到了这里,关于MATLAB-线性方程组求解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • MATLAB数值分析学习笔记:线性代数方程组的求解和高斯消元法

    工程和科学计算的许多基本方程都是建立在守恒定律的基础之上的,比如质量守恒等,在数学上,可以建立起形如 [A]{x}={b} 的平衡方程。其中{x}表示各个分量在平衡时的取值,它们表示系统的 状态 或 响应; 右端向量{b}由无关系统性态的常数组成通常表示为 外部激励。 矩阵

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

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

    2024年02月05日
    浏览(60)
  • 数值分析·学习 | 解线性方程组的直接方法(高斯消去法以及LU求解)matlab实现

    目录 一、前言: 二、算法描述: 三、实现代码: 1、高斯消去法: 2、高斯消去法-列主元消去法: 3、LU分解: 4、求逆矩阵: 四、总结: 个人学习内容分享 1、高斯消去法:         设有线性方程组         或写为矩阵形式

    2024年02月05日
    浏览(80)
  • 线性方程组的求解

    克莱姆法则 求解线性方程组有一种比较简单易行的方法就是用克莱姆法则 通过行列式的计算 以解出方程,下面给出行列式解方程的代码并分析优缺点; 对于一个n元一次方程组,如果可以将其化为n阶行列式就能使用克莱姆法则;例如: 有 D=    用(b1,b2,...bn)T替换D的第一列

    2024年02月05日
    浏览(41)
  • Matlab中求解线性方程组——高斯消元法、LU分解法、QR分解法、SVD分解法、迭代法等

    MATLAB迭代的三种方式以及相关案例举例 MATLAB矩阵的分解函数与案例举例 MATLAB当中线性方程组、不定方程组、奇异方程组、超定方程组的介绍 MATLAB语句实现方阵性质的验证 MATLAB绘图函数的相关介绍——海底测量、二维与三维图形绘制 MATLAB求函数极限的简单介绍 文章目录 前言

    2024年02月08日
    浏览(66)
  • 数值分析——线性方程组求解

    清理磁盘的时候偶然发现大二下数值分析的实验作业还在,本着在丢弃之前可以放在网上以备不时之需的原则,我便发了上来。 分别用直接法、Jacobi迭代法、Gauss-Seidel迭代法求解下列线性方程组AX = b,其中A为五对角矩阵(n=20),b是除第一个分量是1外,其他分量都是0的列向量

    2024年02月05日
    浏览(43)
  • 线性代数代码实现(七)求解线性方程组(C++)

    前言:         上次博客,我写了一篇关于定义矩阵除法并且代码的文章。矩阵除法或许用处不大,不过在那一篇文章中,我认为比较好的一点是告诉了大家一种计算方法,即:若矩阵  已知且可逆,矩阵  已知,并且  ,求解矩阵 B 。我认为这种初等行变换的方法还是挺

    2023年04月23日
    浏览(48)
  • matlab求解方程和多元函数方程组

    核心函数solve 一般形式 S=solve(eqns,vars,Name,Value) ,其中: eqns是需要求解的方程组; vars是需要求解的变量; Name-Value对用于指定求解的属性(一般用不到); S是结果,对应于vars中变量; 单个方程求解 方程:sin(x)=1 代码: 结果: 说明: MATLAB定义方程用的是 == 符号,就是这样

    2024年02月08日
    浏览(44)
  • 【算法竞赛模板】求解线性方程组是否有解(求解矩阵的秩)

        在实际运用中需判断线性方程组有无解,可以通过矩阵运算判断线性方程组是否有解 线性方程组有无解总结: 矩阵求解秩流程:    所以:当我们遇到题目问线性方程组是否有解时,只需求解系数矩阵的秩与增广矩阵的秩的关系 。我们可以通过分别求系数矩阵与增

    2024年02月12日
    浏览(39)
  • MATLAB:方程组的求解

    综合实例应用:方程组的求解 无论工程应用问题,还是数学计算问题,方程组都是解决问题转化的重要途径之一,将复杂问题转化为简单的方程组矩阵求解问题。 利用矩阵分解来求解线性方程组,是工程计算中最常用的计算。 LU分解法是先将系数矩阵A进行LU分解,得到LU=P

    2024年01月19日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包