一、实验目的

1.了解求线性方程组的直接法的有关理论和方法;会编制列主元消去法的程序;
2. 熟悉迭代法的有关理论和方法;会编制雅可比迭代法;
3. 掌握所用迭代方法的收敛性及其收敛速度问题。

二、实验题目


2.对于第1题的弹道轨迹抛物线方程,根据已知的三个弹道轨迹经过点(1,6)、(3,5)、(7,2)建立的线性方程组,采用迭代法求解,得到此弹道轨迹抛物线方程。
采用雅可比迭代法求其近似解,并画出解随着迭代次数变化的趋势线(允许的最大迭代次数N,近似解

三、实验原理

1、高斯列主元消去法的精度eps,由用户设定)。(50分)



四、实验内容与结果

实验题目1 (列主元高斯消元法)

1. 程序源码

function [augmentedMatrix,ans] = ColMain(A,b)
%COLMAIN 此处显示有关此函数的摘要
%   此处显示详细说明%常量定义
ZERO = 10^(-15);%增广矩阵
augmentedMatrix = [A b];[row_a,col_a] = size(A);
[row_b,col_b] = size(b);%解
ans = zeros(col_a,1);%先判断A是不是方阵
if row_a ~=col_asprintf('矩阵A不是方阵')return;
end%判断b是否符合要求
if row_b ~= row_asprintf('b的格式为列向量且b的行数和A的行数要相同')return;
end%判断b的行和A的行是否一致
if row_a ~= row_bsprintf('向量b长度必须和矩阵A的行数相等')return;
end%进行消元
for col = 1:col_a-1%找每一列的最大值maxCol = max(abs(augmentedMatrix(col:row_a,col)));%判断A是否为系数矩阵if maxCol < ZEROsprintf('系数矩阵A是奇异矩阵!程序退出!')return;end%进行交换for row = col:col_aif maxCol == ((augmentedMatrix(row,col)))temp = augmentedMatrix(row,:);augmentedMatrix(row,:) = augmentedMatrix(col,:);augmentedMatrix(col,:) = temp;break;endend%执行消元操作for row = col+1:col_a%计算mijmRowCol = (augmentedMatrix(row,col)/augmentedMatrix(col,col));%消元augmentedMatrix(row,:) = augmentedMatrix(row,:)-mRowCol*augmentedMatrix(col,:);end
end%将每个解的系数变为1,就相当于是最后除去系数了
for row = 1:row_aaugmentedMatrix(row,:) = augmentedMatrix(row,:)/augmentedMatrix(row,row);
end%消元后的b
b = augmentedMatrix(:,col_a+1);%回带求解
ans(col_a) = b(col_a);
for row = col_a - 1:-1:1ans(row) = 0;for col = row+1:col_aans(row) = ans(row) + augmentedMatrix(row,col)*ans(col);endans(row) = b(row) - ans(row);
endx = 0:0.1:9;
y = ans(1)+ans(2).*x+ans(3).*x.*x;
plot(x,y);
end

2. 计算结果与分析

结果:

分析:
在进行计算的时候,每次进行消元操作之前都进行了选列主元和交换位置的操作。有效避免了直接高斯消元法存在的主对角线上元素可能为0,导致消元无法继续进行的问题。同时也减小了了因为除数较小导致计算结果受运算过程中的舍入误差较大的影响,提高了算法的稳定性。

实验题目2

采用雅可比迭代法求其近似解,并画出解随着迭代次数变化的趋势线(允许的最大迭代次数N,近似解的精度eps,由用户设定)。

1. 程序源码

function [X,COUNT,ERRORCODE] = Jacobi(A,b,X0, MAXCOUNT)
%JACOBI 此处显示有关此函数的摘要
%   此处显示详细说明%常量定义
%精度
PRECISSION = 10^(-6);%每次迭代的x_0,x_1,x_2,用于画图
x_0 = zeros(1,MAXCOUNT);
x_1 = zeros(1,MAXCOUNT);
x_2 = zeros(1,MAXCOUNT);%统计迭代次数
COUNT = 0;%错误返回值
ERRORCODE = -1; %表示没有错误%计算A和b的行和列
[row_A,col_A] = size(A);
[row_b,col_b] = size(b);X = zeros(col_A,1); %用来存最后的解向量
%temp = zeros(col_A,1);%判断A是否为方阵
if row_A ~= col_AERRORCODE = 0;sprintf('矩阵A不是方阵!')return;
end%判断b是否符合要求
if row_b ~= row_AERRORCODE = 1;sprintf('b的格式为列向量且b的行数和A的行数要相同')return;
endwhile 1for row = 1:row_AX(row) = 0;for col = 1:col_Aif row ~= colX(row) = X(row) + A(row,col) * X0(col);endendX(row) = (b(row) - X(row))/A(row,row);end%计算两次迭代的误差error = max(abs(X - X0));if error <= PRECISSIONbreak;end%更新x0X0 = X;%更新迭代次数COUNT = COUNT + 1;%记录每次迭代的结果x_0(COUNT) = X0(1);x_1(COUNT) = X0(2);x_2(COUNT) = X0(3);%迭代次数不够,不能收敛if COUNT >= MAXCOUNTERRORCODE = 2;sprintf('Jacobian迭代法不收敛!或者迭代次数不够!')break;end
endplot(x_0(1:COUNT),'red+'); %将解向量第1个分量的每次迭代结果画在图上,横坐标是迭代次数,纵坐标是每次迭代的结果
hold on;
plot(x_1(1:COUNT),'red.');
hold on;
plot(x_2(1:COUNT),'blueo');
hold on;
legend('x_0','x_1','x_2');
X = X0;
end

