解线性方程组(二)

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

实验目的:进一步熟练掌握用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.xdnf.cn/news/6665.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

跨境电商营销:Pinterest的5个便捷营销工具

Pinterest是消费者寻找创意灵感的首选平台之一&#xff0c;同时&#xff0c;根据Global Web Index的调查数据&#xff0c;人们使用Pinterest的首要原因是寻找新产品和品牌&#xff0c;这意味着用户在使用Pinterest时已经有消费意愿和倾向。 因此&#xff0c;让更多目标受众注意…

JAVA基础:多重循环、方法、递归 (习题笔记)

一&#xff0c;编码题 1.打印九九乘法表 import java.util.*;public class PanTi {public static void main(String[] args) {Scanner input new Scanner(System.in);for (int i 0; i < 9; i) {//i控制行数/* System.out.println("。\t。\t。\t。\t。\t。\t。\t。\…

小林渗透入门:burpsuite+proxifier抓取小程序流量

目录 前提&#xff1a; 代理&#xff1a; proxifier&#xff1a; 步骤&#xff1a; bp证书安装 bp设置代理端口&#xff1a; proxifier设置规则&#xff1a; proxifier应用规则&#xff1a; 结果&#xff1a; 前提&#xff1a; 在介绍这两个工具具体实现方法之前&#xff0…

[笔记] Centos7 安装 Docker 和 Docker Compose 及 Docker 命令大全

Docker 和 Docker Compose 是相辅相成的工具&#xff0c;它们共同提供了一个强大的容器化解决方案。Docker 提供了容器化的基础功能&#xff0c;而 Docker Compose 则提供了更高级的编排和管理能力&#xff0c;使得部署和管理多个容器变得更加容易和高效。 Docker&#xff1a;…

el-message 同时弹出多个【改写el-message】

因为服务断开了 但是拦截器里对每个失败的接口都做了message弹出&#xff0c;因此改写el-message逻辑&#xff0c;仅展示一个同等类型的message窗体 1. 新建 /utils/rewriteElMessage.js /*** Event 解决 el-message 同类型重复打开的问题* description:* author: mhf* time:…

SSM宿舍管理系统-计算机毕业设计源码03732

目 录 1 绪论 1.1研究背景 1.2开发现状 1.3研究内容 1.4论文结构与章节安排 2 宿舍管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 …

淘宝商品描述,一键“爬”回家 —— Java爬虫的奇妙冒险

引言&#xff1a; 在这个信息爆炸的时代&#xff0c;我们每天都在被各种商品信息轰炸。你是否曾想过&#xff0c;如何能快速、准确地获取淘宝商品的描述信息&#xff1f;今天&#xff0c;就让我们一起开启一段Java爬虫的奇妙冒险&#xff0c;探索如何通过代码一键“爬”取淘宝…

线性代数:Matrix2x2和Matrix3x3

今天整理自己的框架代码&#xff0c;将Matrix2x2和Matrix3x3给扩展了一下&#xff0c;发现网上unity数学计算相关挺少的&#xff0c;所以记录一下。 首先扩展Matrix2x2&#xff1a; using System.Collections; using System.Collections.Generic; using Unity.Mathemati…

windows在两台机器上测试 MySQL 集群实现实时备份

在两台机器上测试 MySQL 集群实现实时备份的基本步骤&#xff1a; 一、环境准备 机器配置 确保两台机器&#xff08;假设为服务器 A 和服务器 B&#xff09;能够互相通信&#xff0c;例如它们在同一个局域网内&#xff0c;并且开放了 MySQL 通信所需的端口&#xff08;默认是 …

【stm32】RTC时钟的介绍与使用

RTC时钟的介绍与使用 一、时间戳1、Unix时间戳2、UTC/GMT3、时间戳转换 二、BKP简介及代码编写1、BKP简介2、BKP基本结构3、BKP库函数介绍&#xff1a;4、程序编写&#xff1a; 三、RTC简介及代码编写1、RTC简介2、RTC框图2、RTC基本结构3、RTC相关库函数介绍&#xff1a;4、程…

界面控件DevExpress JS ASP.NET Core v24.1亮点 - 支持Angular 18

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合&#xff0c;使您可以利用现代Web开发堆栈&#xff08;包括React&#xff0c;Angular&#xff0c;ASP.NET Core&#xff0c;jQuery&#xff0c;Knockout等&#xff09;构建交互式的Web应用程序。从Angular和Reac&#xff0c…

如何检索 LINEMOD 数据集的相机内参

简介 BOP (Benchmark for 6D Object Pose Estimation) 是一个专为6D物体姿态估计而设计的基准测试平台。它为研究人员提供了多种数据集&#xff0c;以帮助评估和比较物体识别和姿态估计算法的性能。官方网站是 BOP&#xff0c;你可以在这里找到丰富的资源和信息。 检索 LINEM…

机器学习与数据挖掘_使用梯度下降法训练线性回归模型

目录 实验内容 实验步骤 1. 导入必要的库 2. 加载数据并绘制散点图 3. 设置模型的超参数 4. 实现梯度下降算法 5. 打印训练后的参数和损失值 6. 绘制损失函数随迭代次数的变化图 7. 绘制线性回归拟合曲线 8. 基于训练好的模型进行新样本预测 实验代码 实验结果 实验…

web——sqliabs靶场——第一关

今天开始搞这个靶场&#xff0c;从小白开始一点点学习,加油&#xff01;&#xff01;&#xff01;&#xff01; 1.搭建靶场 注意点&#xff1a;1.php的版本问题&#xff0c;要用老版本 2.小p要先改数据库的密码&#xff0c;否则一直显示链接不上数据库 2.第一道题&#xff0…

Xamarin 实现播放视频 MP4

我的想法是在App启动时播放一段视频&#xff0c;实现方式如下&#xff1a; 准备一个视频&#xff1a; Logo.mp4 添加到资源中&#xff1a;Assets 然后将资源设置为 AndroidAsset 启动时&#xff0c;将资源文件拷贝到程序目录的files下&#xff1a; protected override void On…

4070显卡只要一毛钱?这个双十一太疯狂了

2024年双十一大战正酣&#xff0c;各大商家使尽浑身解数&#xff0c;奇招频出&#xff0c;真是让人看得目瞪口呆。每日口令红包、攒火力值领裂变红包、限时抢免定金红包……还有各类满减和打折优惠活动&#xff0c;玩法千奇百怪&#xff0c;算来算去索性放弃&#xff0c;真是没…

C++优选算法四 前缀和

前缀和算法是一种常用的优化技术&#xff0c;主要用于加速某些涉及连续子数组或子序列求和的问题。 一、定义与原理 定义&#xff1a;前缀和是指数组中某个位置之前&#xff08;包括该位置&#xff09;所有元素的和。前缀和算法则是通过提前计算并存储这些前缀和&#xff0c;…

yum安装指定版本Redis

一&#xff0c;yum安装Redis 1&#xff0c;列出可用的redis版本 yum --showduplicates list redis 只有5.0.3.5版本&#xff0c;如果已经满足需求&#xff0c;可以直接安装 2&#xff0c;安装redis yum -y install 如果显示installed&#xff0c; 说明安装成功了 也可以通过…

DAY21|二叉树Part08|LeetCode: 669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

目录 LeetCode: 669. 修剪二叉搜索树 基本思路 C代码 LeetCode: 108.将有序数组转换为二叉搜索树 基本思路 C代码 LeetCode: 538.把二叉搜索树转换为累加树 基本思路 C代码 LeetCode: 669. 修剪二叉搜索树 力扣代码链接 文字讲解&#xff1a;LeetCode: 669. 修剪二叉搜…