解线性方程组(二)

实验类型:●验证性实验  ○综合性实验  ○设计性实验

实验目的:进一步熟练掌握用Jacobi迭代法和Gauss-Seidel法解线性方程组的算法,提高编程能力和解算线性方程组问题的实践技能。

实验内容:

1)取初值性x(0)=(0,0,0,0)T, 精度要求ε=10-6用Jacobi迭代法解线性方程组

2)取初值性x(0)=(0,0,0,0)T, 精度要求ε=10-6用Gaoss-Seidel迭代法解线性方程组

实验原理:Jacobi迭代算法,Gaoss-Seidel迭代算法。

实验任务及说明:

  1. 从一般迭代法收敛性理论上分析并讨论1)、2)两个问题所选用的迭代方法是否收敛,若分析过程涉及到四次代数方程求根可用Matlab的roots函数求多项式的根,请将分析、讨论过程及收敛性结论写在规格为A4的打印纸上。   
  2. 分别用Jacobi迭代算法,Gaoss-Seidel迭代算法手工解算1)、2)两个问题的线性方程组,清楚的写出迭代公式,要求严格按照算法步骤手工计算,其中间计算结果保留五位小数,手工迭代至少迭代三步,计算出X(1),X(2),X(3),请将手工计算过程写在规格为A4的打印纸上,对计算过程进行总结和梳理后在A4纸上分别手工画出Jacobi迭代算法,Gaoss-Seidel迭代算法的程序设计流程图(提示:算法开始或结束--用椭圆框;类似赋值语句(算法公式)的执行处理--用矩形框,赋值语句(算法公式)写在矩形框内;条件判断---用菱形框,条件判断表达式写在菱形框里,条件判断必须有两个出口即两个流出的流程线在流出的流程线傍边要清楚的标出Yes或No)。
  3. 用Matlab编写程序上机计算并输出中间结果(可参考马昌凤柯艺芬编著的数值计算方法(MATLAB版) ,科学出版社2020.11.  Page49,Page51 );请将算法流程图(使用Word画图)、程序代码、调试截图记录、输入数据截图记录、输出的中间结果截图记录及最终计算的结果截图记录等作为实验报告内容编排成word文档,然在规格为A4的打印纸双面打印实验报告中的word文档的文字采用宋体5号,单倍行距,报告中截图上的文字不得小于宋体六号,截图文字的字迹必须清晰可见!
  4. 请在实验报告中验证计算机程序迭代计算的前三步近似解向量X(1),X(2),X(3)与手工迭代计算的前三步近似解向量X(1),X(2),X(3)是否一致,要求将手工计算的前三步结果和计算机程序计算的前三步结果列表对比,经过对比分析在列表后的文档中清楚给出是否一致的验证结论
  5. 纸质版实验报告装订顺序:①实验任务(本文档版式不得做任何改动);②实验报告正文(Word文档);③写在A4纸上的手工分析与计算(也可以将A4纸上详细手工分析与计算过程拍照成JPG图片插入在实验报告的word 电子版中随Word文档双面打印)。

实验步骤

  1. 要求上机实验前先进行算法收敛性分析并手工计算、对手工计算进行总结后画出流程图,再编写出程序代码;
  2. 编辑录入程序;
  3. 记录运行时的输入(截图)和输出(截图)。调试程序并记录调试过程中出现的问题(截图)及修改程序的过程(截图);
  4. 经反复调试后,运行程序并验证程序运行是否正确,必须明确写出分析对比过程及验证结论

  

实验报告:根据实验情况和结果撰写并递交实验报告(含手工分析与计算)。

实验总结:(学会了......; 掌握了......; 训练了......; 发现了......; 今后学习中......有待提高。)

程序代码

电子报告word文件命名规则:专业班级-完整学号-实验X-姓名.doc, 如信息123班学号为201212030315的郭海涛同学实验2报告word文件命名则应是:信息123-201212030315-实验2-郭海涛.doc, 其中 .doc是Word文件扩展名

