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

article/2025/4/22 5:04:44

文章目录

  • 前言
  • 一、Jacobi迭代法是什么?
  • 二、对应的编程思想以及公式推导
    • 1.Jacobi迭代法 公式推导
    • 2.Jacobi迭代法求解线性方程组 例子
    • 3.Jacobi迭代法 编程实现
  • 总结



前言

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


Jacobi迭代法是什么? 

简单的讲其实就是我们平时求解的方法(最常用的方法)

以下是Jacobi的迭代过程:

 

 


二、对应的编程思想以及公式推导


1.Jacobi迭代法 公式推导

线性方程组为:                         Ax=b

将A分裂:                          A=D+L+U         

从而得到迭代公式为:     x=-D^{-1}\left( L+U \right) x+D^{-1}b

由于D为对角元素,从而有:          D^{-1}=\frac{1}{D}

即编程语言可以写为:       x=-\left( L+U \right) *x/D+b/D

推到过程为:

                                            Ax=b \\\ \\ A=D+L+U \\\ D=\left( \begin{matrix} a_{11}& & & \\ & a_{22}& & \\ & & \ddots& \\ & & & a_{nn}\\ \end{matrix} \right) \ \\\L=\left( \begin{matrix} 0& & & \\ a_{21}& 0& & \\ \vdots& & \ddots& \\ a_{n1}& \cdots& a_{nn-1}& 0\\ \end{matrix} \right) \ \\\ U=\left( \begin{matrix} 0& a_{12}& \cdots& a_{1n}\\ & 0& & a_{2n}\\ & & \ddots& \vdots\\ & & & 0\\ \end{matrix} \right) \\\ Ax=\left( D+L+U \right) x=b \\\ Dx=-\left( L+U \right) x+b \\\ x=-D^{-1}\left( L+U \right) x+D^{-1}b


2.Jacobi迭代法求解线性方程组 例子

 

 

 

3.Jacobi迭代法 编程实现

完整程序代码为:

function [x,error,iter]=GJJacobi_solve(A,b,epsilon,max_iter)
% x , error , iter 为输出变量     A ,b epsilon,max_iter为输入变量
n=length(b);
x=zeros(n,1);
% 首先编写第一步代码目的  x =-(L+U)*x/D+b/D
%第二部明确符号的意义 D表示对角线的元素 L表示下三角的元素 U表示上三角的元素 b表示列向量的长度
%确定误差error = norm(x-y)%输入矩阵A 以及 列向量b%表示L  U  D
L=tril(A); %tril(A)表示取矩阵A的下三角元素,  包含了对角线元素
U=triu(A); %triu(A) 表示取矩阵A的上三角元素,  包含了对角线元素
D=diag(diag(A)); %表示取矩阵A的主对角元素%想办法使得L,U对角线元素都为0% L(logical(eye(size(L))))=0; %由于维度不对,从而只是等号右边为零不对%  U(logical(eye(size(U))))=0;
%改正%B =  zeros(1,n);              %[0,0,0]
L(logical(eye(size(L))))=0;   %[8;11;12]
U(logical(eye(size(U))))=0;%需要看看是否输出的是对角线元素为0
disp(L)
disp(U)% 先写一个循环(发现运用一个变量时需要先初始化error=1)
% 设置最小误差为10e-6
error = 1 ;%初始化误差变量
iter = 0;  %初始化迭代步数变量
while error>epsilon && iter<max_iter % 给出循环条件,以及函数输入变量epsilon,max_iterfor i =1:max_itery=x;%迭代前的矩阵,用来计算迭代误差x=-D\(L+U)*x+D\b ;  %从这里知道需要把L,U,D,b表示出来 x=-(L+U)*x/D+b/D 这个维度错误error=norm(x-y);  %知道迭代前的数据y,以及迭代后的数据x,设定误差为(x-y)的范数if error>epsilon %给出判断误差是否减小iter =iter+1;breakend     %if 需要 end 结束end         %for 需要 end 结束
end             %while 需要 end 结束

测试代码为:

 A=[8 -3 24 11 -16 3 12];
b=[20;33;36];
epsilon=10e-6;
max_iter=15;
[x,error,iter]=GJJacobi_solve(A,b,epsilon,max_iter);
disp('程序计算的精确解为:');
disp(x);
disp('最大迭代次数下的误差:');
disp(error);
disp('最小迭代次数:');
disp(iter+1);

运行结果为:

     0     0     04     0     06     3     00    -3     20     0    -10     0     0程序计算的精确解为:3.00002.00001.0000最大迭代次数下的误差:4.1060e-12最小迭代次数:14



总结

以上就是今天要讲的内容,本文仅仅简单介绍了雅克比迭代求解线性方程组


http://chatgpt.dhexx.cn/article/jN0B7xsB.shtml

相关文章

紧张的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;相信…

最近大火的「元宇宙」是什么?

作者&#xff1a;腾讯技术工程特约撰稿人 李佳华 本文将介绍元宇宙的由来和底层技术&#xff0c;探讨海内外资本在这条赛道上的布局&#xff0c;元宇宙将会对哪些行业产生变革的影响&#xff0c;这些影响背后凸显了元宇宙的哪些价值&#xff0c;以及元宇宙逐步实现的过程中监管…

浅谈元宇宙投资

