Jacobi(雅可比)迭代原理与matlab代码
Jacobi(雅可比)迭代原理与matlab,C代码
Jacobi迭代分量形式:
xi(k+1)=1/aii(bi−∑j≠ii=1naijxj(k))\ x_i^{(k+1)}=1/a_{ii}(b_i-\sum_{\stackrel{i=1}{ j\neq i} }^na_{ij}x_j^{(k)}) xi(k+1)=1/aii(bi−j=ii=1∑naijxj(k))
矩阵形式:
X(k+1)=D−1(L+U)X(k)+D−1b\ X^{(k+1)}=D^{-1}(L+U)X^{(k)}+D^{-1}b X(k+1)=D−1(L+U)X(k)+D−1b
1.理论分析
比较gauss seidel迭代法与J迭代法解方程组差异见图1(以3*3方程组为例),gauss seidel迭代法每次计算使用解x的最新值,而J迭代法使用上一次x的解,如果解是收敛的,那么gauss seidel迭代过程使用的最好的估计值,性能应该比J迭代法好:
2.算法描述
Jacobi迭代法:
根据A=D-L-U将A拆分成对角矩阵D,下三角矩阵L,上三角矩阵U;
循环迭代操作迭代矩阵x(k+1)=BJx(k)+g,其中BJ=D−1∗(L+U),g=D−1b\ x^{(k+1)}=B_Jx^{(k)}+g,其中B_J=D^{-1}*(L+U),g=D^{-1}b x(k+1)=BJx(k)+g,其中BJ=D−1∗(L+U),g=D−1b;
使用为无穷范数小于等于E-6终止条件;
3.计算程序(matlab)
3.1分量形式用循环不用matlab自带写迭代过程
% Jacobi method A*X=bclearclcn=input('输入问题维度 n: ');A = zeros(n,n); %生成矩阵需要的储存单元b = zeros(n,1); %生成矩阵需要的储存单元Xnow = zeros(n); %生成解向量需要的储存单元Xafter = zeros(n); %生成解向量需要的储存单元tol = input('输入你题目中的误差: '); %生成解向量误差x(k+1)-x(k)需要的储存单元m = 300; %最多迭代300次。超过可能有问题?A=[4 2 3; 3 -5 2; -2 3 8];b=[8 -14 27 ];Xnow=[0 0 0];k = 1; %记录迭代次数while k <= m err = 0;for i = 1 : n s = 0;for j = 1 : n s = s-A(i,j)*Xnow(j);ends = (b(i)+s)/A(i,i);if abs(s) > err err = abs(s);endXafter(i) = Xnow(i)+s;endif err <= tol break;elsek = k+1;for i = 1 : n Xnow(i) = Xafter(i);endendendfprintf('Jacobi方法迭代了 %d 次 :\n', k-1);for i = 1 : n fprintf(' %11.8f \n', Xafter(i));end
3.2矩阵迭代用matlab自带的函数求解
clear
clcn = input('Enter number of equations, n: '); %根据提示输入题目要求的n%构造矩阵Afor m=nA=zeros(m,m);for m=1:mA(m,m)=20;endfor m=2:mA(m,m-1)=-8;A(m-1,m)=-8;endfor m=3:mA(m,m-2)=1;A(m-2,m)=1;endendx = ones(n,1);
b = zeros(n,1);
D = diag(diag(A)); %求A的对角矩阵
L = tril(A,-1); %求A的下三角矩阵
U = triu(A,1); %求A的上三角矩阵
err = 1E-6;
%Jacobil迭代
I=eye(n); %生成单位矩阵
BJ=I-D\A; %生成迭代矩阵BJ
pJ=vrho(BJ); % 矩阵的谱半径
R_j = -log(pJ); %J迭代渐进收敛速度
g=D\b;
jacobilk = 1; %jacobil迭代次数
xJ = ones(n,1); %初始迭代向量(1,1,1,1,..)T
it_max = 200; %设定上限,万一无限循环
while jacobilk <= it_maxxjafter=BJ*xJ+g; xJ=xjafter;if norm(xJ,inf)<errbreak;endjacobilk = jacobilk +1;
end
Jacobi(雅可比)迭代原理与matlab代码相关推荐
- jacobi方法 matlab,Jacobi(雅可比)迭代原理与matlab代码
Jacobi(雅可比)迭代原理与matlab代码 Jacobi(雅可比)迭代原理与matlab代码 Jacobi(雅可比)迭代原理与matlab,C代码 Jacobi迭代分量形式: x i ( k + ...
- 史上最完整的MPI实现Jacobi(雅可比)迭代算法[C++]
注意:[实现Jacobi(雅可比)迭代可以用MPI实现,也可以用CUDA实现,想使用CUDA实现Jacobi的同学,请参考这里, 1,原理介绍[食用代码前最好先弄清楚原理] 1.1 公式介绍 - 可以 ...
- 智能优化算法:海鸥算法原理及Matlab代码
智能优化算法:海鸥算法原理及Matlab代码 文章导航 1. 算法原理 2. SOA算法流程 2.1 迁徙行为(exploration ability) 2.2 攻击行为(exploitation a ...
- MUSIC算法原理及MATLAB代码 阵列信号处理
MUSIC算法原理及MATLAB代码 阵列信号处理 MUSIC(multiple signal classification algorithm)算法是一种基于矩阵特征空间分解的方法.从几何角度讲,信 ...
- 【综合评价分析】熵权算法确定权重 原理+完整MATLAB代码+详细注释+操作实列
[综合评价分析]熵权算法确定权重 原理+完整MATLAB代码+详细注释+操作实列 文章目录 1. 熵权法确定指标权重 (1)构造评价矩阵 Ymn (2)评价矩阵标准化处理 (3)计算指标信息熵值 Mj ...
- 【综合评价分析】topsis评价 原理+完整MATLAB代码+详细注释+操作实列
[综合评价分析]topsis评价 原理+完整MATLAB代码+详细注释+操作实列 文章目录 1.TOPSIS法的原理 2.TOPSIS法案例分析 3.建立模型并求解 3.1数据预处理 3.2代码实现数 ...
- 色噪声原理及matlab代码实现,色噪声原理及matlab代码实现
色噪声原理及matlab代码实现 色噪声原理及 matlab 实现1.实验目的:⑴ 了解随机信号自身的特性,包括均值(数学期望) .均方值.方差.相关函数.概率密度.频谱及功率谱密度等.(2)了解色噪 ...
- 【GA算法】遗传算法原理及其Matlab代码
翻阅几篇遗传算法的文章,这篇通俗易懂,且逻辑清楚,最适合入门,不用担心遗漏关键点. 遗传算法,先选择,交叉和变异顺序可更换. 轮盘赌部分,参考了另外一篇文章的解释. 此外,还有一些有价值的文献: 选择 ...
- Adaboost算法原理以及matlab代码实现(超详细)
一.AdaBoost简介 Boosting, 也称为增强学习或提升法,是一种重要的集成学习技术, 能够将预测精度仅比随机猜度略高的弱学习器增强为预测精度高的强学习器,这在直接构造强学习器非常困难的情况 ...
最新文章
- 项目实践 | 一文览尽人脸打卡全过程
- 分析Unicode和UTF-8
- Word无法打开该文件,因为文件格式与文件扩展名不匹配的解决办法
- 欧拉回路和哈密尔顿回路
- 01_常用 Linux 命令的基本使用
- 【题解】大床Nim (2019,5.23)
- 通过Github创建Android库供其他项目依赖引用
- chrome查看网站字符集编码的方法(不需要安装charset)
- Mybatis配置信息浅析 MyBatis简介(二)
- BP神经网络分类实例(神经网络编程入门 )
- swiper vue 上一页_swiper在vue中正确的使用方法
- mysql存储过程 定时任务
- centos7忘记root密码,重置
- 使用rsync 实现服务器文件同步
- 计算机网络工程综合布线目的,浅谈网络工程综合布线系统
- 北京挪动推出神州行5元卡套餐
- Explain执行器名词解释
- rand()和srand()
- docer中运行crontab
- 4-hive 表概念
热门文章
- 计算机c盘哪些可以清理,怎么清理C盘?不知道哪些可以删除?
- 问题解决:java.sql.SQLException: No suitable driver found for jdbc:mysql
- CUDA安装出现图形驱动程序安装失败
- cesium three性能比较_初探希捷Exos银河18 TB盘,容量和性能双双提升
- 咽喉肿痛合谷穴照海穴
- 5、hibernate第六课
- 苏嵌//张福辉//2018.7.13
- 自阿里P8爆出1031道java面试题后,我在boss直聘狂拿千份Offer
- ElasticSearch 基础(七)之分析器
- 数据结构(四)—— 图(1):什么是图