特别提醒:学委负责检查电子文件命名规范,命名不规的将不接收。每人必需提交电子报告和纸质报告各一份(两者内容一致,纸质版实验报告要求用A4纸张双面打印,按规定的装订顺序装订)。本实验任务书版式不得做任何改动。电子报告以班为单位提交压缩包.

问题一:

手写算法迭过程及判断是否收敛过程

流程图:

算法流程图:

程序设计流程图:

程序代码:

function [y,n]=Jacobi(A,b,x0,ep)

A=[14 4 4 4;4 14 4 4;4 4 14 4;4 4 4 14];

b=[-4;16;36;56];

x0=[0;0;0;0];

% epslion为误差值

epslion=1.0000e-06;

% N为自己设置的迭代次数

N=100;

L=tril(A,-1); %L为A的单位下三角矩阵

D=diag(diag(A)); %D为A的对角矩阵

U=triu(A,1); %U为A的上三角矩阵

B=-D\(L+U); %B为迭代矩阵

g=D\b;error=1;n=0;

for i=1:N

while error>epslion && n<N

y=x0;x0=B*x0+g;error=norm(y-x0,inf);

if error>epslion

n=n+1;

fprintf('第%d次jacobi迭代结果为:',n)

disp(x0);

fprintf('第%d次迭代结果的误差为:\n',n);disp(error)

break

end

if error<=epslion

n=n+1;fprintf('第%d次jacobi迭代结果为:',n)

disp(x0);fprintf('第%d次迭代结果的误差为:\n',n);disp(error);

fprintf('该方程组的jacobi迭代法的最小迭代次数为:')

disp(n);break

end

end

end

end

运行时的输入和输出:

手工计算结果与程序运行结果对比:

变量

X1(k)

X2(k)

X3(k)

X4(k)

迭代次数

手算

Matlab

手算

Matlab

手算

Matlab

手算

Matlab

0

0

0

0

0

0

0

0

0

1

-0.28571

-0.2857

1.14286

1.1429

2.57143

2.5714

4.00000

4.0000

2

-2.48980

-2.4898

-0.65306

-0.6531

1.18367

1.1837

3.02041

3.0204

3

-1.30029

-1.3003

0.65306

0.6531

2.60641

2.6064

4.55977

4.5598

手工计算过程中保留五位小数,matlab程序中保留的是四位小数,将我手工计算的结果保留四位小数和matlab的结果比对后完全一致。

问题2:

手写算法迭过程及判断是否收敛过程
省略

程序代码:

function x=Gauss_Seidel_fun(A,b,n,x0,tol,N)

x=zeros(n,1);  % 给x赋值

k=-1;

while k<N

for i=1:n

if i==1

x(1)=(b(1)-A(1,2:n)*x0(2:n))/A(1,1);

elseif i==n

x(n)=(b(n)-A(n,1:n-1)*x(1:n-1))/A(n,n);

else

x(i)=(b(i)-A(i,1:i-1)*x(1:i-1)-A(i,i+1:n)*x0(i+1:n))/A(i,i);

end

end

if norm(x-x0)<tol

break;

end

x0=x;k=k+1;

disp(['when k=',num2str(k)]);

disp('x=');disp(x);                       %输出中间结果

end

if k==N

disp('迭代次数已到达上限!');

end

disp(['迭代次数 k=',num2str(k)])

end

运行时的输入和输出:

手工计算结果与程序运行结果对比:

变量

X1(k)

X2(k)

X3(k)

X4(k)

迭代次数

手算

Matlab

手算

Matlab

手算

Matlab

手算

Matlab

0

0

0

0

0

0

0

0

0

1

-2.66667

-2.6667

0.05556

0.0556

0.89815

0.8981

4.35725

4.3573

2

-1.77225

-1.7722

0.64258

0.6426

2.59747

2.5975

4.62232

4.6223

3

-1.35627

-1.2492

0.87560

0.8935

2.79399

2.8725

4.69278

4.7248

