线性方程组的求解主要有两种方法,分别是直接法和迭代法,本节也将围绕这两种方法去讲解一些matlab在求解线性方程组的相关知识。
一、线性方程组的直接解法
主要可以分为以下三种方法:
高斯( Gauss )消去法
列主元消去法
矩阵的三角分解法
高斯( Gauss )消去法是一个经典的直接法,由它改进得到的列主元消去法,是目前计算机上求解线性方程组的标准算法,其特点就是通过消元将一般线性方程组的求解问题转化为三角方程组的求解问题。此外,还有矩阵的三角分解法等许多直接求解算法 。
1、利用左除运算符的直接解法
MATLAB 提供了一个左除运算符“\” 用于求解线性方程组,它使用列主元消去法,使用起来十分方便。对于线性方程组 Ax=b ,可以利用左除运算符反斜杠求解,b左除以A可获得线性方程组的数值解x。
注:这里的A和b是矩阵形式,且A里面的系数写法要与未知数对应。
例、用左除运算符求解下列线性方程组 。

>>  A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
>> b=[13,-9,6,0]';
>>  x=A\b
x =-66.555625.6667-18.777826.5556

2、利用矩阵分解求解线性方程组
矩阵分解是设计算法的重要技巧,是指将一个给定的矩阵分解成若干个特殊类型矩阵的乘积 ,从而将一个一般的矩阵计算问题转化为几个易求的特殊矩阵的计算问题 。通过矩阵分解方法求解线性方程组的优点是运算速度快,可以节省存储空间 。
下面将主要去讲解矩阵分解中的LU分解:
(1) LU 分解的基本思想:
矩阵的 LU分解就是将一个n阶矩阵表示为一个下三角矩阵和一个上三角矩阵的乘积。线性代数中已经证明,只要方阵是非奇异的,LU 分解总是可以进行的。如下图

对于三角方程很容易求解,于是可以首先求解向量y使 Ly=b,再求解 Ux =y,从而达到求解线性方程组 Ax=b 的目的。
(2)matlab的LU分解函数
LU 分解函数是根据列主元LU分解算法定义的,具有较好的数据稳定性。 lu函数有两种调用格式:
[L,U]= lu (A) :产生一个上三角阵U和一个变换形式的下三角阵L,使之满足A=LU 。注意,这里的矩阵A必须是方阵。
[L,U,P]= lu (A) :产生一个上三角阵U和一个下三角阵L以及一个置换矩阵P,使之满足 PA=LU 。同样,矩阵A必须是方阵。
注:当使用第一种格式时,矩阵L往往不是一个下三角阵,但可以通过行交换成为一个下三角阵。
还是以上述的线性方程组为例:

>> A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
>> b=[13,-9,6,0]';
>> [L,U]=lu(A);
>>  x=U\(L\b)
x =-66.555625.6667-18.777826.5556
>> [L,U,P]=lu(A);
>> x=U\(L\P*b)
x =-66.555625.6667-18.777826.5556

一、 线性方程组的迭代解法
迭代法是一种不断用变量的原值推出它的新值的过程,是用计算机解决问题的一种基本方法 。如下面图片所示 介绍一种 线性方程组的迭代解法——雅可比(Jacobi)迭代法
对于线性方程组Ax=b,对于系数矩阵还是采取上述的矩阵分解的基本思想

求解公式为:x(k+1)=D(-1)*(L+U)*x(k)+D(-1)*b

matlab中没有雅可比(Jacobi)迭代法的内置函数,因此此种方法需要自己编程实现,网上也有很多的代码,大家可以去了解一下,下面是网上的一段雅可比(Jacobi)迭代法的代码编写

function [y,n]=jacobi(A,b,x0,ep)
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
B=D\(L+U);
f=D\b;
y=B*x0+f;
n=1;
while norm(y-x0)>=ep
x0=y;
y=B*x0+f;
n=n+1;
end

其中,A是系数阵,b是方程组右边的常数,x0是迭代的初始值,ep是精度,在matlab 中将这段代码写入一个function,调用结果如下(以下面的方程组为例):

