线性方程组的迭代法

    • 用Jacobi迭代法、Gauss-Seidel迭代法求解线性方程组
  • 代码:
  • 实验结果
  • 代码:
  • 实验结果
  • 实验报告

用Jacobi迭代法、Gauss-Seidel迭代法求解线性方程组

代码:

//Jacobimethod.mfunction [x,k]=Jacobimethod(A,b,x0,N,emg)
n=length(A);
x1=zeros(n,1);
x2=zeros(n,1);
x1=x0;k=0;
r=max(abs(b-A*x1));
while r>emgfor i=1:nsum=0;for j=1:nif i~=jsum=sum+A(i,j)*x1(j);endendx2(i)=(b(i)-sum)/A(i,i);endr=max(abs(x2-x1));x1=x2;k=k+1;if k>Ndisp('µü´úʧ°Ü£¬•µ»Ø');return;end
end
x=x1;
k
x

实验结果

A=[-4,1,1,1;1,-4,1,1;1,1,-4,1;1,1,1,-4];
b=[1,1,1,1]’;
x0=[0,0,0,0]’;
[x,k]=Jacobimethod(A,b,x0,100,10^-5);
k =
37
x =
-1.0000
-1.0000
-1.0000
-1.0000

代码:

//Gaussmethod.mfunction [x,k]=Gaussmethod(A,b,x0,N,emg)
n=length(A);
x1=zeros(n,1);
x2=zeros(n,1);
x1=x0;
r=max(abs(b-A*x1));
k=0;
while r>emg
for i=1:nsum=0;for j=1:nif j>isum=sum+A(i,j)*x1(j);elseif j<isum=sum+A(i,j)*x2(j);endendx2(i)=(b(i)-sum)/A(i,i);
end
r=max(abs(x2-x1));
x1=x2;
k=k+1;
if k>Ndisp('µü´úʧ°Ü£¬•µ»Ø');return;
end
end
x=x1;
k
x

实验结果

A=[-4,1,1,1;1,-4,1,1;1,1,-4,1;1,1,1,-4];
b=[1,1,1,1]’;
x0=[0,0,0,0]’;
[x,k]=Gaussmethod(A,b,x0,100,10^-5);
k =
21
x =
-1.0000
-1.0000
-1.0000
-1.0000

实验报告

实验7 线性方程组的迭代法
【实验目的】
用Jacobi迭代法、Gauss-Seidel迭代法求解线性方程组

【实验内容】

  1. 了解MATLAB语言的用法
  2. 用Jacobi迭代法、Gauss-Seidel迭代法求解线性方程组
    【实验所使用的仪器设备与软件平台】
    计算机,MATLAB R2018a
    【实验方法与步骤】
    1、function [x,k]=Jacobimethod(A,b,x0,N,emg)
    2、function [x,k]=Gaussmethod(A,b,x0,N,emg)
    3、用Jacobi迭代法、Gauss-Seidel迭代法求解线性方程组

