【数值计算方法】线性方程组的迭代解法

news/2025/3/12 10:00:38/文章来源:https://www.cnblogs.com/aksoam/p/18345515

目录
  • 第6章 线性方程组的迭代解法
    • 1. 范数和条件数
      • 1.1 向量和矩阵的范数
      • 1.2 条件数和扰动分析
    • 2. 基本迭代法
      • 2.1 迭代法基本思路
      • 2.2 雅可比迭代法
      • 2.3 高斯–赛德尔迭代法
      • 2.4 超松弛 (SOR) 迭代法

第6章 线性方程组的迭代解法

graph LR A[迭代法] --> B[定常迭代法] A --> C[不定常迭代法] B-->D[雅可比Jacobi迭代法] B-->E[高斯赛德尔Gauss-Seidel迭代法] B-->F[超松弛SOR迭代法] C-->G[共轭梯度法] C-->H[广义极小残量法]

1. 范数和条件数

线性方程组的解是一个向量 , 称为解向量. 近似解向量与精确解向量之差成为近似解的误差向量. 范数:衡量向量和矩阵大小的度量概念

1.1 向量和矩阵的范数

img

img

矩阵的 F 范数是向量 2 范数的直接推广 , 矩阵的 2 范数的计算是 \(A^T A\) 的谱半径的开方 , 所以又称为谱范数

对于矩阵A和向量x,如果满足:

\[\|Ax\|\leqslant\|A\|\cdot\|x\| \]

则称向量范数和矩阵范数相容.常用的范数相容关系有:

\[\begin{gathered} \|Ax\|_{1}\leqslant \|A\|_1\cdot\|x\|_1, \\ \|Ax\|_{\infty}\leqslant \|A\|_\infty\cdot\|x\|_\infty, \\ \|Ax\|_{2}\leqslant \|A\|_{2}\cdot\|x\|_{2}, \\ \|Ax\|_{2}\leqslant \|A\|_{F}\cdot\|x\|_{2}. \end{gathered}\]

1.2 条件数和扰动分析

对于线性方程组:

\[Ax=b \]

解向量x由A,x决定.当A,b受到微小扰动时,对解x的扰动不一定也是微小的.无论方程组中的系数矩阵 A 有扰动 , 还是右端 b 有扰动 , 解 x 的相对误差除了受相应扰动的相对误差以外 , 还与 \(||A||*||A^{-1}||\) 的大小有关

img

对于一个确定的线性方程组 , 若系数矩阵A的条件数相对地小 , 就称方程组是良态的 ,矩阵为良态矩阵 ; 反之 , 条件数相对地大 , 就称方程组病态 , 矩阵为病态矩阵.

使用稳定方法求病态方程组的解,结果可能很差.

img

2. 基本迭代法

2.1 迭代法基本思路

对于线性方程组:

\[Ax=b \]

其中,$A\in\mathbb{R}^{n\times n} \(,\)\boldsymbol{b}\in\mathbb{R}^n$ 已知,求解\(x\in\mathbb{R}^n\)

假定A以下分解,M为非奇异方阵:

\[A=M-N \]

则有以下关系:

\[Mx=Nx+b 或者 x=Bx+g \]

其中,\(B=M^{-1}N , g=M^{-1}b.\) 从而可以建立迭代公式:

\[x^{(k+1)}=Bx^{(k)}+g\tag{1} \]

给定初始向量 \(x^{(0)}\) ,进行迭代,就可以得向量序列 \({x^{(k)}}\) .若该序列收敛于一个确定的值 \(x^*\).则\(x^{*}=Bx^{*}+g\),也就是\(Ax^*=b\),\(x^*\)就是线性方程组的解.

初值\(x^{(0)}\)可以任意取,但一般取\(x^{(0)}=0\)\(x^{(0)}=b\).

判断是否收敛的标准:

计算出\(x^{k+1}\)后,计算\(error=\frac{||b-A*x^{k+1}||}{||b||}\) ,若\(error\)小于某个给定的阈值,则认为迭代收敛.

以上就是解线性方程组的基本迭代解法

在公式(1)中,为了避免B,g中的求逆计算 , 我们可以按如下方式进行迭代:

