matlab迭代法牛顿插值Word版Word格式文档下载.docx
- 文档编号:13876036
- 上传时间:2022-10-14
- 格式:DOCX
- 页数:14
- 大小:185.98KB
matlab迭代法牛顿插值Word版Word格式文档下载.docx
《matlab迭代法牛顿插值Word版Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《matlab迭代法牛顿插值Word版Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
2110310021
实验
名称
用不动点迭代法解方程
【问题背景描述】
天文学中有一类著名的方程——开普勒方程
x=q*sinx+a(0<
q<
1,a为常数)
开普勒方程是用来确定行星在其运行轨道上的位置的。
如何求解该方程并使其解达到一定精度呢?
【实验目的】
熟练掌握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('
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
【心得体会】
总算明白了计算机解数学题目的原理是什么了,以前不懂,看到计算机解出一个一个的数学题就觉得非常神奇,老师担心人类不如计算机聪明担心有一天人类会被计算机取代。
但是,我现在不这样想了,计算机其实非常傻,只会按照人类给它设定的步骤去走,不是计算机神奇,而是人类非常神奇,竟然想到这样一个一个巧夺天工的巧妙方法。
【教师评语】
数学实验报告之二
牛顿插值法
由于拉格朗日插值法涉及到复杂的矩阵运算,牛顿提出一种不需要进行矩阵计算的多项式插值方法,大大简化了运算复杂度。
掌握牛顿插值法的原理
我们定义牛顿插值公式为
由此,我们可以得到一张差商表如下:
一阶差商
二阶差商
三阶差商
四阶差商
则由差商表示的牛顿插值公式为
牛顿插值法的流程图
N
Y
YN
已知某个函数在某些有限点的具体数值,要求该函数在指定点的近似值,并计算误差。
例如:
现在已知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));
yhat=c(n);
fori=(n-1):
1
yhat=yhat.*(xhat-x(i))+c(i);
ifnargout>
1
yn2=c(n-1);
fori=n-2:
yn2=yn2.*(xhat-x(i))+c(i);
end
dy=yhat-yn2;
ifnargout>
2
cout=c;
End
【编写主程序】
clear;
clf
x=0:
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