博客主页&#xff1a;https://tomcat.blog.csdn.net 博主昵称&#xff1a;农民工老王 主要领域&#xff1a;Java、Linux、K8S 期待大家的关注&#x1f496;点赞&#x1f44d;收藏⭐留言&#x1f4ac; 目录 什么是元宇宙元宇宙与区块链区块链的含义区块链面临的技术困境区块链的…

宇宙条面试:这样跟面试官说代理,面试官对我竖起了大拇指!

什么是代理 代理模式是常用的java设计模式&#xff0c;他的特征是代理类与委托类有同样的接口&#xff0c;代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类&#xff0c;以及事后处理消息等。代理类与委托类之间通常会存在关联关系&#xff0c;一个代理类的对象…

【元宇宙系列】游戏与元宇宙(上)——元宇宙的胚胎发育期

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 文章目录 游戏&#xff0c;元宇宙的胚胎发育期棉花产业带动了工业革命游戏孕育了元宇宙 游戏是人类文明的起点。席勒说&#xff1a;“只有当人在充分意义上是人的时候&a…

一个读者大佬精心总结的阿里、腾讯、宇宙条大厂 Offer 面经和硬核面试攻略

作者&#xff1a;见习格子衫 去年11 月底&#xff0c;在经历了充分的思想斗争后&#xff0c;我终于下定决心寄出了三方&#xff0c;历时三个多月的秋招也终于尘埃落定。过去的三个多月里&#xff0c;面试时间可能只有一个月左右&#xff0c;剩下的两个多月的时间都在等待结果和…

热乎的宇宙条总部面经,已拿offer,速来围观

本文来自作者陈同学的分享&#xff0c;哈工大机械专业研究生。 说起我字节跳动的面试经历可以说一波三折的&#xff0c;我在字节有经历过「十轮」的面试经历。 我和字节跳动的渊源可以追溯到去年2019的10月份&#xff0c;当时我的水平很菜&#xff0c;由于怕进入字节的招聘系统…

巴比特 | 元宇宙每日必读:粤港澳大湾区出台首个“元宇宙10条”,“三个五百万”将扶持哪些赛道?...

摘要&#xff1a;4月6日&#xff0c;广州市黄埔区、广州开发区举行元宇宙创新发展新闻发布会&#xff0c;正式发布《广州市黄埔区、广州开发区促进元宇宙创新发展办法》&#xff08;以下简称“元宇宙10条”&#xff09;。“元宇宙10条”扶持范围涵盖技术创新、应用示范、知识产…

各厂内推整理 (新增宇宙条)| 第四期

点击上方“朱小厮的博客”&#xff0c;选择“设为星标” 从去年开始&#xff0c;整个互联网行业的态势就不容乐观&#xff0c;很多公司都停止了招聘甚至出现了大面积的裁员潮&#xff0c;找工作变得越来越困难。 皮皮应几位道友相邀&#xff0c;在几个月前建立了一个内推群&…

今日头条这么厉害,被称为宇宙条!到底用了什么牛逼技术!

作者 | 钟镇刚 链接&#xff1a;blog.csdn.net/mucaoyx/article/details/84498468 今日头条创立于2012年3月&#xff0c;到目前仅几年时间。从十几个工程师开始研发&#xff0c;到上百人&#xff0c;再到200余人。产品线由内涵段子&#xff0c;到今日头条&#xff0c;今日特卖&…

宇宙条一面:十道经典面试题解析

前言 大家好&#xff0c;我是捡田螺的小男孩。&#xff08;星标置顶田螺哥&#xff0c;学起来&#xff01;&#xff09; 有位朋友面试了宇宙条&#xff0c;后端方向。整理了这几道面试真题以及答案&#xff0c;如有错误&#xff0c;欢迎大家留言区讨论哈。金九银十冲刺&#x…

入职宇宙条之后,我知道了这些

本文分为字节跳动的工作和生活总结&#xff0c;带你近距离了解字节跳动&#xff01; 生活总结 吃 字节跳动公司有自己的食堂&#xff0c;小编在二楼办公&#xff0c;食堂在负一层。公司为所有员工提供免费三餐。 早餐的大概时间是9:00到10:30&#xff0c;所以早上到公司太早&am…

C语言特殊图案之菱形的三种方法---今日笔记

小小白第一次写CSDN的博客啦&#xff01; 第一次写正式的博客&#xff0c;大家凑合看吧&#xff0c;有什么问题可以留言哦。 题目&#xff1a;输出一个如下菱形图 方法一 &#xff0c;利用循环控制输出。 解题思路&#xff1a;计算出每行包括7个字符&#xff0c;其中有的是空…

c语言输出半个菱形

1.在屏幕上输出以下图案&#xff1a; * *** ***** ******* ********* *********** ************* *********** ********* ******* ***** *** * 分析&#xff1a; 看到这个图形我们就想到这是菱形的一半&#xff0c;但是又跟菱形的输出方法不太一样&#xff0c;在此无需考虑空…

C语言输出n行* (打印菱形)

#include <stdio.h> #include <stdlib.h> #include <time.h> #include <math.h> #include <Windows.h> int main(void) {//首先分析&#xff1a;用户输入的是奇数还是偶数//其次分析&#xff1a;选择偶数的话选择在上部分还是下部分少打一行//上…