matlab迭代法牛顿插值Word版.docx
- 文档编号:954755
- 上传时间:2022-10-14
- 格式:DOCX
- 页数:14
- 大小:185.98KB
matlab迭代法牛顿插值Word版.docx
《matlab迭代法牛顿插值Word版.docx》由会员分享,可在线阅读,更多相关《matlab迭代法牛顿插值Word版.docx(14页珍藏版)》请在冰豆网上搜索。
matlab迭代法牛顿插值Word版
实验报告内容:
一:
不动点迭代法解方程
二:
牛顿插值法的MATLAB实现
完成日期:
2012年6月21日星期四
数学实验报告一
日期:
2012-6-21
班级
新能源11
姓名
王志红
学号
2110310021
实验
名称
用不动点迭代法解方程
【问题背景描述】
天文学中有一类著名的方程——开普勒方程
x=q*sinx+a(0 开普勒方程是用来确定行星在其运行轨道上的位置的。 如何求解该方程并使其解达到一定精度呢? 【实验目的】 熟练掌握MATLAB 掌握不动点迭代法的原理 【实验原理与数学模型】 对于方程x=f(x),取一个初值x0代入f(x),算得x1=f(x0),再计算x2=f(x1),。 。 。 ,这样依次类推得到一个迭代格式 Xk+1=f(Xk),k=0,1,2,3… 从而得到一个序列{Xk},k=0,1,2,3…通常称该序列为迭代序列,f(x)称为迭代函数,x0称为迭代初值。 如果有迭代格式所产生的迭代序列{Xk}收敛,容易证明在收敛的情况下,迭代序列的极限就是x=f(x)方程的实根。 【实验具体内容】 运用不动点迭代法求解开普勒方程 X=0.5*sin(x)+0.4在[-2,2]上的解 【实验过程记录】 一: 确定初值 编写下列程序,画出函数g=x和f=0.58*sin(x)+0.4,确定其交点大概位置 >>clear;clc;clf; >>f=inline('0.5*sin(x)+0.4'); >>g=inline('x') holdon >>fplot(g,[-2,2]) >>fplot(f,[-2,2]) >>holdoff >>grid 输出结果如下所示: 所以,确定初值为x0=1 二: 不断迭代 算法: 第一步: 将f(x0)赋值给x1 第二步: 确定x1-x0的绝对值大小,若小于给定的误差值,则将x1当做方程的解,否则回到第一步 编写计算机程序: clear f=inline('0.5*sin(x)+0.4'); x0=1; x1=f(x0); k=1; whileabs(x1-x0)>=1.0e-6 x0=x1; x1=f(x0); k=k+1; fprintf('k=%.0f,x0=%.9f,x1=%.9f\n',k,x0,x1) end 显示结果如下: k=2,x0=0.820735492,x1=0.765823700 k=3,x0=0.765823700,x1=0.746565483 k=4,x0=0.746565483,x1=0.739560873 k=5,x0=0.739560873,x1=0.736981783 k=6,x0=0.736981783,x1=0.736027993 k=7,x0=0.736027993,x1=0.735674699 k=8,x0=0.735674699,x1=0.735543758 k=9,x0=0.735543758,x1=0.735495216 k=10,x0=0.735495216,x1=0.735477220 k=11,x0=0.735477220,x1=0.735470548 k=12,x0=0.735470548,x1=0.735468074 k=13,x0=0.735468074,x1=0.735467157 >>。 。 。 以下是程序运行截图: 【实验结果】 最终试验的原方程X=0.5*sin(x)+0.4在区间[-2,2]区间上的根为 X=0.735467157 【误差分析】 总共迭代十三次 迭代误差为1.0*10^-6 【心得体会】 总算明白了计算机解数学题目的原理是什么了,以前不懂,看到计算机解出一个一个的数学题就觉得非常神奇,老师担心人类不如计算机聪明担心有一天人类会被计算机取代。 但是,我现在不这样想了,计算机其实非常傻,只会按照人类给它设定的步骤去走,不是计算机神奇,而是人类非常神奇,竟然想到这样一个一个巧夺天工的巧妙方法。 【教师评语】 数学实验报告之二 日期: 2012-6-21 班级 新能源11 姓名 王志红 学号 2110310021 实验 名称 牛顿插值法 【问题背景描述】 由于拉格朗日插值法涉及到复杂的矩阵运算,牛顿提出一种不需要进行矩阵计算的多项式插值方法,大大简化了运算复杂度。 【实验目的】 熟练掌握MATLAB 掌握牛顿插值法的原理 【实验原理与数学模型】 我们定义牛顿插值公式为 由此,我们可以得到一张差商表如下: 一阶差商 二阶差商 三阶差商 四阶差商 则由差商表示的牛顿插值公式为 牛顿插值法的流程图 N Y N Y YN N Y 【实验具体内容】 已知某个函数在某些有限点的具体数值,要求该函数在指定点的近似值,并计算误差。 例如: 现在已知F(X)=SIN(X)在X=0: 0.1: 5这51个点的具体数值,但是不知道其他点的值,现在要求该函数在X=0.59的函数值,并计算误差 【实验过程记录】 【编写M文件】 function[yhat,dy]=newtint(x,y,xhat)%牛顿插值法,xhat为指定的X点,yhat为相应的值,dy为误差 n=length(y); iflength(x)~=n error('xandy...') end c=y(: ); forj=2: n%计算差商矩阵的对角元素 fori=n: -1: j c(i)=(c(i)-c(i-1))/(x(i)-x(i-j+1)); end end yhat=c(n); fori=(n-1): -1: 1 yhat=yhat.*(xhat-x(i))+c(i); end ifnargout>1 yn2=c(n-1); fori=n-2: -1: 1 yn2=yn2.*(xhat-x(i))+c(i); end dy=yhat-yn2; ifnargout>2 cout=c; end End 【编写主程序】 >>clear;clf >>x=0: 0.1: 5; >>y=sin(x); >>[yhat,dy]=newtint(x,y,0.59) 运行结果如下 yhat= 0.5564 dy= -7.2731e-013 >> 所以: 函数在0.59处的近似值为0.5564,误差为dy=-7.2731e-013 【实验结果】 函数在0.59处的近似值为0.5564 【误差分析】 误差为dy=-7.2731e-013 【心得体会】 总算明白了计算机解数学题目的原理是什么了,以前不懂,看到计算机解出一个一个的数学题就觉得非常神奇,老师担心人类不如计算机聪明担心有一天人类会被计算机取代。 但是,我现在不这样想了,计算机其实非常傻,只会按照人类给它设定的步骤去走,不是计算机神奇,而是人类非常神奇,竟然想到这样一个一个巧夺天工的巧妙方法。 由于牛顿插值法太过天马行空,太神奇,在此次试验中借鉴了网上最先进的算法,才把牛顿插值法表示出来,哎,牛顿是个天才,那些把牛顿插值法编写出来的更是天才,在以上的算法中,运用到了秦九韶算法,并将原来复杂的矩阵计算化简为矩阵对角元素的计算,大大简化了计算的复杂度。 作为把秦九韶算法抛到九霄云外的我,感到十分的汗颜。 对于人类的奇思妙想,我震惊不已,每每看到此处,总是心头没来由地发颤。 【教师评语】 (注: 可编辑下载,若有不当之处,请指正,谢谢! )
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 迭代法 牛顿 Word