\[Mx^{(k+1)}=Nx^{(k)}+b.\tag{2} \]

只是,这就每次迭代就需要求解一个系数矩阵为 M 的线性方程组\(Mx^{(k+1)}=b'\).如果M矩阵具有特殊性质(对角阵,上三角阵等),这样的方程组易于求解.如:

\[A=D-L-U \]

分别是对角矩阵、严格下三角矩阵和严格上三角矩阵:

\[\begin{gathered} D=\mathrm{diag}(a_{11},a_{22},\cdots,a_{nn}), \\ \boldsymbol{L}=-\begin{pmatrix}0&0&\cdots&0\\a_{21}&0&\cdots&0\\\vdots&\ddots&\ddots&\vdots\\a_{n1}&a_{n2}&\cdots&0\end{pmatrix}, \\ \boldsymbol{U}=-\left(\begin{matrix}{0}&{{a_{12}}}&{\cdots}&{{a_{1n}}}\\{\vdots}&{\ddots}&{\ddots}&{\vdots}\\{0}&{\ddots}&{\ddots}&{{a_{n-1,n}}}\\{0}&{0}&{\cdots}&{0}\\\end{matrix}\right), \end{gathered}\]

下面介绍三种基本迭代解法:雅可比迭代法、高斯–赛德尔迭代法和SOR迭代法, 并对它们的适用性、收敛性质和收敛速度

2.2 雅可比迭代法

在公式(2)中,取\(M=D\),\(N=L+U\),就可以得到雅可比迭代法的迭代公式:

\[D\boldsymbol{x}^{(k+1)}=(\boldsymbol{L}+\boldsymbol{U})\boldsymbol{x}^{(k)}+\boldsymbol{b}.\tag{3} \]

img

2.3 高斯–赛德尔迭代法

高斯-赛德尔迭代法(简称GS迭代法)的迭代格式为:

\[Dx^{(k+1)}=Lx^{(k+1)}+Ux^{(k)}+b.\\(D-L)x^{(k+1)}=Ux^{(k)}+b. \]

img

2.4 超松弛 (SOR) 迭代法

GS 迭代格式可以改写成:

\[\begin{aligned}x^{(k+1)}&=D^{-1}(Lx^{(k+1)}+Ux^{(k)}+b)\\&=\boldsymbol{x}^{(k)}+\boldsymbol{D}^{-1}(\boldsymbol{L}\boldsymbol{x}^{(k+1)}+\boldsymbol{U}\boldsymbol{x}^{(k)}-\boldsymbol{D}\boldsymbol{x}^{(k)}+\boldsymbol{b}).\end{aligned} \]

为了加快迭代的收敛速度 , 将上式等号右端的第二项\(D^{-1}(Lx^{(k+1)}+Ux^{(k)}-Dx^{(k)}+b).\)看成是修正量,引入超松弛因子\(omega\) , 并将修正量乘上\(omega\) , 得到修正后的迭代格式:

\[x^{(k+1)}=\boldsymbol{x}^{(k)}+\omega\boldsymbol{D}^{-1}(\boldsymbol{L}\boldsymbol{x}^{(k+1)}+\boldsymbol{U}\boldsymbol{x}^{(k)}-\boldsymbol{D}\boldsymbol{x}^{(k)}+\boldsymbol{b}),\\x^{(k+1)}=(\boldsymbol{D}-\omega\boldsymbol{L})^{-1}[(1-\omega)\boldsymbol{D}+\omega\boldsymbol{U}]\boldsymbol{x}^{(k)}+\omega(\boldsymbol{D}-\omega\boldsymbol{L})^{-1}\boldsymbol{b}. \]

这就是逐次超松弛迭代法 , 简称SOR迭代法.

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/778808.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

帝国cms如何实现当前栏目高亮?

<ul class="clearfix"> <li><a href="[!--news.url--]" title="首页">首页</a></li> [e:loop={"select classid,classname from {$dbtbpre}enewsclass where bclassid=0 order by myorder,classid asc&quo…

Java-反应流教程-全-

Java 反应流教程(全)原文:Reactive Streams in Java 协议:CC BY-NC-SA 4.0一、反应流简介Reactive Streams 是一项倡议,旨在为无阻塞背压异步流处理提供标准。这包括针对运行时环境(JVM 和 JavaScript)以及网络协议的努力。 —reactive-streams.org反应式流的核心是努力为…

帝国cms怎么实现内容存文本

EmpireCMS内容存文本功能是针对大数据网站而设计的,如小说站、论文站等拥有信息内容数据占用较大的站点。如果再结合多表存放方式.每个表就是一个存放极限.N个表就是:存放极限*N,可达无限存放容量。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种…

帝国cms数据表删除之后怎么恢复正常

帝国cms数据表意外删除后,可通过以下方法恢复:1. 从备份中恢复;2. 使用数据恢复软件。恢复数据后,可使用sql语句、导入工具或手动方式将其还原到帝国cms数据库中。建议定期备份数据库以防数据丢失。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种C…

帝国CMS自定义页面动态设置

帝国CMS提供灵活的自定义页面功能,允许用户创建和管理动态内容页面。以下步骤介绍如何设置帝国CMS自定义页面动态: 1. 创建自定义页面 在帝国CMS管理后台,导航到"栏目">>"自定义页面">>"添加自定义页面"。输入页面标题和页面内容…

织梦dede怎么去除Power by DedeCms

有俩种方法: 1、 使用sql命令工具,在系统基本设置参数,下面有个“sql命令工具”在输入框中输入以下SQL语句, SQL语句:DELETE FROM dede_sysconfig WHERE varname = ”cfg_powerby” 即可删除系统的版权信息变量。 2、就是删除模板文件Dede/templets/default/中的footer.h…

织梦cms数据库名称怎么修改

织梦cms数据库名称的修改方法:1、直接修改mysql里的数据库名称;2、打开根目录下的“data”文件夹,然后找到“common.inc.php”文件;3、修改其中“$cfg_dbname”后面的数据即可打开/data/common.inc.php文件,找到“$cfg_dbname =数据库名称”然后再在数据库里修改成你网站在…

织梦dedecms备份的数据库文件在哪里

因为不同虚拟主机空间的mysql数据库名称是各不相同的(因为其前缀不一样的,用过就知道了),所以要首先备份数据库,然后放到新空间还原,再重新生成html即可。(注意:新空间和原站的MYSQL数据库的版本必须同样是4.1以上,或同是4.0、4.0以下,以免出现问题。) 具体的步骤: 1、…

Omnissa Horizon 8 2406 (8.13) 发布下载 - 虚拟桌面基础架构 (VDI) 和应用软件

Omnissa Horizon 8 2406 (8.13) 发布下载 - 虚拟桌面基础架构 (VDI) 和应用软件Omnissa Horizon 8 2406 (8.13) 发布 - 虚拟桌面基础架构 (VDI) 和应用软件 之前称为 VMware Horizon, 通过高效、安全的虚拟桌面交付增强您的工作空间 请访问原文链接:https://sysin.org/blog/om…

odoo17 环境配置

1、PostgreSql数据库 安装教程:Windows 上安装 PostgreSQL | 菜鸟教程 (runoob.com) (建议版本15以上) 注意: 由于Odoo是不允许用pg自带的管理员角色--postgres,所以得创一个odoo使用数据库的角色:create user odoo with password odoo; alter role odoo with superuser;也可…

帝国cms管理员在哪个表

管理员表有: 1、phome_enewsuser,是管理员记录表; 2、phome_enewsdolog,是管理员操作记录表; 3、phome_enewsgroup,是管理员用户组数据记录表; 4、phome_enewslog,是管理员登陆日志; 5、phome_enewsloginfail,是管理员登陆失败记录表; 6、phome_enewserrorclass,是…

dedecms安装到网站根目录,首先登录FTP

dedecms安装到网站根目录,首先登录FTP;然后输入对应的IP、用户名和密码;接着将织梦压缩包上传解压到后台中即可。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种CMS,精通PHP+MYSQL、HTML5、CSS3、Javascript等。承接:企业仿站、网站修改、网站改版…