雅克比迭代算法(Jacobi Iterative Methods) -- [ mpi , c++]
雅克比迭代,一般用来对线性方程组,进行求解。形如:
我们需要求解出 , ,,我们对这组方程进行变换:
我们不妨假设 ,当我们代入上述公式的时候,我们就会得到一组新的 ,此刻我们称之为一次迭代.
然后我们将得到的X1,X2,X3再次代入公式,我们将会得到第二次迭代, 当我们重复这种迭代的时候,我们会得到第K次迭代:
,
我们将其归纳成一般式子:
eg: 对于方程组:
求解:
我们先将其变形:
然后,我们假设:
并将其代入得到:
我们将得到的X1,x2,x3再次代入方程中,反复迭代,将会得到如下:
最终我们将会得到一个收敛值,该组值,就是我们得到的解(会非常的逼近真实解)
那么这种方法,也可以用来求解矩阵:
对于方程: Ax =b ; 我们设定 A矩阵为: ,b矩阵为:
, x矩阵为:
到这里,每个人都有自己的解法,直接的解法是将 x = b,但是A的逆矩阵,计算较为复杂,我们这里需要一点小的tricks ,我们将A矩阵拆分成为一个对角矩阵D,下三角矩阵L,上三角矩阵U,即
这样的话,公式 Ax = b 就变成了 ( D - L -U )x = b ,然后我们就可以得到:
Dx = b + (L+U)x ,当我们得到这个公式的时候,求解D的逆矩阵就容易了很多,我们得到D的逆矩阵为:
然后,我们将D移到右边变成:
这个公式,和我们上面描述的雅克比迭代是不是长得很像,然后我们可以将其一般化为:
我们知道A是一个已知的常量矩阵,因而D,L,U都是已知矩阵,那么我们可以简化为:
, ;
根据这一个思想,我们可以得到一个伪代码:
实现代码为:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决