[MATLAB]线性方程组求解(雅可比迭代和高斯迭代源码实现)

2023-11-16

本试验取材于中南大学《科学计算与MATLAB语言》。

直接解法

  • 高斯消去法
  • 列主元消去法
  • 矩阵的三角分解法
    (1)利用左除运算符的直接解法
Ax=b------>x=a\b

注意:如果矩阵A是奇异的或接近奇异的,则MATLAB会给出警告信息。
在这里插入图片描述

>> A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
>> b=[13,-9,6,0]';
>> x=A\b

x =

  -66.5556
   25.6667
  -18.7778
   26.5556

(2)利用矩阵分解求解线性方程组

  • LU分解
  • QR分解
  • Cholesky分解
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
>> A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
>> b=[13,-9,6,0]';
>> [L,U]=lu(A);
>> x=U\(L\b)

x =

  -66.5556
   25.6667
  -18.7778
   26.5556

>> 

迭代解法

  • 雅可比(Jacobi)迭代法
  • 高斯-赛德尔(Gauss-Serdel)迭代法
    这里先讲一下雅可比迭代法,雅可比迭代法,特别花里胡哨,但是我在求复合函数偏导数特别好使,因此下面给出雅可比迭代法的具体实现步数
    在这里插入图片描述
    创建一个jacobi.m
function [y,n]=jacobi(A,b,x0,ep)
%%输出的参数 y指方程的解 n为迭代的次数
% 输入的参数分别是系数矩阵 右端列向量 迭代的初值 精度
D=diag(diag(A))%%求对角矩阵
L=-tril(A,-1);%%求下三角
U=-triu(A,1);%%求上三角
B=D\(L+U);
f=D\b;
y=B*x0+f;
n=1;
while norm(y-x0)>=ep %%2范数去逼近
    x0=y;
    y=B*x0+f;
    n=n+1;
end

这段代码巧妙实现了雅可比迭代算法流程
(2)高斯–赛德尔(Gauss-Serdel)迭代法
第二种方法是站在第一种方法基础上,将代码稍微更改,直接变成高斯—赛德尔迭代法.
在这里插入图片描述
创建一个gauseidel.m

function [y,n]=gauseidel(A,b,x0,ep)
D=diag(diag(A))%%求对角矩阵
L=-tril(A,-1);%%求下三角
U=-triu(A,1);%%求上三角
B=(D-L)\U;
f=(D-L)\b;
y=B*x0+f;
n=1;
while norm(y-x0)>=ep %%2范数去逼近
    x0=y;
    y=B*x0+f;
    n=n+1;
end

在这里插入图片描述
在这里插入图片描述

