实验一--牛顿插值法_第1页
实验一--牛顿插值法_第2页
实验一--牛顿插值法_第3页
实验一--牛顿插值法_第4页
实验一--牛顿插值法_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上牛顿插值法一、 实验目的(1)掌握牛顿插值法的基本思路和步骤;(2)培养编程与上机调试能力。二、 算法描述(1) 牛顿插值法基本思路 给定插值点序列(。构造牛顿插值多项式。输入要计算的函数点并计算的值,利用牛顿插值公式,当增加一个节点时,只需在后面多计算一项,而前面的计算仍有用;另一方面的各项系数恰好又是各阶差商,而各阶差商可用差商公式来计算。(2) 牛顿插值法计算步骤输入值及(;要计算的函数点。对给定的由 计算的值。(3)输出三、 实验内容给定 ,取节点,构造牛顿插值函数计算点处的值,并绘制图形与比较。1)Newton插值公式源程序:clear;format lon

2、g;way_in = input('请选择输入的内容(1或2):n1、输入为f(x)表达式,区间a,b及其等分数n的值n2、输入为f(x)表达式和插值点横坐标xi的值n');switch way_in case 1 f = input('请输入函数表达式:f(x) = ', 's'); a = input('请输入区间左端值a:'); b = input('请输入区间右端值b:'); n = input('请输入区间等分值n:'); np = input('请输入插值函数在区间内绘图点数(默

3、认输入100):'); for i=1:n+1 x(i) = a + (b-a)/n*(i-1); y(i,1) = eval(subs(f,'x(i)','x'); end for j=1:n for k=j:n temp=y(k+1,j)-y(k,j); y(k+1,j+1)=temp/(x(k+1)-x(k+1-j) ; end c(j)=y(j,j); end c(j+1)=y(j+1,j+1); for k=1:np-1 xx(k)= a + (b-a)/np*k; yy(k) = eval(subs(f,'xx(k)',

4、9;x'); end for k=1:np-1 xs=xx(k); for i=1:n+1 if i=1 s(i)=c(i); else s(i)=c(i); for j=1:i-1 s(i)=s(i)*(xs-x(j); end end end Nn(k)=sum(s); end way_out = input('请选择要绘出的曲线(1、2或3):n1、同时输出原始曲线f(x)和插值曲线n2、只输出插值曲线n3、只输出原始曲线n'); switch way_out case 1 figure; plot(xx,yy,'r'); grid on; hol

5、d on; plot(xx,Nn,'b'); legend('原始曲线f(x)','插值曲线N(x)'); title('牛顿插值'); case 2 figure; plot(xx,Nn,'m'); legend('插值曲线N(x)'); title('牛顿插值'); case 3 figure; plot(xx,yy,'g'); legend('原始曲线f(x)'); title('牛顿插值'); otherwise errordl

6、g('请正确选择,输入只能为1、2或者3!','提示','on'); end case 2 f = input('请输入函数表达式:f(x) = ', 's'); xb = input('请输入插值节点的横坐标x:','s'); x = sscanf(xb,'%f'); disp('x0,x1,.,xi分别为:'); disp(x); n = size(x,1) - 1; if n<2 errordlg('请至少输入3个xi的值'

7、,'提示','on'); return; end np = input('请输入插值函数在区间内绘图点数(默认输入100):'); a = x(1); b = x(n+1); for i=1:n+1 y(i,1) = eval(subs(f,'x(i)','x'); end for j=1:n for k=j:n temp=y(k+1,j)-y(k,j); y(k+1,j+1)=temp/(x(k+1)-x(k+1-j) ; end c(j)=y(j,j); end c(j+1)=y(j+1,j+1); for k

8、=1:np-1 xx(k) = a + (b-a)/np*k; yy(k) = eval(subs(f,'xx(k)','x'); end for k=1:np-1 xs=xx(k); for i=1:n+1 if i=1 s(i)=c(i); else s(i)=c(i); for j=1:i-1 s(i)=s(i)*(xs-x(j); end end end Nn(k)=sum(s); end way_out = input('请选择要绘出的曲线(1、2或3):n1、同时输出原始曲线f(x)和插值曲线n2、只输出插值曲线n3、只输出原始曲线n'

9、;); switch way_out case 1 figure; plot(xx,yy,'r'); grid on; hold on; plot(xx,Nn,'b'); legend('原始曲线f(x)','插值曲线N(x)'); title('牛顿插值'); case 2 figure; plot(xx,Nn,'m'); legend('插值曲线N(x)'); title('牛顿插值'); case 3 figure; plot(xx,yy,'g'

10、); legend('原始曲线f(x)'); title('牛顿插值'); otherwise errordlg('请正确选择,输入只能为1、2或者3!','提示','on'); end otherwise errordlg('请正确选择,输入只能为1或2!','提示','on');end2)输入指令如图所示:3)原始图形和插值图像截屏如下:四实验分析与心得体会分析:由程序可知,当插值节点个数变化时,Newton插值多项式的结构不改变,插值多项式易于构造。只要给定插值函数,插值区间,插值节点,就可以很容易的得出插值多项式及其图像。另外,随着n的增大,插值精度逐渐提高,但并不是插值节点越多逼近精度越高,因为随着节

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论