雅可比(Jacobi)迭代法解线性方程组的Matlab实现
雅可比(Jacobi)迭代法解线性方程组的Matlab实现
- 代码
- 运行
代码
迭代法解线性方程组的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则,有不同的计算规则得到不同的迭代法。
本文是常用的迭代法之一:Jacobi迭代法解线性方程组的matlab实现。
关于Jacobi迭代法的具体内容和算法见《数值计算方法》—丁丽娟,P65-66
书中算法如下:
程序中所用算法和书中的一致。
Matlab代码如下。
// 输入量:
A: 线性方程组的系数矩阵(n*n,非奇异)
b: 方程组右边的常数项列向量
n: 方程组维数
x0: 初始值
tol: 精度上限值
N: 最大迭代次数//迭代终止标准
已达精度上限值或者到达最大迭代次数//输出量:
x:线性方程组的解
// An highlighted block
function x=jacobi_fun(A,b,n,x0,tol,N)
x=zeros(n,1); % 给x赋值
k=0;
while k<Nfor i=1:nx(i)=(b(i)-A(i,[1:i-1,i+1:n])*x0([1:i-1,i+1:n]))/A(i,i);endif norm(x-x0)<tolbreak;endx0=x;k=k+1;disp(['when k=',num2str(k)])disp('x=');disp(x); %输出计算的中间结果
endif k==Ndisp('迭代次数已到达上限!');
end
disp(['迭代次数 k=',num2str(k)])end
运行
运行示例的线性方程组是《数值计算方法》—丁丽娟 P-66 例一
// Command Window 中输入
>> A=[10 -1 -2;-1 10 -2;-1 -1 5];
>> b=[72;83;42];
>> n=3;
>> x0=[0;0;0];
>> tol=1e-6;
>> N=500;// 输入后,调用函数
>> x=jacobi_fun(A,b,n,x0,tol,N)
运行结果如下:
可看出迭代16次之后得到精确值。
若输入N=9,运行结果如下:
迭代的中间过程其中一小部分见下图:
注: 判断时否到达精度上限用的是范数,此处选用2范数,实际上选用1范数,inf范数均可,若想选用其他范数,调用norm(A,p)即可。
雅可比(Jacobi)迭代法解线性方程组的Matlab实现相关推荐
- 雅克比(Jacobi)迭代法解线性方程组(Matlab程序)
%---雅克比迭代法----- %---Jacobi iteration method clear;clc; % A=[10,-1,-2;-1,10,-2;-1,-1,5]; % b=[72,83,4 ...
- 雅各比迭代法程序matlab,雅克比(Jacobi)迭代法解线性方程组(Matlab程序)
%---雅克比迭代法----- %---Jacobi iteration method clear;clc; % A=[10,-1,-2;-1,10,-2;-1,-1,5]; % b=[72,83,4 ...
- 高斯—赛德尔(Gauss - Seidel)迭代法解线性方程组(Matlab程序)
%---高斯-赛德尔迭代法----- %---Gauss - Seidel iteration method clear;clc; % A=[10,-1,-2;-1,10,-2;-1,-1,5]; % ...
- 高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现
高斯-赛德尔(Gauss-Seidel)解线性方程组的Matlab实现 代码 运行 手算例题 迭代法解线性方程组的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则,有不同的 ...
- MATLAB Jacobi迭代法 求解线性方程组
文章目录 前言 一.Jacobi迭代法是什么? 二.对应的编程思想以及公式推导 1.Jacobi迭代法 公式推导 2.Jacobi迭代法求解线性方程组 例子 3.Jacobi迭代法 编程实现 总结 前 ...
- 用matlab求解jacobi,用jacobi迭代法求解线性方程,求助matlab大师
问题描述: 用jacobi迭代法求解线性方程,求助matlab大师 用jacobi迭代法求解线性方程 9x1-x2+x3=10 -x1+10x2-2x3=7 -2x1+x2+10x3=6,设迭代初值为 ...
- 超松弛迭代法解线性方程组c语言,超松弛迭代法解线性方程组.doc
PAGE PAGE 2 姓名:___________________________ 设计题目:超松弛迭代法解线性方程组 专业: 摘要 本文是在matlab环境下熟悉的运用计算机编程语言并结合超松弛变 ...
- Matlab_用高斯赛德尔(Gaoss-Seidel)迭代法解线性方程组
1.程序代码 function x=Gauss(A,b,x0,ep,N) %用途:用高斯迭代法解线性方程组Ax=b %A为系数矩阵,b为右端向量,x0为初始向量(默认零向量) %ep为精度(1e-6) ...
- 数值计算——雅可比迭代法解线性方程组(附代码)
1.雅克比迭代法的计算过程: (1).取初始向量: (1) (2 ...
最新文章
- android edittext_Android 支持拖动、缩放的自定义软键盘
- mysql数据库的环境搭建_数据库学习(一)MySql环境搭建
- 下一代低延时直播CDN:HLS、RTMP 与UDP +WebRTC
- 二级分类_免费获取2021年二级造价工程师考试大纲
- target not created怎么解决_怎么才能最短时、高效、踏实地学习 Python(附链接)...
- swarm 和 k8s_Wildfly Swarm,朝着成熟和一小部分贡献
- Qt 5.14 安装,windows10系统,64位,详细步骤,非常简单!
- HAproxy + Keepalive实现LDAP代理服务
- 360修复导致服务器,桌面安装360软件修复漏洞补丁导致桌面TC端无法登陆,FC端VNC登陆一键修复显示HDC不可达...
- 53. 最大子数组和(JavaScript)
- Linux常用的基础组件
- DLL导出类避免地狱问题的完美解决方案
- 黑马MFC教程总结(后续更新)
- 现代通信原理思维导图--第四章 信道
- GDI简单绘图(二)- 绘制验证码
- wamp mysql 密码_wamp如何设置数据库的密码
- 计算机专业新生研讨课感悟,新生研讨课学习心得与收获
- 关于共享自习室查询座位空闲状态的算法笔记
- 用于2D动画的实时嘴型同步技术
- 什么是DCS系统?DCS和SCADA的区别