一、Jacobi迭代法
【实验结果】
( % A是线性方程组的左端矩阵
% b是右端向量
% x0是迭代初值
% N表迭代次数上限,若迭代次数大于N,则迭代失败
% emg是控制精度
%用Jacobi迭代法求线性方程组Ax=b的解
% k表示迭代次数
% x表示用迭代法求得的线性方程组的近似解

定义函数
function [x,k]=Jacobimethod(A,b,x0,N,emg)
n=length(A);
x1=zeros(n,1);
x2=zeros(n,1);
x1=x0;k=0;
r=max(abs(b-A*x1));
while r>emg
for i=1:n
sum=0;
for j=1:n
if i~=j
sum=sum+A(i,j)*x1(j);
end
end
x2(i)=(b(i)-sum)/A(i,i);
end
r=max(abs(x2-x1));
x1=x2;
k=k+1;
if k>N
disp(‘µü´úʧ°Ü£¬•µ»Ø’);
return;
end
end
x=x1;
k
x

二、Gauss-Seidel迭代法
【实验结果】
( % A是线性方程组的左端矩阵
% b是右端向量
% x0是迭代初值
% N表迭代次数上限,若迭代次数大于N,则迭代失败
% emg是控制精度
%用Gauss-seidel迭代法求线性方程组Ax=b的解
% k表示迭代次数
% x表示用迭代法求得的线性方程组的近似解

定义函数
function [x,k]=Gaussmethod(A,b,x0,N,emg)
n=length(A);
x1=zeros(n,1);
x2=zeros(n,1);
x1=x0;
r=max(abs(b-A*x1));
k=0;
while r>emg
for i=1:n
sum=0;
for j=1:n
if j>i
sum=sum+A(i,j)*x1(j);
elseif j<i
sum=sum+A(i,j)*x2(j);
end
end
x2(i)=(b(i)-sum)/A(i,i);
end
r=max(abs(x2-x1));
x1=x2;
k=k+1;
if k>N
disp(‘µü´úʧ°Ü£¬•µ»Ø’);
return;
end
end
x=x1;
k
x

【结果分析与讨论】

数值分析-线性方程组的迭代法相关推荐

  1. 【数理知识】《数值分析》李庆扬老师-第6章-解线性方程组的迭代法

    第5章 回到目录 第7章 第6章-解线性方程组的迭代法 6.1 迭代法的基本概念 6.2 雅可比迭代法与高斯-塞德尔迭代法 6.3 超松弛迭代法 6.4 共轭梯度法 6.1 迭代法的基本概念 6.2 ...

  2. 【数值分析不挂科】第六章 | 线性方程组直接法 迭代法

    文章目录 [第六章:线性方程组直接法 & 迭代法] 1.1 直接法 & Gauss法 1.2 Jaccobi迭代法 1.3 G-S(高斯-赛德尔法) 1.4 SOR迭代法 2.1 算子 ...

  3. 2021-01-07 matlab数值分析 线性方程组的迭代解法 高斯-赛德尔迭代法

    matlab数值分析 线性方程组的迭代解法 高斯-赛德尔迭代法 Function [x,iter]=gs(A,b,tol) D=diag(diag(A)); L=D-tril(A); U=D-triu ...

  4. 科学计算机解多元方程组,南京大学计算机科学与技术系 数值计算方法(第3章)3 向量和矩阵的范数 病态方程组 解线性方程组的迭代法.ppt...

    南京大学计算机科学与技术系 数值计算方法(第3章)3 向量和矩阵的范数 病态方程组 解线性方程组的迭代法.ppt 上传人:ct****5 文档编号:43116102 上传时间:2020-01-21 格 ...

  5. 超松驰迭代法SOR_解线性方程组的迭代法

    超松驰迭代法SOR_解线性方程组的迭代法 标签:计算方法实验 #include <stdio.h> #include <math.h>#define maxn 3int mai ...

  6. 数值分析线性方程组迭代法之SOR迭代法详解及其C语言算法实现

    SOR迭代法,又名逐次超松弛迭代法,与Jacobi迭代法和Guass-Seidel迭代法相比,收敛速度更快其原理如下(想详细了解,可以点击这里数值分析(东北大学)): 1.构造迭代式时,要加上一个大于 ...

  7. 解线性方程组的迭代法

    考虑线性方程组 Ax=b\mathbf{Ax}=\mathbf{b} Ax=b 其中A\mathbf{A}A非奇异 当A\mathbf{A}A是大型稀疏矩阵的时候,用迭代法解比较好 前置知识 谱半径: ...

  8. matlab 矩阵jocobi迭代_第6章 解线性方程组的迭代法(基于MATLAB)

    前面我们已经知道对于线性方程组,一般有两种数值解法:直接法和迭代法.直接法前面已经写过了,没看的同学可以移步阅读:直接法.本次主要讲述迭代法及其相应的MATLAB代码. 考虑线性方程组 当 为低阶稠密 ...

  9. 解线性方程组的迭代法--大型稀疏矩阵---松弛迭代法C++实现

    知识点 案例 伪代码 代码 // 松弛迭代算法 求解线性方程组 /// #include<stdio.h> #include<math.h> #include<iostr ...

  10. 数值分析-雅克比迭代法

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

最新文章

  1. Zookeeper 服务注册与发现02——服务消费者
  2. Java 洛谷 P1319 压缩技术
  3. 在web开发中的三个层次使用事务
  4. eNSP中玩转Python自动化——解锁网工新姿势
  5. 《TCP/IP详解》笔记----第二章 链路层
  6. linux下redis的安装和配置
  7. 时间小知识对于时间转换可能有帮助
  8. linux磁盘写保护怎么修改_linux系统怎么避免u盘被写保护
  9. linux shell ${}简单用法,Linux shell ${}简单用法
  10. 学java还是python还是php-大一的时候学习Python,大二学java好还是php?
  11. 微信跳转浏览器--使用AugPush实现微信跳转手机浏览器
  12. ad如何设置pcb板子形状_板子的造型_ad09在做PCB时如何设计板子的形状啊_彩妆阁...
  13. MOS管耗尽型和增强型的区别是什么呢?
  14. 区块链技术学习路线图,区块链技术教程分享
  15. windows利用diskpart格式化磁盘
  16. 数学笔记25——弧长和曲面面积
  17. MYSQL数据库导出和备份----mysqldump
  18. Java常用类学习笔记
  19. 【环境配置】反向SSH——家中电脑连接校园内网服务器
  20. C++结构体定义及申请空间

热门文章

  1. Java成神之路——技术栈
  2. 万维网联盟(W3C)创立了 WWW 标准
  3. Flask 框架 网页跳转详解。
  4. CenOS7 搭建无人值守安装服务器
  5. 揭秘收入中常见的避税方法
  6. 琵琶行用计算机弹,琵琶行三次弹
  7. LigerUI初学篇---使用LigerUI制作简洁清爽的界面
  8. 阿里云Anolis OS 8.4
  9. Win10上的CPU内存的悬浮窗口
  10. 《Windows》Windows桌面设置