>> A=[4,-2,-1;-2,4,3;-1,-3,3];
>> b=[1,5,0]';
>> [x,n]=jacobi(A,b,[0,0,0]',1.0e-6)

x =

    0.9706
    0.8529
    1.1765


n =

    35

>> [x,n]=gauseidel(A,b,[0,0,0]',1.0e-6)

x =

    0.9706
    0.8529
    1.1765


n =

    16

>> 

小结:虽然你可以看到感觉高斯迭代次数更少,可以直接迭代出更雅可比一样的值,但现实是两者无法作为比较,一种可能连收敛性都无法确定。
在这里插入图片描述

>> A=[1,2,-2;1,1,1;2,2,1];
>> b=[9;7;6];
>> [x,n]=jacobi(A,b,[0;0;0],1.0e-6)

x =

   -27
    26
     8


n =

     4

>> [x,n]=gauseidel(A,b,[0;0;0],1.0e-6)

x =

  1.0e+305 *

      -Inf
       Inf
   -1.7556


n =

        1011

>> 

相信各位看官看见了,高斯迭代竟然不收敛!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[MATLAB]线性方程组求解(雅可比迭代和高斯迭代源码实现) 的相关文章

随机推荐

  • 了解 HTTP3.0 吗?简要说一下 HTTP 的一个发展历程?

    码字不易 有帮助的同学希望能关注一下我的微信公众号 Code程序人生 感谢 代码自用自取 一 HTTP 3 0 HTTP3 0 也称作HTTP over QUIC HTTP3 0的核心是QUIC 读音quick 协议 由Google在 20
  • 埋点数据

    原文源自 http www woshipm com pmd 751876 html 本文作者将从一个埋点系统设计者的角度通俗系统地讲解埋点的全过程 涉及到埋点基础知识 埋点作用 埋点方法 埋点数据流程 埋点应用 埋点管理等信息 埋点是什么
  • STM32之中断与事件---中断与事件的区别

    转自http blog csdn net flydream0 article details 8208463
  • docker添加新的环境变量_关于docker:在Dockerfile中,如何更新PATH环境变量?

    我有一个从源代码下载和构建GTK的dockerfile 但以下行没有更新我的图像的环境变量 RUN PATH opt gtk bin PATH RUN export PATH 我读到我应该使用ENV来设置环境值 但以下指令似乎也不起作用 E
  • conda的安装与使用

    conda的安装与使用 一 conda可以干嘛 官方介绍 Anaconda 是一个包含数据科学常用包的 Python 发行版本 它基于 conda 一个包和环境管理器 衍生而来 你将使用 conda 创建环境 以便分隔使用不同 Python
  • 苏神文章解析(6篇)

    苏神文章解析 文章目录 苏神文章解析 1 浅谈Transformer的初始化 参数化与标准化 1 1采样分布 截尾正态分布 1 2 正交初始化 Xavier初始化 1 3 直接标准化 1 4 NTK参数化 1 5 残差连接 2 模型参数的初
  • 图像边缘算法——计算图像边缘(OpenCV)

    目录 一 算法描述 二 计算欧氏距离的Python代码 三 完整的代码 四 结果 一 算法描述 算法的基本原理是 将当前像素与邻接的下部和右部进行比较 如果相似 则将当前像素设置为白色 否则设置为黑色 如何判定像素相似呢 应用欧式距离算法
  • 吐血整理!Python程序员常见的几种变现方式!

    今天聊一个特俗但是大家都想的事情 那就是 赚钱 这件事 先说为什么这个事情 特俗 因为其实我发现我身边大部分程序员不爱谈钱 或者羞于谈钱 加上程序员工资普遍比较高 所以早期都没啥压力 但是随着年龄增大 薪资的涨薪幅度放缓 问题逐渐就暴露出来
  • n个人围成一圈 报数3 python

    n int input count 0 a list range 1 n 1 while len a gt 1 b a for i in range len a count 1 if count 3 0 a remove b i print
  • 不能使用clr编译c文件 怎么强制用clr_一名合格的 C/C++ 开发者拥有这些能力,你就可以去面试了!...

    首先你需要一个显得十分有 经验 的发型 然后拥有一身程序员的基本装备 比如 言归正传 在大多数开发人员的认知中 C C 是一门非常难学的编程语言 很多人知道它的强大 但因为 难 造成的恐惧让很多人放弃 在我看来 C C 一旦学成 其妙无穷
  • Hive简介和安装

    1 Hive是基于hadoop的数据仓库解决方案 由facebook贡献给Apache Hive出现的初衷是让不熟悉编程的数据分析人员也能够使用hadoop处理大数据 这是怎么实现的呢 2 我们先来看看Hive提供的接口 从下面Hive的架
  • Tesseract3.02训练生成新的识别语言库的详细步骤

    说明 本文参考了很多前辈的资料 主要是 tesseract OCR3 0语言库训练步骤 再结合自己的实践操作 个人感觉官网的教程是最权威的 耐着性子看完 收获很大 比网上到处看别人理解的更好 毕竟每个人理解的都是自己的 不全面 当然也包括本
  • Vue键盘事件

    一 keydown和keyup的区别 keydown 和 keyup 是JavaScript中用于捕获键盘按键事件的两个事件类型 它们有以下区别 触发时机 keydown 事件在按下键盘上的键时触发 无论是否已释放 keyup 事件在释放键
  • 深度学习之自编码器(2)Fashion MNIST图片重建实战

    深度学习之自编码器 2 Fashion MNIST图片重建实战 1 Fashion MNIST数据集 2 编码器 3 解码器 4 自编码器 5 网络训练 6 图片重建 完整代码 自编码器算法原理非常简单 实现方便 训练也较稳定 相对于PCA
  • 知识图谱基础代码构建(医疗向)

    今天上线发现自己竟然涨粉了 也给了我更大的动力将这一方面继续记录下去 这里是对另外一个项目代码的解读 个人认为是对前面连续几篇中文医疗知识图谱的解读的一个补充 有着拨云见日的作用 项目来源是GitHub上面刘老师做的一个基于知识医疗图谱的问
  • 【linux】——动静态库

    目录 动静态的比较 扩展名 编译操作 执行的状态 生成静态库 生成动态库 总结 在linux操作系统中 函数库是一个非常重要的的东西 因为很多软件之间都会互相使用彼此提供的函数来使用其特殊的功能 例如 我们在写c语言的时候 但我们要使用pr
  • 【人工智能】5.不确定性推理

    一 不确定推理预备知识 1 不确定性推理的含义 不确定性推理实际上是一种从不确定的初始证据出发 通过运用不确定性知识 最终推出具有一定程度的不确定性但却又是合理或基本合理的结论的思维过程 2 不确定推理基本问题 1 不确定性的表示 知识的不
  • 带环单链表及链表相交问题的分析及代码实现

    什么样的是带环单链表 什么样的是不带环单链表 带环单链表就是单链表的尾结点有连接到单链表自身的某一个结点构成了环 首先 我们怎样检测一个单链表是否带环 1 检测单链表是否带环 如果链表不带环 可以通过遍历链表找到尾节点 那如果单链表带环 就
  • iOS进阶_密码学进阶(三.非对称加密算法-RSA公钥私钥的生成)

    应用场景 集成支付宝SDK 会看见 p12文件也有 非对称加密算法 一 运行终端 生成私钥 1 cd Users mac Desktop iOS 加密 2 openssl genrsa out private pem 512 生成私钥 注意
  • [MATLAB]线性方程组求解(雅可比迭代和高斯迭代源码实现)

    本试验取材于中南大学 科学计算与MATLAB语言 直接解法 高斯消去法 列主元消去法 矩阵的三角分解法 1 利用左除运算符的直接解法 Ax b gt x a b 注意 如果矩阵A是奇异的或接近奇异的 则MATLAB会给出警告信息 gt gt