手工计算过程中保留五位小数,matlab程序中保留的是四位小数,将我手工计算的结果保留四位小数和matlab的结果比对后在k=0和k=1时完全一致,在k=3时有出入。

实验总结:

学会了另外两种迭代方法:Jacobi迭代法和Gauss-Seidel法求解线性方程组,以及如何判断算法收敛; 掌握了这两种迭代方法的求解迭代过程以及word画流程图,还有这两种算法在面对同一个线性方程组的优势; 训练了function函数的使用以及在纸上解题的能力和独立思考以及自学能力,还有独立编程并实现这两种算法的能力; 今后学习中对于算法框图的构建以及程序设计框图的展现还有待提高。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/469145.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ReactPress系列—NestJS 服务端开发流程简介

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎提出宝贵的建议&#xff0c;感谢Star。 NestJS 服务端开发流程简介 NestJS 是一个用于构建高效、可靠和可扩展的服务器端应用程序的框架。它使用 TypeScript&#xff08;但也支持纯 Java…

ImportError: cannot import name ‘packaging‘ from ‘pkg_resources‘ 的参考解决方法

文章目录 写在前面一、问题描述二、解决方法参考链接 写在前面 自己的测试环境&#xff1a; Ubuntu20.04 ROS-Noetic 一、问题描述 自己在通过 pip install 安装module时 &#xff08;使用的是 pip install mmcv&#xff09;遇到如下问题&#xff1a; ImportError: cannot …

运维人员必备的 Mac Zsh 配置技巧

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Flume学习

一、Flume概述 Flume最主要的作用就是&#xff0c;实时读取服务器本地磁盘的数据&#xff0c;将数据写入到HDFS。 二、Flume基础架构 三、Flume安装部署 配置Flume的前提是要配置好JDK和Hadoop 1.解压 [rootlxm148 soft]# tar -zxvf ./apache-flume-1.9.0-bin.tar.gz -C /…

FBX福币交易所多只高位股重挫,聚星科技首日高开348%

查查配分析11月11日电 周一,A股三大指数集体低开,沪指低开0.58%,深成指低开0.67%,创业板指低开0.99%。 FBX福币凭借用户友好的界面和对透明度的承诺,迅速在加密货币市场中崭露头角,成为广大用户信赖的平台。 Wind截图 券商股明显回调,大消费普遍走低,乳业、白酒、文旅板块跌幅…

基于matlab的人眼开度识别

我国已经成为世界汽车生产和制造大国&#xff0c;道路车辆的不断增加道路基础设施不断增强&#xff0c;但是随之而来的问题也日益严重&#xff0c;比如交通事故&#xff0c;噪声大气污染等。汽车行驶的安全性由于关乎人民生命安全&#xff0c;所以日益受到各国政府以及研究机构…

【数据分享】2024年我国省市县三级的生活服务设施数量(46类设施/Excel/Shp格式)

人才市场、售票处、旅行社等生活服务设施的配置情况是一个城市公共基础设施完善程度的重要体现&#xff0c;一个城市生活服务设施种类越丰富&#xff0c;数量越多&#xff0c;通常能表示这个城市的公共服务水平越高&#xff01; 本次我们为大家带来的是我国各省份、各地级市、…

Node.js——fs模块-文件夹操作

1、借助Node.js的能力&#xff0c;我们可以对文件夹进行创建、读取、删除等操作 2、方法 方法 说明 mkdir/mkdirSync 创建文件夹 readdir/readdirSync 读取文件夹 rmdir/rmdirSync 删除文件夹 3、语法 其余的方法语法类似 本文的分享到此结束&#xff0c;欢迎大家评论区…

C++builder中的人工智能(21):Barabási–Albert model(BA)模型

在此之前&#xff0c;大多数网络被想当然的认为是随机的&#xff0c;因此连接度分布可以近似用泊松分布来表示&#xff0c;而巴拉巴西与其学生阿尔伯特、郑浩雄通过对万维网度分布测量的结果却显示万维网度分布服从幂律分布&#xff0c;存在枢纽节点&#xff08;拥有大量链接的…

