当前位置:文档之家› 牛顿插值法matlab程序

牛顿插值法matlab程序

>> x=[0 1 2 3];
>> y=[1 2 17 64];
>> x0=0.5;
>> x1=2.5;
>> f=Newton(x,y,x0,x1)
g =
0.8750
g1 =
35.3750
差商表为
0 0 0 0
1.0000 1.0000 0 0
7.0000 6.0000 2.5000 0
3.0000 -4.0000 -5.0000 -2.5000
称 为牛顿(Newton)均差插值多项式。系数 就是书本表5-1中第一条斜线上对应的数值。
式(1-2)为插值余项,由插值多项式唯一性可知,它与书本式(5.1.19)是等价的,事实上,利用均差与导数关系式可由式(1-2)推出书本式(5.1.19)。但式(1-2)更有一般性,它对f是由离散点给出的情形或f导数不存在时均适用。
(2)上机实验程序,做好上机前的准备工作;
(3)调试程序,记录计算结果;
(4)分析和解释计算结果;
(5)按照要求书写实验报告。
3、实验内容:
(1)算法原理或计算公式
算法原理:根据均差定义,把x看成[a,b]上一点,可得

只要把后一式代入前一式,就得到
其中
由式(1-1)确定的多项式 显然满足插值条件,且次数不超过n次的多项式,其系数为
g=subs(f,'t',x0)
g1=subs(f,'t',x1)
A=zeros(n,n-1);
A=[y',A];
for j=2:n
for i=j:n
A(i,j)=(A(i,j-1)-A(i-1,j-1))/(x(i)-x(i+1-j));
end
end
disp('差商表为');
disp(A);
(4)运行结果
disp('x和y的维数不相等!');
return;
end
f=y(1);
y1=0;
l =1;
for(i=1:n-1)
for(j=i+1:n)
y1(j)=(y(j)-y(i))/(x(j)-x(i));
end
c(i)=y1(i+1);
l=l*(t-x(i));
f=f+c(i)*l;
y=y1;
end
f=simplify(f);
《计算方法》数值实验报告
班级
090712
学号
09071235
姓名
金志彬
实验室
3-128
设备编号
D12
日期
2012.06.05
实验题目
编写牛顿插值方法的MATLAB主程序并验算P183.11
1、实验目的:
通过编程实现牛顿插值方法,加深对多项式插值的理解。应用所编程序解决实际算例。
2、实验要求:
(1)认真分析课题要求,复习相关理论知识,选择适当的解决方案;
(2)程序设计思路
1)输入:n的值及 要计算的函数点x(本文取x0,x1两个函数点);
2)由
计算 的值;
3)输出: 。
(源程序
function f=Newton(x,y,x0,x1)
syms t;
if(length(x)==length(y))
n=length(x);
c(1:n)=0.0;
else
f =
1-2*t^2+3*t^3
4、实验小结体会:
1)通过本次实验让我从实践验证了理论-------插值多项式的基本思想;
2)牛顿插值法建立过程中用到了插商计算,这是有别于拉格朗日插值法的一部分,在已知点数较少的情况下用牛顿插值法较为准确;
3)通过编程,加深了matlab的熟悉特别是一些函数语句,进一步体会到了函数逼近的思想。
相关主题