已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科课程设计(报告)数值分析课程设计院 (系) 专 业 学生姓名 学 号 任课教师 谢波 完成日期 设计题二线性方程组求解迭代法 比较Jacobi方法和G-S方法用于方程1、 设计思路 Jacobi方法输入矩阵A,向量b,初值x0,eps 计算D,L,R 计算B,g 计算x1 = B*x0+g while norm(x1-x0,inf)eps x0 = x1 k = k + 1 x1 = B*x0+g 输出k,x1 G-S方法输入矩阵A,向量b,初值x0,eps 计算D,L,R 计算B,g 计算x1 = B*x0 + g while norm(x1-x0,inf)eps x0 = x1 k = k + 1 x1 = B*x0 + g 输出k,x1 2、程序清单 Jacobi函数function x1=jacobi(A,b)D0 = diag(A); D = diag(D0);%提取对角线元素R = triu(A,1); L = tril(A,-1)%矩阵的三角分解BJ = inv(D)*(-L-R);g = inv(D)*b%迭代矩阵的构造norm(BJ, inf);x0 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; x1 = BJ*x0 + g;k = 1;while norm(x1-x0,inf)0.001%控制循环的语句 x0 = x1; k = k + 1 x1 = BJ*x0 + gend相应的命令代码A=5,-2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;-2,5,-2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;1,-2,5,-2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;0,1,-2,5,-2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0;0,0,1,-2,5,-2,1,0,0,0,0,0,0,0,0,0,0,0,0,0;0,0,0,1,-2,5,-2,1,0,0,0,0,0,0,0,0,0,0,0,0;0,0,0,0,1,-2,5,-2,1,0,0,0,0,0,0,0,0,0,0,0;0,0,0,0,0,1,-2,5,-2,1,0,0,0,0,0,0,0,0,0,0;0,0,0,0,0,0,1,-2,5,-2,1,0,0,0,0,0,0,0,0,0;0,0,0,0,0,0,0,1,-2,5,-2,1,0,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0,1,-2,5,-2,1,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0,0,1,-2,5,-2,1,0,0,0,0,0,0;0,0,0,0,0,0,0,0,0,0,1,-2,5,-2,1,0,0,0,0,0;0,0,0,0,0,0,0,0,0,0,0,1,-2,5,-2,1,0,0,0,0;0,0,0,0,0,0,0,0,0,0,0,0,1,-2,5,-2,1,0,0,0;0,0,0,0,0,0,0,0,0,0,0,0,0,1,-2,5,-2,1,0,0;0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-2,5,-2,1,0;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-2,5,-2,1;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-2,5,-2; 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-2,5;b=1; 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;jacobi(A,b)G-S函数function x1=GS(A,b)D0 = diag(A);D = diag(D0); %提取对角线元素R = triu(A,1);L = tril(A,-1);%矩阵的三角分解BS =- inv(D + L)*R;g = inv(D + L)*b;%迭代矩阵的构造norm(BS, inf)x0 = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; x1 = BS*x0 + g;k = 1;while norm(x1-x0,inf)0.001%控制循环的语句 x0 = x1; k = k + 1 x1 = BS*x0 + gend相应的命令代码A=5,-2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;-2,5,-2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;1,-2,5,-2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;0,1,-2,5,-2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0;0,0,1,-2,5,-2,1,0,0,0,0,0,0,0,0,0,0,0,0,0;0,0,0,1,-2,5,-2,1,0,0,0,0,0,0,0,0,0,0,0,0;0,0,0,0,1,-2,5,-2,1,0,0,0,0,0,0,0,0,0,0,0;0,0,0,0,0,1,-2,5,-2,1,0,0,0,0,0,0,0,0,0,0;0,0,0,0,0,0,1,-2,5,-2,1,0,0,0,0,0,0,0,0,0;0,0,0,0,0,0,0,1,-2,5,-2,1,0,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0,1,-2,5,-2,1,0,0,0,0,0,0,0;0,0,0,0,0,0,0,0,0,1,-2,5,-2,1,0,0,0,0,0,0;0,0,0,0,0,0,0,0,0,0,1,-2,5,-2,1,0,0,0,0,0;0,0,0,0,0,0,0,0,0,0,0,1,-2,5,-2,1,0,0,0,0;0,0,0,0,0,0,0,0,0,0,0,0,1,-2,5,-2,1,0,0,0;0,0,0,0,0,0,0,0,0,0,0,0,0,1,-2,5,-2,1,0,0;0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-2,5,-2,1,0;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-2,5,-2,1;0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-2,5,-2; 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,-2,5;b=1; 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;GS(A,b)3、程序运行操作过程与输出结果Jacobi方法G-S方法 设计题三 非线性方程求解 比较二分法,不动点迭代法以及牛顿迭代法应用于非线性方程在区间【3,4】1、设计思路二分法输入求根取间和误差控制量,定义函数. 如果 ,转;否则退出选用其它求根方法 当时,计算中点以及的值; 分情况处理 :停止计算,转 :修正区间 :修正区间 输出近似根不动点迭代法给定初始值,为根的容许误差,为的容许误差,为迭代次数的容许值.如果迭代次数大于,则算法失败,结束;否则执行 计算 若,则输出,程序结束;否则执行 令,转向牛顿迭代法给定初始值,为根的容许误差,为的容许误差,为迭代次数的容许值. 如果或迭代次数大于,则算法失败,结束;否则执行 计算 若或,则输出,程序结束;否则执行 令,转向2、程序清单二分法function x,n=two(a,b,e) %e为误差控制量,【a,b】为求根区间%x=two(f,a,b,e) if f(a)*f(b)=0 return end n=0; while abs(a-b)e x=(a+b)/2; y=f(x); if abs(y)e return end if f(a)*f(x)0 %区间修正 b=x; end if f(x)*f(b)0 %区间修正 a=x; end n=n+1; end n相应的命令代码a=3;b=4;e=1e-5;x,n=twonew(a,b,e)不动点迭代法function x,n=budongdian(x0,e,N) %x=newton(e,et,n), e为根容许误差,N为控制迭代次数的允许值n=0; while n=N x1=log(3*x02); if abs(x1-x0)e x=x1; return end x0=x1; n=n+1;end相应的命令代码e=1e-5;N=100;x,n=budongdian(3.7,e,N)牛顿迭代法function x,n=newton(x0,e,et,N) %x=newton(e,et,n), e为根容许误差,et为函数值容许误差,N为控制迭代次数的允许值n=0; while fdiff(x0)=0|n=N x1=x0-f(x0)/fdiff(x0); if abs(x1-x0)e|abs(f(x1)N时,输出数组,否则,返回隐式欧拉公式n=0, k=0,执行当kN且时,输出数组,否则执行,k=k+1用数组存储、执行、当nN时,输出数组,否则,返回中点公式公式n=0, k=0,执行当kN且时,输出数组,否则执行,k=k+1用数组存储、执行、当nN时,输出数组,否则,返回四阶Runge-Kutta方法n=0执行用数组存储、执行、当nN时,输出数组,否则,返回2、程序清单显式欧拉公式function G=xeuler(x0,y0,h,N) %定义显式欧拉公式函数n=0; F=zeros(n+1,1);G=zeros(n+1,1);while n=N %循环体 x1=x0+h*(x0-x0*y0); y1=y0+h*(x0*y0-2*y0); F(n+1)=x1; G(n+1)=y1; n=n+1; x0=x1; y0=y1;end相应的命令代码xeuler(3,2,0.1,100)隐式欧拉公式function F=yeuler(x0,y0,h,N) %定义隐式欧拉公式函数k=0;n=0;F=zeros(n+1,1);G=zeros(n+1,1);while n=N x1=x0+h*(x0-x0*y0); y1=y0+h*(x0*y0-2*y0); while k=N %N值愈大,误差越小 x1=x0+h*(x1-x1*y1); y1=y0+h*(x1*y1-2*y1); k=k+1; end F(n+1,1)=x1; G(n+1,1)=y1; x0=x1; y0=y1; n=n+1;end相应的命令代码yeuler(3,2,0.1,100)中点公式公式function G=tixing(x0,y0,h,N) %定义中点公式函数n=0;k=0;F=zeros(n+1,1);G=zeros(n+1,1);while n=N x1=x0+h*(x0-x0*y0); y1=y0+h*(x0*y0-2*y0); while k=N %N值愈大,误差越小 x1=x0+0.5*h*(x0-x0*y0+x1-x1*y1); y1=y0+0.5*h*(x0*y0-2*y0+x1*y1-2*y1); k=k+1; end F(n+1,1)=x1; G(n+1,1)=y1; x0=x1; y0=y1; n=n+1;end相应的命令代码tixing(3,2,0.1,100)四阶Runge-Kutta方法function G=four(x0,y0,h,N) %定义四阶Runge-Kutta公式函数n=0; F=zeros(n+1,1);G=zeros(n+1,1);while n=N k1=x0-x0*y0; l1=x0*y0-2*y0; k2=(x0+0.5*h*k1)-(x0+0.5*h*k1)*(y0+0.5*h*l1); l2=(x0+0.5*h*k1)*(y0+0.5*h*l1)-2*(y0+0.5*h*l1); k3=(x0+0.5*h*k2)-(x0+0.5*h*k2)*(y0+0.5*h*l2); l3=(x0+0.5*h*k2)*(y0+0.5*h*l2)-2*(y0+0.5*h*l2); k4=(x0+h*k3)-(x0+h*k3)*(y0+h*l3); l4=(x0+h*k3)*(y0+h*l3)-2*(y0+h*l3); x1=x0+h/6*(k1+2*k2+2*k3+k4); y1=y0+h/6*(l1+2*l2+2*l3+l4); F(n+1)=x1; G(n+1)=y1; n=n+1; x0=x1; y0=y1;end相应的命令代码tixing(3,2,0.1,100)3、程序运行操作过程与输出结果 显式欧拉公式隐式欧拉公式中点公式四阶Runge-Kutta方法计算过程与结果的分析及各设计的优缺点在设计题二中,Jacoobi方法要比G-S迭代法迭代次数大很多,可见G-S方法相对于Jacoobi迭代来说是一种收敛性较快的方法。在设计题三中,可以从结果中看到,要达到预计的精度,二分法迭代17次,不动点迭代法迭代12次,而newton迭代法只迭代了2次,因此,相对于二分法和一般的不动点迭代法来说,newton迭代法作为一种改进的特殊的不动点迭代法,其在运算次数上有很明显的优势。设计题五中,通过自己编的复化梯形公式和复化辛普森公式计算的结果来看,二者的计算结果是十分接近的,再与概率论课本附录里面的标准结果对比,所显现的误差也是很小的,因此认为这两个程序在计算微积分方面有一定的精度。设计题六,这在四道题中设计题六应该是最难的一道了,因为题中没有给初值和步长,我们能做的只是确保结果的稳定性和收敛性。四种方法绘出的曲线具有相同的性质,因此曲线应该是正确的。满意之处,由于实现查了相关的matlab中自带的一些函数,所以有些程序变得较为简短精炼,比如说设计题二。另外,在不同的设计题中,尝试用了不同的语句声明、调用了函数,使得在语句丰富的同时也让自己更好的掌握了matlab编程语言。需要改进的地方,在设计题二中G-S迭代方法计算得的结果最后逐渐收敛于0,结果存在明显的误差,而Jacoobi方法由于迭代次数过多后面出现了NAN(not a number)的情况,具体的原因自己还没有搞清楚,希望以后后时间可以通过请教老师和同学把相关想问题解决掉。在第六题中,由于题中没有给出初值和步长,因此我们应该不断的给出步长和初值来寻找该微分方程组的不动点,由于时间显示,我只是代了一个初值进去画出了函数的解的曲线,希望以后有时间可以带入不同是数值以找出方程组的不动点。心得体会 由于时间安排不是很紧凑,此次课程设计作业一共花去差不多一个礼拜左右的时间,先看完了课本上的相关内容,然后开始着手完成,期间有自己靠不断摸索完成的。也有和同学们讨论完成的。收获很多。总结这次完成整个设计的过程,我认为主要有以下几点收获。 首先,了解了matlab语言言的基本特点,学会了编matlab的基本指令。数值分析课程在安排上不是很充分,我们一个学期学习中的短板在于用matlab解决实际的数值分析问题上面。而此次作业正好为我们提供了一个很好弥补机会。因此,在做课程设计之前,我把要用到的相关内容先看了一边,而作课程设计正好有很好的加深了自己对自学内容的理解。同时,我也更深刻的理解到了数值分析课程在整个数学大家庭中重要的地位,它是连接理论和实践的桥梁,只有学好了数值分析,才会懂得怎样运用强大的数学计算软件把抽象的公式变成具体的数字。 其次,加强了自主学习的能力,在整个课程设计的过程中。首先是在没有老师的有限指引下完成了matlab简单编程的自主学习,这对提高自己的理解力是有很大帮助的。其次,由于matlab本身是一款很强大的软件,自身带有很多的函数,十分的方便,但对于我们来说,还是比较陌生,这就需要我们自己查资料,这对于我们提高自己的学习能力是很有帮助的。再有,提高了自己解决问题的能力,在编译的过程中,面对很多的函数和数据,只要稍微有一点点错误,都会影响到整个程序的运行,而有些错误是难以被发现的,会耗费大量的时间,这就需要自己有足够的耐心和解决问题的能力。从宏观和细节两方面入手,逐渐解决所存在的问题。我在编写程序的时候主要遇到过以下几类问题:1、 数据输入错误比如第一个题中由于在命令语句中有一个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 5463.4-2025非金属矿产品词汇第4部分:石墨
- GB/T 46446.1-2025石油、石化和天然气工业碳钢过程容器内涂层和衬里第1部分:技术要求
- 兴趣点地理信息采集员设备技术规程
- 三氯氢硅、四氯化硅提纯工操作安全竞赛考核试卷含答案
- 耐蚀混凝土工安全行为水平考核试卷含答案
- 钢铁产品质检工保密意识评优考核试卷含答案
- 露天采煤机司机安全实操水平考核试卷含答案
- 食品营养学脂肪:核心概念与应用
- 船模制作工风险评估与管理知识考核试卷含答案
- 送配电线路检修工岗前生产安全考核试卷含答案
- 2024~2025学年度八年级数学上册第1课时 三角形的内角和教学设计
- 巨量-营销科学(初级)认证培训考试题库(含答案)
- 预制管桩采购合同
- DL∕ T 855-2004 电力基本建设火电设备维护保管规程
- 四川省第七地质大队2024年考核招聘工作人员的考试试题及答案
- 江西省部分地区2024届高三下学期期初语文试卷汇编:古代诗歌阅读
- 干部履历表(中共中央组织部2015年制)
- 巴以冲突的历史和现状分析
- 全国大学生电子设计大赛备战方案
- 抗dsDNA抗体临床应用
- GB/T 27904-2011火焰引燃家具和组件的燃烧性能试验方法
评论
0/150
提交评论