2.计算结果与分析
结果:


分析:
从最终的迭代次数可以看出,在指定最大迭代次数的时候,应该指定一个稍微大一点的数,因为如果指定的最大迭代次数小于收敛所需的迭代次数的时候,会导致还没等到结果收敛,程序就停止了。
另外,从最终的迭代次数可以看出,Jacobi迭代的收敛速度是比较慢的,需要迭代的次数较多。

数值分析实验二 解线性方程组相关推荐

  1. matlab解方程实验,MATLAB实验一解线性方程组的直接法

    MATLAB实验一解线性方程组的直接法 实 验 报 告 课程名称 数值分析 实验项目 解线性方程组的直接法 专业班级 姓 名 学 号 指导教师 成 绩 日 期 月 日 一. 实验目的 1. 掌握程序的 ...

  2. 数值分析复化求积matlab,MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等)...

    1.理解如何在计算机上使用数值方法计算定积近似值; 2.学会复合梯形.复合Simpson和龙贝格求积分公式的编程与应用. 3.探索二重积分在矩形区域的数值积分方法. 佛山科学技术学院 实 验 报 告 ...

  3. 辛普森复合求积公式matlab,MATLAB数值分析实验二(复合梯形、辛普森和龙贝格求积,以及二重积分计算等).doc...

    [摘要]佛山科学技术学院 实 验 报 告 课程名称 数值分析 实验项目 数值积分 专业班级 机械工程 姓 名 余红杰 学 号 2111505010 指导教师 陈剑 成 绩 日 期 月 日 一.实验目的 ...

  4. 数值计算实验2 解线性方程组实验(1)

    文章目录 实验目的: 实验内容: 需要word文件请访问 http://daxs.top 站内搜索实验名称或者实验内容访问文章并且下载附件即可. 实验目的: 进一步熟练掌握用Jacobi迭代法和Gau ...

  5. 数值分析上机题matlab线性方程组,数值分析上机实验报告 - 线性方程组部分实验题1...

    s=A(i,(i+1):n)*x((i+1):n,1); else s=0; end x(i,1)=(b(i)-s)/A(i,i);end %Cholosky分解方法***************** ...

  6. matlab lu分解求线性方程组_计算方法(二)直接三角分解法解线性方程组

    封面是WH2里春希在编辑部的上司麻理前辈,有一说一,这条线的第一次H有点恶趣味,不是很喜欢. 一:概述 矩阵分解我学过的挺多种,比如极分解,谱分解,满秩分解,正交三角分解还有这里的直接三角分解大部分我 ...

  7. 用gauss消去法解线性方程组(数值数学实验教程P74ex5.2)-2021-11-03

    用gauss消去法解线性方程组(数值数学实验教程P74ex5.2) function [x,Ak] =caguss_elimination(A,b,epsilon) %gauss消去法解线性方程组 % ...

  8. 二、解线性方程组的直接方法

    https://zhuanlan.zhihu.com/p/30485749 设 n n n阶线性方程组: { a 11 x 1 + a 12 x 2 + . . . + a 1 n x n = b 1 ...

  9. 计算方法(二)直接三角分解法解线性方程组

    一:概述 矩阵分解我学过的挺多种,比如极分解,谱分解,满秩分解,正交三角分解还有这里的直接三角分解大部分我都没有具体运用的经验.但是这里的三角分解的应用就很直白了,就是把矩阵分解为规律的三角矩阵后,我 ...

最新文章

  1. 观点速递:大模型落地产业,存在什么问题?
  2. [HOW TO]-下载android官方源码
  3. Jenkins与网站代码上线解决方案
  4. fpga运算服务器_一张图了解CPU、GPU、ASIC、FPGA性能、功耗效率、灵活性
  5. java中list()和listfile()
  6. java实现封装的三步是_JAVA基础-封装
  7. MySQL给新建用户并赋予权限
  8. Java基础复习笔记系列 七 IO操作
  9. 【codevs1907】【方格取数3】二分图最大带权独立集
  10. 【转】.NET对象序列化2
  11. jQuery源码解析(30)
  12. 淘宝API常用接口列表与申请方式
  13. “银行卡三要素验证”—派遣工工资表单零差错
  14. windows 许可证即将过期,解决方案
  15. 物联网安全综述报告之感知层认证机制
  16. 微分方程模型_MIT—微分方程笔记03 一阶线性常微分方程解法
  17. iOS依赖注入框架系列(一):介绍Typhoon
  18. 洛谷P2306 被yyh虐的mzc
  19. Loda Button
  20. cpua55和a53哪个好_oppoa53和a55区别哪个好

热门文章

  1. vulkan学习笔记二十二
  2. 计算机综合考试考什么,计算机考博综合考试考什么
  3. [网站搭建] 最快捷一键网站上线 phpStudy_64 + wordpress-5.2.2.zip
  4. STM32F4 读写 AT24C512问题
  5. 威纶通触摸屏一机多屏程序 威纶通触摸屏一机多屏程序
  6. 在Tensorflow 1.14和1.15 中如何使用LBFGS优化方法
  7. 3264位APP地址空间
  8. 本科计算机科学与计算机论文答辩,本科计算机专业毕业论文答辩是怎样的
  9. 良心安利SolidEdge 3d模型素材
  10. 树莓派学习笔记——crontab定时运行脚本