ReactPress 安装指南:从 MySQL 安装到项目启动

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎Star。 ReactPress 是一个基于 React 的开源发布平台&#xff0c;适用于搭建博客、网站或内容管理系统&#xff08;CMS&#xff09;。本文将详细介绍如何安装 ReactPress&#xff0c;包括…

从0开始深度学习(25)——多输入多输出通道

之前我们都只研究了一个通道的情况&#xff08;二值图、灰度图&#xff09;&#xff0c;但实际情况中很多是彩色图像&#xff0c;即有标准的RGB三通道图片&#xff0c;本节将更深入地研究具有多输入和多输出通道的卷积核。 1 多输入通道 当输入包含多个通道时&#xff0c;需要…

【C++笔记】C++三大特性之继承

【C笔记】C三大特性之继承 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】C三大特性之继承前言一.继承的概念及定义1.1 继承的概念1.2继承的定义1.3继承基类成员访问方式的变化1.4继承类模板 二.基类和派生类间的转…

【Unity】Game Framework框架学习使用

前言 之前用过一段时间的Game Framework框架&#xff0c;后来有那么一段时间都做定制小软件&#xff0c;框架就没再怎么使用了。 现在要做大型项目了&#xff0c;感觉还是用框架好一些。于是又把Game Framework拾起来了。 这篇文章主要是讲Game Framework这个框架是怎么用的…

Ubuntu 22 安装 Apache Doris 3.0.3 笔记

Ubuntu 22 安装 Apache Doris 3.0.3 笔记 1. 环境准备 Doris 需要 Java 17 作为运行环境&#xff0c;所以首先需要安装 Java 17。 sudo apt-get install openjdk-17-jdk -y sudo update-alternatives --config java在安装 Java 17 后&#xff0c;可以通过 sudo update-alter…

【Web前端】从回调到现代Promise与Async/Await

异步编程是一种让程序能够在等待某些操作完成的同时继续执行其他任务的关键技术&#xff0c;打破了传统编程中顺序执行代码的束缚。这种编程范式允许开发者构建出能够即时响应用户操作、高效处理网络请求和资源加载的应用程序。通过异步编程&#xff0c;JavaScript 能够在执行耗…

文心一言 VS 讯飞星火 VS chatgpt (388)-- 算法导论24.5 8题

八、设 G ( V , E ) G(V,E) G(V,E) 为一个带权重的有向图&#xff0c;且包含一个可以从源结点 s s s 到达的权重为负值的环路。请说明如何构造一个 G G G 的边的松弛操作的无限序列&#xff0c;使得每一步松弛操作都能对某一个最短路径估计值进行更新。如果要写代码&#x…

uni-app资源管理与图标使用全解

uni-app 框架与资源路径 不需要专门去学习小程序的语法&#xff0c;uni-app使用的是vue的语法&#xff0c;不是小程序自定义的语法。 搜索框&#xff1a;有疑问直接搜索框输入&#xff0c;BUG直接复制错误提示粘贴上去搜索。 介绍&#xff1a;先看这个页面&#xff0c;就知道u…

大数据新视界 -- 大数据大厂之 Impala 性能优化:数据加载策略如何决定分析速度(上)(15/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

Java:JVM

1.JVM内存区域的划分 一个Java写的程序跑起来,就得到了一个Java进程 JVM 上面运行的字节码指令; 进程:操作系统资源分配的基本单位; 内存区域的划分: 1.程序计数器 在内存空间里(比较小的空间),保存了下一个要执行的指令的内存地址(元数据区的地址); 这里的"下一条…

阿里公告:停止 EasyExcel 更新与维护

最近&#xff0c;阿里发布公告通知&#xff0c;将停止对知名 Java Excel 工具库 EasyExcel 的更新和维护。EasyExcel 由阿里巴巴开源&#xff0c;作者是玉箫&#xff0c;在 GitHub 上拥有 30k stars、7.5k forks 的高人气。 据悉&#xff0c;EasyExcel 作者玉箫去年已从阿里离…