数值计算——雅可比迭代法解线性方程组

article/2025/4/22 3:18:56

1.雅克比迭代法的计算过程:

(1).取初始向量:

                                                                     x^{(0)}=(x_{1}^{(0)},x_{2}^{(0)},\cdots ,x_{n}^{(0)})^{T}                                                                    (1)

(2).迭代过程

                                                      \left\{\begin{matrix} x_{1}^{(k+1)}=\frac{1}{a_{11}}\left ( -a_{12}x_{2}^{(k)}-\cdots -a_{1n}x_{n}^{(k)}+b_{1}\right )\\ x_{2}^{(k+1)}=\frac{1}{a_{22}}\left ( -a_{21}x_{1}^{(k)}-\cdots -a_{2n}x_{n}^{(k)}+b_{2}\right ) \\ \vdots \\ x_{n}^{(k+1)}=\frac{1}{a_{nn}}\left ( -a_{n1}x_{1}^{(k)}-\cdots -a_{nn-1}x_{n-1}^{(k)}+b_{n}\right ) \end{matrix}\right.                                              (2)

2.求解实例:

                                                              \begin{bmatrix} 3 & -1 & & & \\ -1 & 3 & -1 & & \\ & \ddots & \ddots & \ddots & \\ & & -1 & 3 & -1 \\ & & & -1 & 3 \end{bmatrix}\begin{bmatrix} x_{1}\\ x_{2}\\ \vdots \\ x_{n-1}\\ x_{n} \end{bmatrix}=\begin{bmatrix} 2\\ 1\\ \vdots \\ 1\\ 2 \end{bmatrix}                                                    (3)

用 Jacobi  方法求解,精确到小数点后 6 位,  给出所需步数及残差\left \| b-Ax \right \|_{\infty };

3.求解结果:

当n=100时,x1...xn=1,所需步数33,残差0.00000155

//雅克比迭代法,解线性方程组,高等数值计算
//#include "pch."
#include <iostream>
using namespace std;
#include <iomanip> //参数化输入/输出 
#include <vector>
#define  n  100    //矩阵大小
#define  epsilon  0.001   //精度
vector<double> jacobi(vector<vector<double>>a, vector<double>b, vector<double>x_new);//申明雅克比迭代方法求解函数
vector<double> jacobi(vector<vector<double>>a, vector<double>b, vector<double>x_new)
{int num = size(b), n_cishu = 0;double sum = 0, max_precision = 0;;vector<double>x_old(num);do{n_cishu++;for (int j = 0; j < num; j++){x_old[j] = x_new[j];}for (int j = 0; j < num; j++){sum = 0;for (int k = 0; k < num; k++){if (j != k){sum = sum - a[j][k] * x_old[k];}}x_new[j] = (sum + b[j]) / a[j][j];max_precision = 0;for (int i = 0; i < num; i++){sum = fabs(x_new[i] - x_old[i]);if (sum > max_precision){max_precision = sum;}}}} while (max_precision > epsilon);//残差计算double max_residual = 0;for (int i = 0; i < num; i++){sum = b[i];for (int j = 0; j < num; j++){sum = sum - a[i][j] * x_new[j];}if (sum > max_residual){max_residual = sum;}}//cout << "所需步数:" << n_cishu << "残差:" << fixed << setprecision(8) << setw(10) << max_residual << endl;return x_new;
}
int main()
{vector<vector<double>>a;a.resize(n, vector<double>(n));//定义线性方程组系数矩阵Avector<double>b(n);  //定义线性方程组右边列向量Bvector<double>x(n);  //初始化向量a[0][0] = 3, a[0][1] = -1, b[0] = 2;for (int i = 1; i < n - 1; i++){a[i][i - 1] = -1;a[i][i] = 3;a[i][i + 1] = -1;b[i] = 1;}a[n - 1][n - 2] = -1; a[n - 1][n - 1] = 3, b[n - 1] = 2;x = jacobi(a, b, x);for (int i = 0; i < n; i++)cout << x[i] << endl;
}

 


http://chatgpt.dhexx.cn/article/1wnnkCqV.shtml

相关文章

雅可比迭代法、高斯-赛德尔迭代法、超松弛迭代法 matlab 实现

雅可比迭代法、高斯-赛德尔迭代法、超松弛迭代法 matlab 实现 一、雅可比迭代法 程序代码&#xff1a; function y Jacobi(A,b,e,M) % input: A 的对角线元素均不为 0 e: 精度 M: 最大计算次数 % output: y: 方程的解n length(A); x0 zeros(n,1); y zeros(n,1);[l,w] si…

数值计算——雅可比迭代法解线性方程组(附代码)

1.雅克比迭代法的计算过程: (1).取初始向量: &#xff08;1&#xff09; (2).迭代过程 &#xff08;2&#xff09; 2.求解实例&#xff1a; &#xff08;3&#xff09; 用 Jacobi 方法求解&#xff0c;精确到小数点后 6 位, 给出所需步数及残差; 3.求解结果&#xff1a; 当n1…

雅可比迭代法程序c语言,求雅可比迭代法解方程组的C\C++程序

满意答案 singleycf 2013.07.05 采纳率&#xff1a;54% 等级&#xff1a;13 已帮助&#xff1a;7908人 #include #include Jacobidiedai(int n, double *a, double *b,double *x) { int i,j; double *x0,m0,eps; x0 (double *) malloc(n*sizeof(double)); for(i0;i x0[i]x…

雅可比迭代法解线性方程组。

L U分解在我之前写的文章里。 定义的变量有点多&#xff0c;但挺容易看的。 #include<stdio.h> #include<math.h> #define N 3 int main (void) {double A[N][N] {0};double D[N][N] {0};double L[N][N] {0};double U[N][N] {0};double C[N][N] {0};double…

线性方程组迭代法—雅克比迭代法C++

此例子使用三个变量、三个方程的情况&#xff0c;如需讨论多个的情况&#xff0c;使用vector稍加修改即可。 使用的方程组如下&#xff1a; 每次迭代的值如下&#xff1a; 程序流程图&#xff1a; 程序代码&#xff1a; /********雅克比迭代法********* *1.Xi为每一步迭代…

《数值分析》-- 雅可比迭代法、高斯—塞德尔迭代法

文章目录 一、基本迭代法的格式及收敛性1.1 迭代法思想1.2 向量序列收敛的定义 二、迭代法的收敛与发散三、雅可比迭代法和高斯赛德尔迭代法3.1 雅可比迭代法3.2 高斯――赛得尔(Gauss-Seidel)迭代法 四、迭代法的收敛性4.1 严格对角占优矩阵与对角占优矩阵4.2 Jacobi迭代法和G…

雅克比迭代法,高斯赛德尔迭代法,sor迭代法(python)

计算方法实验&#xff0c;在已给matlab的程序基础上进行修改得到的python程序&#xff0c;原理不再赘述。实际使用时&#xff0c;只需修改以下程序中的A,b矩阵&#xff08;注意只适用与A为n*n的情况&#xff09; 1.雅克比迭代法 import numpy as npA np.array([[10,-1,-2],[…

C语言实现雅克比迭代法求根

C语言实现雅克比迭代法求根 雅克比迭代法求根 C语言实现雅克比迭代法求根问题描述算法思想C语言程序实验结果 问题描述 设方程组 A x b Ax b Axb的系数矩阵 A A A非奇异 &#xff0c;且 a i i ≠ 0 {a_{ii}} \ne 0 aii​​0将 A A A分裂为&#xff1a; A D L U A D L…

雅克比迭代法和高斯-塞德尔迭代法

https://wenku.baidu.com/view/ac6a0d89d0d233d4b04e6905.html 另外附上迭代收敛的条件&#xff1a; 且越小&#xff0c;收敛的越快。

雅可比迭代法

雅可比迭代法 设有线性方程组 &#xff08;1&#xff09; 其矩阵形式为 设系数矩阵A为非奇异矩阵&#xff0c;且 从式(1)的第个方程中解出&#xff0c;得其等价形式 (2) 取初始向量 对式(2)应用迭代法&#xff0c;建立相应的迭代公式 (3) 也可记为矩阵形式 (4) 若将系数…

数值分析-雅克比迭代法

雅克比迭代法 雅克比迭代法就是众多迭代法中比较早且较简单的一种&#xff0c;其命名也是为纪念普鲁士著名数学家雅可比。雅克比迭代法的计算公式简单&#xff0c;每迭代一次只需计算一次矩阵和向量的乘法&#xff0c;且计算过程中原始矩阵A始终不变&#xff0c;比较容易并行计…

雅克比迭代算法

From https://blog.csdn.net/weixin_33895016/article/details/86031039 雅克比迭代&#xff0c;一般用来对线性方程组&#xff0c;进行求解。形如&#xff1a; a11∗x1a12∗x2a13∗x3b1a11∗x1a12∗x2a13∗x3b1   a21∗x1a22∗x2a23∗x3b2a21∗x1a22∗x2a23∗x3b2   a31…

雅克比(Jacobi)迭代法求解线性方程组

长博文不利于翻阅&#xff0c;于是又将Jacobi迭代法单独出来了。 这篇博文把高斯—赛德尔迭代法和雅克比迭代法都放到一起了&#xff0c;个人觉得看着有点累。&#xff08;迭代法求解线性方程组&#xff09;&#xff0c;不过还是要看的&#xff0c;因为它引出了迭代法。 进入…

MATLAB Jacobi迭代法 求解线性方程组

文章目录 前言一、Jacobi迭代法是什么&#xff1f;二、对应的编程思想以及公式推导 1.Jacobi迭代法 公式推导2.Jacobi迭代法求解线性方程组 例子3.Jacobi迭代法 编程实现总结 前言 雅克比&#xff08;Jacobi&#xff09;迭代法求解线性方程组 一、Jacobi迭代法是什么&#xff1…

紧张的337小时,终于等来了宇宙条字节跳动offer

作者&#xff1a;不穿格子衫的Java程序猿 来源&#xff1a;https://url.cn/5IiC4LJ 坐标北京&#xff0c;某211本科毕业生&#xff0c;之前学校活动有去过字节跳动公司总部参观&#xff0c;所以一直以来就蛮想进入字节工作的&#xff0c;被字节的企业文化和工作氛围所影响。字节…

元宇宙(Metaverse)了解一下

元宇宙(Metaverse)了解一下 “元宇宙”这个29年前就被提出的概念&#xff0c;随着近几年吸纳了日臻成熟的AI、游戏引擎、AR/VR、区块链等技术成果后&#xff0c;突然间就吸引了创业者、资本和市场的注意力。 什么是元宇宙&#xff1f; 元宇宙(Metaverse)概念起源于科幻小说&…

元宇宙时空——元宇宙是什么

未来已来的元宇宙&#xff0c;它究竟是什么&#xff0c;将带给我们生活、学习、工作怎样的改变&#xff0c;想必是很多人的好奇和疑惑。通过对元宇宙三部曲的阅读&#xff08;《元宇宙》《元宇宙通证》《元宇宙大投资》&#xff09;&#xff0c;这些答案慢慢浮出水面&#xff0…

宇宙条总包60W的前端岗,压中原题了!(附答案)

大家都知道某条已经大规模扩招半年了&#xff01; 半年来&#xff0c;身边的亲戚&#xff0c;朋友&#xff0c;同事不是入职了某条&#xff0c;就是在去往某条面试的路上&#xff01; 我身边的一朋友更是百折不挠&#xff0c;去年就开始疯狂地投简历&#xff01;时刻准备跳槽&a…

宇宙条的工作总结:第一次做面试官经历分享

去年7月份应届入职&#xff0c;已经成为社会人13个月了。这期间发生了很多事情&#xff0c;近期相关的工作总结也会逐渐和大家见面。这次先和大家分享一次面试实习生的经历。 因为是不是正式秋招的面试&#xff0c;实习生面试大部分是相对简单些&#xff1a;不会故意问一些比较…

去宇宙条面试被问:HashMap 为什么线程不安全?

我们都知道HashMap是线程不安全的&#xff0c;在多线程环境中不建议使用&#xff0c;但是其线程不安全主要体现在什么地方呢&#xff0c;本文将对该问题进行解密。 1 jdk1.7中的HashMap 在jdk1.8中对HashMap做了很多优化&#xff0c;这里先分析在jdk1.7中的问题&#xff0c;相信…