>> format long
>> A=[4,-2,-1;-2,4,3;-1,-3,3];
>> b=[1,5,0]';
>> [x,n]=jacobi(A,b,[0,0,0]',1.0e-6)
x =0.9705884830911260.8529410399293801.176470992801838
n =35
>> [L,U]=lu(A);x=U\(L\b)x =0.9705882352941180.8529411764705881.176470588235294

可以看出两种方法算出来的结果,很是接近。
当然,除了此方法,还有很多的迭代方法去求解线性方程组,常见的有高斯- - 赛德尔( Gauss- - Serdel )迭代法,附上链接(https://blog.51cto.com/592669550/932010)
本节内容就到这里结束了,下节将推出非线性方程的求解,敬请期待!

关于MATLAB的学习:

大家可以关注我们的知乎专栏——数据可视化和数据分析中matlab的使用:
https://zhuanlan.zhihu.com/c_1131568134137692160

欢迎大家加入我们的MATLAB学习交流群:
953314432
扫码关注我们
发现更多精彩

matlab线性方程组求解相关推荐

  1. matlab解线性方程组后结果是小数,MATLAB线性方程组求解

    有唯一解线性方程组求法 对于一般的,有唯一解的线性方程组,我们可以转换成矩阵的形式: A x = b Ax=bAx=b 则可以用矩阵运算求解x,即x=A\b 有无穷解的线性方程组求法 齐次线性方程组的 ...

  2. [MATLAB]线性方程组求解(雅可比迭代和高斯迭代源码实现)

    本试验取材于中南大学<科学计算与MATLAB语言>. 直接解法 高斯消去法 列主元消去法 矩阵的三角分解法 (1)利用左除运算符的直接解法 Ax=b------>x=a\b 注意:如 ...

  3. matlab中欠定方程组超定方程组_一篇文章入门大规模线性方程组求解

    前面介绍过主要的线性方程组求解库,参考附录.求解大规模线性方程组是仿真软件求解器的底层技术,求解器时间基本都消耗在方程组求解上.线性方程组的解法比较成熟,方法也有很多,而且不同的方法对应不同类型方程组 ...

  4. 数值分析上机题matlab线性方程组,数值分析上机实验报告 - 线性方程组部分实验题1...

    s=A(i,(i+1):n)*x((i+1):n,1); else s=0; end x(i,1)=(b(i)-s)/A(i,i);end %Cholosky分解方法***************** ...

  5. matlab中predictor怎么填,在MATLAB中求解非線性有限元

    我嘗試在MATLAB中求解帶有節點熱源的四面體有限元的熱擴散問題,這個節點取決於解矢量.非線性方程系統如下:在MATLAB中求解非線性有限元 乙U」 + A U = Q(T) 與B是熱capactiy ...

  6. 22(线性方程组求解)高斯赛德尔迭代法

    高斯赛德尔迭代法(线性方程组求解) [问题描述]为求解一个线性方程组,使用高斯赛德尔迭代法,采用欧几里得距离判定是否收敛.精度delta为1E-9,最大迭代次数为20. [输入形式]在屏幕上依次输入方 ...

  7. 大规模线性方程组求解

    关于优化 1.大规模线性方程组求解 https://blog.tsingjyujing.com/game201/linear_eq_solver https://zhuanlan.zhihu.com/ ...

  8. 六、线性方程组求解--Jacobi和Gauss-Seidel迭代求解

    六.线性方程组求解-Gauss消去.Jacobi和Gauss-Seidel迭代求解 1.消去法求解原理 求解Ax = b,首先对增广矩阵(A|b)进行初等行变换为如下三种矩阵对角阵.上三角阵.下三角阵 ...

  9. 【生产优化】基于matlab遗传算法求解帐篷工序问题【含Matlab源码 2145期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [生产优化]基于matlab遗传算法求解帐篷工序问题[含Matlab源码 2145期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...

  10. 【GA MTSP】基于matlab遗传算法求解多旅行商问题(多且同始终点)【含Matlab源码 1339期】

    一.获取代码方式 获取代码方式1: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码. 获取代码方式2: 完整代码已上传我的资源:[MTSP]基于matlab遗传算法求解多旅行商问题[ ...

最新文章

  1. 洛谷P1119 灾后重建[Floyd]
  2. docker 训练深度学习_利用RGB图像训练MultiModality的深度学习模型进行图像分割
  3. phantomjsjava_Java利用Phantomjs实现生成图片的功能
  4. oracle的into的含义,请问在oracle 中select into是什么意思?
  5. WebAPi返回类型到底应该是什么才合适,这是个问题?
  6. 软件测试课程学习总结
  7. 找出连续最长数字串python_在字符串中找出连续最长的数字串 | 学步园
  8. BZOJ2754 [SCOI2012]喵星球上的点名
  9. C语言编程方法技巧,C语言编程小技巧分享
  10. 如何在数据库中添加示例数据库Northwind
  11. 图的广度优先搜索和深度优先搜索
  12. 从零学习Belief Propagation算法(三)
  13. Xcode:崩溃堆栈符号化,定位崩溃
  14. Android7.0+安装apk文件之后不弹出安装完成的界面解决办法
  15. Spring + SpringMVC + Hibernate + Shiro整合
  16. VMware下配置kali-linux-2019.2-vmware-amd64 压缩包
  17. 年化17.5%,十年8倍的“双低”转债策略:从零实现量化回测系统之三
  18. 计算机组成原理第四章例4.1,计算机组成原理第四章.ppt
  19. CSS基本语法_html-css
  20. 【第一届“文翁杯”现场竞技赛】T2 —蜀石经(优先队列模拟)

热门文章

  1. Gos —— 掌控硬盘
  2. This service allows sftp connections only
  3. 第六章:Reminders实验:第二部分[Learn Android Studio 汉化教程]
  4. WorldPress出现Briefly unavailable for scheduled maintenance. Check back in a minute.的解决方法
  5. “蔚来杯“2022牛客暑期多校训练营5 A题: Don‘t Starve
  6. 如何使用Joplin搭建私有笔记软件
  7. Python技术pip的使用命令总结
  8. 请问投稿中要求上传的author_投稿要求
  9. MOOC中国大学慕课C语言期末编程试题
  10. 11对战平台服务器维护,11对战平台无法进入游戏【解决方法】