文档库 最新最全的文档下载
当前位置:文档库 › 插值法部分习题

插值法部分习题

插值法部分习题
插值法部分习题

20.

解:(1)在编辑窗口输入:

>> x=[0.25,0.30,0.39,0.45,0.53];

>> y=[0.5000,0.5477,0.6245,0.6708,0.7280]; >> dx0=1.0000;dxn=0.6868; >> s=csfit(x,y,dx0,dxn) s =

1.8863 -1.0143 1.0000 0.5000 0.7952 -0.7314 0.9127 0.5477 0.6320 -0.5167 0.8004 0.6245 0.3151 -0.4029 0.7452 0.6708

5.0x x 0143.1x 8863.1S 231++-= ]3.0,25.0[x ∈ 5477.0x 9127.0x 7314.0x 7952.0S 232++-= ]39.0,3.0[x ∈ 6245.0x 8004.0x 5167.0x 632.0S 233++-= ]45.0,39.0[x ∈

6708.0x 7452.0x 4029.0x 3151.0S 234++-= ]53.0,45.0[x ∈

1

试用4次牛顿插值多项式)x (P 4及三次样条函数)x (S (自然边界条件)对数据进行插值。用图给出{(i x ,i y ),10,11,1,0i ,i 08.02.0x i =+=},)x (P 4及

)x (S .

解:

(1)在编辑窗口输入: >> x=[0.2,0.4,0.6,0.8,1.0];

>> y=[0.98,0.92,0.81,0.64,0.38]; >> N=newpoly(x,y) N =

-0.5208 0.8333 -1.1042 0.1917 0.9800 由此可以得出牛顿插值多项式为:

)

x

(

P

4=98

.0

x

1917

.0

x

1042

.1

x

8333

.0

x

5208

.02

3

4+

+

-

+

-

>> S=ThrSample2(x,y,0,0,0)

S =

125*(46/25*t-69/125)*(t-3/5)^2+125*(567/500-81/50*t)*(t-2/5)^2+25*(-57/140*t+5 7/350)*(3/5-t)^2-25*(-81/200+27/40*t)*(t-2/5)^2/5)^2

(2)

在编辑窗口输入:

>> x=[0.2,0.28,0.4,0.6,0.8,1.0,1.08];

>> y=[0.98 0.9596 0.92 0.81 0.64 0.38 0.2403];

>> cs=spline(x,[0 y 0]);xx=linspace(0.2,1.08,101);

>> plot(x,y,'o',xx,ppval(cs,xx),'-');

>> x1=[0.2,0.28,0.4,0.6,0.8,1.0,1.08];

>> y1=[0.98 0.9596 0.92 0.81 0.64 0.38 0.2403];

>> polyfit(x1,y1,4)

ans =

-0.4126 0.5487 -0.8475 0.1017 0.9893

>> plot(x,y,'o',xx,ppval(cs,xx),'-',x1,y1,'-.r'),grid

0.20.30.40.50.60.70.80.91 1.1 1.2

图2 P(x)和S(x)函数插值图

3.下列数据点的插值

(1)用这9个点作8次多项式插值()x

L

8

S x.

(2)用三次样条(自然边界条件)程序求()

解:

在编辑窗口输入:

>> x=[0 1 4 9 16 25 36 49 64];

>> y=0:1:8;y=sqrt(x);

>> x1=[0 1 4 9 16 25 36 49 64];y1=0:1:8;

>> m=polyfit(x,y,8)

Warning: Polynomial is badly conditioned. Remove repeated data points

or try centering and scaling as described in HELP POL YFIT.

> In polyfit at 81

m =

Columns 1 through 4

-0.00000000032806 0.00000006712680 -0.00000542920942 0.00022297151886 Columns 5 through 8

-0.00498070758014 0.06042943489173 -0.38141003716579 1.32574370075005 Column 9

-0.00000000000311

>> x1=0:1:64;

>> y1=polyval(m,x1);

>> x2=[0 1 4 9 16 25 36 49 64];

>> y2=0:1:8;

>> cs=spline(x,[0 y 0]);

>> xx=linspace(0,64,101);

>> plot(x,y,'o',xx,ppval(cs,xx),'-k',x1,y1,'--b',x,y,':r')

010203040506070

图3 Lagran插值与Spline插值的比较图

从图中结果可以看出:在区间[0,64]上,三次样条插值更准确些;在区间[0,1]上,拉格朗日插值更准确些.

附:各插值函数的Matlab实现:

(1) csfit函数运行程序

function S=csfit(x,y,dx0,dxn)

n=length(x)-1;

h=diff(x);

d=diff(y)./h;

a=h(2:n-1);

b=2*(h(1:n-1)+h(2:n));

c=h(2:n);

u=6*diff(d);

b(1)=b(1)-h(1)/2;

u(1)=u(1)-3*(d(1)-dx0);

b(n-1)=b(n-1)-h(n)/2;

u(n-1)=u(n-1)-3*(dxn-d(n));

for k=2:n-1

temp=a(k-1)/b(k-1);

b(k)=b(k)-temp*c(k-1);

u(k)=u(k)-temp*u(k-1);

end

m(n)=u(n-1)/b(n-1);

for k=n-2:-1:1

m(k+1)=(u(k)-c(k)*m(k+2))/b(k);

m(1)=3*(d(1)-dx0)/h(1)-m(2)/2;

m(n+1)=3*(dxn-d(n))/h(n)-m(n)/2;

for k=0:n-1

S(k+1,1)=(m(k+2)-m(k+1))/(6*h(k+1));

S(k+1,2)=m(k+1)/2;

S(k+1,3)=d(k+1)-h(k+1)*(2*m(k+1)+m(k+2))/6;

S(k+1,4)=y(k+1);

End

(2)ThrSample2函数运行程序

function [f,f0]=ThrSample2(x,y,y2_1,y2_N,x0)

syms t;

f=0.0;

f0=0.0;

if(length(x)==length(y))

n=length(x);

else

disp();

return;

endor i=1:n

for i=1:n

if(x(i)<=x0)&&(x(i+1)>=x0)

index=i;

break;

end

end

f

if(x(i)<=x0)&&(x(i+1)>=x0)

index=i;

return;

end

end

A=diag(2*ones(1,n));

A(1,2)=1;

A(n,n-1)=1;

u=zeros(n-2,1);

lamda=zeros(n-1,1);

c=zeros(n,1);

for i=2:n-1

u(i-1)=(x(i)-x(i-1))/(x(i+1)-x(i-1));

lamda(i)=(x(i+1)-x(i))/(x(i+1)-x(i-1));

c(i)=3*lamda(i)*(y(i)-y(i-1))/(x(i)-x(i-1))+3*u(i-1)*(y(i+1)-y(i))/(x(i+1)-x(i));

A(i,i+1)=u(i-1);

A(i,i-1)=lamda(i);

c(1)=3*(y(2)-y(1))/(x(2)-x(1))-(x(2)-x(1))*y2_1/2;

c(n)=3*(y(n)-y(n-1))/(x(n)-x(n-1))-(x(n)-x(n-1))*y2_N/2;

m=followup(A,c);

h=x(i+1)-x(i);

f=y(i)*(2*(t-x(i))+h)*(t-x(i+1))^2/h/h/h+y(i+1)*(2*(x(i+1)-t)+h)*(t-x(i))^2/h/h/h+m(i )*(t-x(i))*(x(i+1)-t)^2/h/h-m(i+1)*(x(i+1)-t)*(t-x(i))^2/h/h;

f0=subs(f,'t',x0);

%ThrSample2函数运行调用的函数:

function x=followup(A,b)

n=rank(A);

for(i=1:n)

if(A(i,i)==0)

disp();

return;

end

end;

d=ones(n,1);

a=ones(n-1,1);

c=ones(n-1);

for(i=1:n-1)

a(i,1)=A(i+1,i);

c(i,1)=A(i,i+1);

d(i,1)=A(i,i);

end

d(n,1)=A(n,n);

for(i=2:n)

d(i,1)=d(i,1)-(a(i-1,1)/d(i-1,1))*c(i-1,1);

b(i,1)=b(i,1)-(a(i-1,1)/d(i-1,1))*b(i-1,1);

end

x(n,1)=b(n,1)/d(n,1);

for(i=(n-1):-1:1)

x(i,1)=(b(i,1)-c(i,1)*x(i+1,1))/d(i,1);

end

(3) newpoly函数运行程序

function[c,d]=newpoly(x,y)

n=length(x);

d=zeros(n,n);

d(:,1)=y';

for j=2:n

for k=j:n

d(k,j)=(d(k,j-1)-d(k-1,j-1))/(x(k)-x(k-j+1));

end

end

c=d(n,n);

for k=(n-1):-1:1

c=conv(c,poly(x(k)));

m=length(c);

c(m)=c(m)+d(k,k);

end

(4) lagran函数运行程序

function[c,l]=lagran(x,y)

w=length(x);

n=w-1;

l=zeros(w,w);

for k=1:n+1

v=1;

for j=1:n+1

if k~=j

v=conv(v,poly(x(j)))/(x(k)-x(j));

end

end

l(k,:)=v;

end

c=y*l;

计算方法练习题与答案

练习题与答案 练习题一 练习题二 练习题三 练习题四 练习题五 练习题六 练习题七 练习题八 练习题答案 练习题一 一、是非题 1.–作为x的近似值一定具有6位有效数字,且其误差限。() 2.对两个不同数的近似数,误差越小,有效数位越多。() 3.一个近似数的有效数位愈多,其相对误差限愈小。()

4.用近似表示cos x产生舍入误差。 ( ) 5.和作为的近似值有效数字位数相同。 ( ) 二、填空题 1.为了使计算的乘除法次数尽量少,应将该表达式改写 为; 2.–是x舍入得到的近似值,它有位有效数字,误差限 为,相对误差限为; 3.误差的来源是; 4.截断误差 为; 5.设计算法应遵循的原则 是。 三、选择题 1.–作为x的近似值,它的有效数字位数为( ) 。 (A) 7; (B) 3; (C) 不能确定 (D) 5. 2.舍入误差是( )产生的误差。 (A) 只取有限位数 (B) 模型准确值与用数值方法求得的准确值 (C) 观察与测量 (D) 数学模型准确值与实际值 3.用 1+x近似表示e x所产生的误差是( )误差。 (A). 模型 (B). 观测 (C). 截断 (D). 舍入 4.用s*=g t2表示自由落体运动距离与时间的关系式 (g为重力加速度),s t是在时间t内的实际距离,则s t s*是()误差。 (A). 舍入 (B). 观测 (C). 模型 (D). 截断 5.作为的近似值,有( )位有效数字。 (A) 3; (B) 4; (C) 5; (D) 6。

四、计算题 1.,,分别作为的近似值,各有几位有效数字? 2.设计算球体积允许的相对误差限为1%,问测量球直径的相对误差限最大为多少? 3.利用等价变换使下列表达式的计算结果比较精确: (1), (2) (3) , (4) 4.真空中自由落体运动距离s与时间t的关系式是s=g t2,g为重力加速度。现设g是精确的,而对t有秒的测量误差,证明:当t增加时,距离的绝对误差增加,而相对误差却减少。 5*. 采用迭代法计算,取 k=0,1,…, 若是的具有n位有效数字的近似值,求证是的具有2n位有效数字的近似值。 练习题二 一、是非题 1.单点割线法的收敛阶比双点割线法低。 ( ) 2.牛顿法是二阶收敛的。 ( ) 3.求方程在区间[1, 2]内根的迭代法总是收敛的。( ) 4.迭代法的敛散性与迭代初值的选取无关。 ( ) 5.求非线性方程f (x)=0根的方法均是单步法。 ( ) 二、填空题

MAAB牛顿插值法例题与程序

题目一:多项式插值 某气象观测站在8:00(AM )开始每隔10分钟对天气作如下观测,用三次多项式插值函数(Newton )逼近如下曲线,插值节点数据如上表,并求出9点30分该地区的温度(x=10)。 二、数学原理 假设有n+1个不同的节点及函数在节点上的值(x 0,y 0),……(x n ,y n ),插值多项式有如下形式: )() )(()()()(n 10n 102010n x -x )(x -x x -x x P x x x x x x -??-+??+-++=αααα(1) 其中系数i α(i=0,1,2……n )为特定系数,可由插值样条i i n y x P =) ((i=0,1,2……n )确定。 根据均差的定义,把x 看成[a,b]上的一点,可得 f(x)=f (0x )+f[10x x ,](0x -x ) f[x,0x ]=f[10x x ,]+f[x,10x x ,](1x -x ) …… f[x,0x ,…x 1-n ]=f[x,0x ,…x n ]+f[x,0x ,…x n ](x-x n ) 综合以上式子,把后一式代入前一式,可得到: f(x)=f[0x ]+f[10x x ,](0x -x )+f[210x x x ,,](0x -x )(1x -x )+ …+f[x,0x ,…x n ](0x -x )…(x-x 1-n )+f[x,0x ,…x n ,x ])(x 1n +ω=N n (x )+) (x n R 其中 N n (x )=f[0x ]+f[10x x ,](0x -x )+f[210x x x ,,](0x -x )(1x -x )+ …+f[x,0x ,…x n ](0x -x )…(x-x 1-n )(2) )(x n R =f(x)-N n (x )=f[x,0x ,…x n ,x ]) (x 1n +ω(3) ) (x 1n +ω=(0x -x )…(x-x n ) Newton 插值的系数i α(i=0,1,2……n )可以用差商表示。一般有 f k =α[k 10x x x ??,](k=0,1,2,……,n )(4)

数值分析拉格朗日插值法上机实验报告

课题一:拉格朗日插值法 1.实验目的 1.学习和掌握拉格朗日插值多项式。 2.运用拉格朗日插值多项式进行计算。 2.实验过程 作出插值点(1.00,0.00),(-1.00,-3.00),(2.00,4.00)二、算法步骤 已知:某些点的坐标以及点数。 输入:条件点数以及这些点的坐标。 输出:根据给定的点求出其对应的拉格朗日插值多项式的值。 3.程序流程: (1)输入已知点的个数; (2)分别输入已知点的X坐标; (3)分别输入已知点的Y坐标; 程序如下: #include #include #include float lagrange(float *x,float *y,float xx,int n) /*拉格朗日

插值算法*/ { int i,j; float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项*/ a=(float*)malloc(n*sizeof(float)); for(i=0;i<=n-1;i++) { a[i]=y[i]; for(j=0;j<=n-1;j++) if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]); yy+=a[i]; } free(a); return yy; } int main() { int i; int n; float x[20],y[20],xx,yy; printf("Input n:");

scanf("%d",&n); if(n<=0) { printf("Error! The value of n must in (0,20)."); getch();return 1; } for(i=0;i<=n-1;i++) { printf("x[%d]:",i); scanf("%f",&x[i]); } printf("\n"); for(i=0;i<=n-1;i++) { printf("y[%d]:",i);scanf("%f",&y[i]); } printf("\n"); printf("Input xx:"); scanf("%f",&xx); yy=lagrange(x,y,xx,n); printf("x=%f,y=%f\n",xx,yy); getch(); } 举例如下:已知当x=1,-1,2时f(x)=0,-3,4,求f(1.5)的值。

matlab插值法实例

Several Typical Interpolation in Matlab Lagrange Interpolation Supposing: If x=175, while y=? Solution: Lagrange Interpolation in Matlab: function y=lagrange(x0,y0,x); n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end input: x0=[144 169 225] y0=[12 13 15] y=lagrange(x0,y0,175) obtain the answer: x0 = 144 169 225 y0 = 12 13 15 y = 13.2302

Spline Interpolation Solution : Input x=[ 1 4 9 6];y=[ 1 4 9 6];x=[ 1 4 9 6];pp=spline(x,y) pp = form: 'pp' breaks: [1 4 6 9] coefs: [3x4 double] pieces: 3 order: 4 dim: 1 output : pp.coefs ans = -0.0500 0.5333 -0.8167 1.0000 -0.0500 0.0833 1.0333 2.0000 -0.0500 -0.2167 0.7667 4.0000 It shows the coefficients of cubic spline polynomial , so: S (x )=, 169,3)9(1484.0)9(0063.0)9(0008.0,94,2)4(2714.0)4(0183.0)4(0008 .0, 41,1)1(4024.0)1(0254.0)1(0008.0232 3 23≥≤+-+---≥≤+-+---≥≤+-+---x x x x x x x x x x x x Newton’s Interpolation Resolve 65 Solution: Newton’s Interpolation in matlab : function yi=newint(x,y,xi); n=length(x); ny=length(y); if n~=ny error end Y=zeros(n);Y(:,1)=y';

插值法习题及解答

一、填空题: 1. 满足()a a f x x =,()b b f x x =,()c c f x x =的拉格朗日插值余项为 。 答:()() ()()()3! a b c f R x x x x x x x ξ'''=--- 2.已知函数()f x 的函数值()()()()()0,2,3,5,6f f f f f ,以及均差如下 ()()()()()00,0,24,0,2,35,0,2,3,51,0,2,3,5,60f f f f f ===== 那么由这些数据构造的牛顿插值多项式的最高次幂的系数是 答: 1 二、选择题 1. 通过点()()0011,,,x y x y 的拉格朗日插值基函数()()01,l x l x 满足( ) A .()00l x =0,()110l x = B . ()00l x =0,()111l x = C .()00l x =1,()110l x = D . ()00l x =1,()111l x = 答:D 2.. 已知等距节点的插值型求积公式 ()()35 2 k k k f x dx A f x =≈∑?,那么3 k k A ==∑( ) A .1 B. 2 C. 3 D. 4 答:C 3.过点(x 0,y 0), (x 1,y 1),…,(x 5,y 5)的插值多项式P(x)是( )次的多项式。 (A). 6 (B).5 (C).4 (D).3. 答:B 三、证明题 1. 设 f (x) = (x-1) (x-2) .证明对任意的x 有: f [1, 2, x)]= 1 证明:f [1, 2] = [f (1) – f (2)]/ (1 – 2) = [0 – 0]/ (-1) = 0, 对任意的x 有 F[2, x] = [f (2) – f (x)]/ (2 – x) = [0 – (x-1) (x-2)]/ (2 – x) = (x-1), 所以 f [1, 2, x] = [f (1, 2) - f (2, x)]/ (1 – x) = [0 - (x-1)]/ (1 – x) = 1 2.设 在 上具有二阶连续导数,且 ,求证:

插值例题

例1 机床加工 待加工零件的外形根据工艺要求由一组数据(x, y)给出(在平面情况下),用程控 铣床加工时每一刀只能沿x 方向和y 方向走非常小的一步,这就需要从已知数据得到加工所要求的步长很小的(x, y)坐标。 表1 中给出的x, y数据位于机翼断面的下轮廓线上,假设需要得到x坐标每改变 0.1 时的y坐标。试完成加工所需数据,画出曲线,并求出x = 0处的曲线斜率和 13 ≤x ≤15范围内y的最小值。 表 1 x 0 3 5 7 9 11 12 13 14 15 y 0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 要求用Lagrange、分段线性和三次样条三种插值方法计算。 解编写以下程序: clc,clear x0=[0 3 5 7 9 11 12 13 14 15]; x=0:0.1:15; y1=lagrange(x0,y0,x); %调用前面编写的Lagrange插值函数 y2=interp1(x0,y0,x); y3=interp1(x0,y0,x,'spline'); pp1=csape(x0,y0); y4=ppval(pp1,x); pp2=csape(x0,y0,'second'); y5=ppval(pp2,x); fprintf('比较一下不同插值方法和边界条件的结果:\n') fprintf('x y1 y2 y3 y4 y5\n') xianshi=[x',y1',y2',y3',y4',y5']; fprintf('%f\t%f\t%f\t%f\t%f\t%f\n',xianshi') subplot(2,2,1), plot(x0,y0,'+',x,y1), title('Lagrange') subplot(2,2,2), plot(x0,y0,'+',x,y2), title('Piecewise linear') subplot(2,2,3), plot(x0,y0,'+',x,y3), title('Spline1') subplot(2,2,4), plot(x0,y0,'+',x,y4), title('Spline2') dyx0=ppval(fnder(pp1),x0(1)) %求x=0处的导数 ytemp=y3(131:151); index=find(ytemp==min(ytemp)); xymin=[x(130+index),ytemp(index)] 计算结果略。 可以看出,拉格朗日插值的结果根本不能应用,分段线性插值的光滑性较差(特别 是在x = 14附近弯曲处),建议选用三次样条插值的结果。

数值分析常用的插值方法

数值分析报告 班级: 专业: 流水号: 学号: 姓名:

常用的插值方法 序言 在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 早在6世纪,中国的刘焯已将等距二次插值用于天文计算。17世纪之后,牛顿、拉格朗日分别讨论了等距和非等距的一般插值公式。在近代,插值法仍然是数据处理和编制函数表的常用工具,又是数值积分、数值微分、非线性方程求根和微分方程数值解法的重要基础,许多求解计算公式都是以插值为基础导出的。 插值问题的提法是:假定区间[a,b〕上的实值函数f(x)在该区间上n+1个互不相同点x0,x1……x n处的值是f(x0),……f(x n),要求估算f(x)在[a,b〕中某点的值。其做法是:在事先选定的一个由简单函数构成的有n+1个参数C0, C1,……C n的函数类Φ(C0,C1,……C n)中求出满足条件P(x i)=f(x i)(i=0,1,……n)的函数P(x),并以P(x)作为f(x)的估值。此处f(x)称为被插值函数,x0,x1,……xn 称为插值结(节)点,Φ(C0,C1,……C n)称为插值函数类,上面等式称为插值条件,Φ(C0,……C n)中满足上式的函数称为插值函数,R(x)=f(x)-P(x)称为插值余项。

求解这类问题,它有很多种插值法,其中以拉格朗日(Lagrange)插值和牛顿(Newton)插值为代表的多项式插值最有特点,常用的插值还有Hermit 插值,分段插值和样条插值。 一.拉格朗日插值 1.问题提出: 已知函数()y f x =在n+1个点01,,,n x x x L 上的函数值01,,,n y y y L ,求任意一点 x '的函数值()f x '。 说明:函数()y f x =可能是未知的;也可能是已知的,但它比较复杂,很难计算其函数值()f x '。 2.解决方法: 构造一个n 次代数多项式函数()n P x 来替代未知(或复杂)函数()y f x =,则 用()n P x '作为函数值()f x '的近似值。 设()2012n n n P x a a x a x a x =++++L ,构造()n P x 即是确定n+1个多项式的系数 012,,,,n a a a a L 。 3.构造()n P x 的依据: 当多项式函数()n P x 也同时过已知的n+1个点时,我们可以认为多项式函数 ()n P x 逼近于原来的函数()f x 。根据这个条件,可以写出非齐次线性方程组: 20102000 20112111 2012n n n n n n n n n n a a x a x a x y a a x a x a x y a a x a x a x y ?++++=?++++=?? ? ?++++=?L L L L L 其系数矩阵的行列式D 为范德萌行列式: ()20 0021110 2111n n i j n i j n n n n x x x x x x D x x x x x ≥>≥= = -∏L L M M M M L

数值计算方法习题答案(第二版)(绪论)

数值分析 (p11页) 4 试证:对任给初值x 0, 0)a >的牛顿迭代公式 112(),0,1 ,2,......k a k k x x x k +=+= 恒成立下列关系式: 2112(1)(,0,1,2,.... (2)1,2,...... k k k x k x x k x k +-=≥= 证明: (1 )(2 1122k k k k k k x a x x x x +-??=+= =? ?? (2) 取初值00>x ,显然有0>k x ,对任意0≥k , a a x a x x a x x k k k k k ≥+??? ? ??-=???? ??+=+2 12121 6 证明: 若k x 有n 位有效数字,则n k x -?≤ -1102 1 8, 而() k k k k k x x x x x 28882182 1-=-???? ? ?+=-+ n n k k x x 21221102 1 5.22104185 .28--+?=??<-∴>≥ 1k x +∴必有2n 位有效数字。 8 解: 此题的相对误差限通常有两种解法. ①根据本章中所给出的定理: (设x 的近似数* x 可表示为m n a a a x 10......021*?±=,如果* x 具有l 位有效数字,则其相对误差限为 ()11 * *1021 --?≤ -l a x x x ,其中1a 为*x 中第一个非零数)

则7.21=x ,有两位有效数字,相对误差限为 025.0102 21 111=??≤--x x e 71.22=x ,有两位有效数字,相对误差限为 025.0102 21 122=??≤--x x e 3 2.718x =,有两位有效数字,其相对误差限为: 00025.0102 21 333=??≤--x e x ②第二种方法直接根据相对误差限的定义式求解 对于7.21=x ,0183.01<-e x ∴其相对误差限为00678.07 .20183.011≈<-x e x 同理对于71.22=x ,有 003063 .071 .20083 .022≈<-x e x 对于718.23=x ,有 00012.0718 .20003 .033≈<-x e x 备注:(1)两种方法均可得出相对误差限,但第一种是对于所有具有n 位有效数字的近似数都成立的正确结论,故他对误差限的估计偏大,但计算略简单些;而第二种方法给出较好的误差限估计,但计算稍复杂。 (2)采用第二种方法时,分子为绝对误差限,不是单纯的对真实值与近似值差值的四舍五入,绝对误差限大于或等于真实值与近似值的差。 11. 解: ......142857.3722≈,.......1415929.3113 255≈ 2102 1 722-?≤-∴ π,具有3位有效数字

数值分析常用的插值方法

数值分析 报告 班级: 专业: 流水号: 学号: 姓名:

常用的插值方法 序言 在离散数据的基础上补插连续函数,使得这条连续曲线通过全部给定的离散数据点。插值是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取值状况,估算出函数在其他点处的近似值。 早在6世纪,中国的刘焯已将等距二次插值用于天文计算。17世纪之后,牛顿、拉格朗日分别讨论了等距和非等距的一般插值公式。在近代,插值法仍然是数据处理和编制函数表的常用工具,又是数值积分、数值微分、非线性方程求根和微分方程数值解法的重要基础,许多求解计算公式都是以插值为基础导出的。 插值问题的提法是:假定区间[a,b〕上的实值函数f(x)在该区间上 n+1 个互不相同点x 0,x 1 (x) n 处的值是f(x ),……f(x n ),要求估算f(x)在[a,b〕 中某点的值。其做法是:在事先选定的一个由简单函数构成的有n+1个参数C , C 1,……C n 的函数类Φ(C ,C 1 ,……C n )中求出满足条件P(x i )=f(x i )(i=0,1,…… n)的函数P(x),并以P(x)作为f(x)的估值。此处f(x)称为被插值函数,x 0,x 1 ,……xn 称为插值结(节)点,Φ(C 0,C 1 ,……C n )称为插值函数类,上面等式称为插值条件, Φ(C 0,……C n )中满足上式的函数称为插值函数,R(x)= f(x)-P(x)称为 插值余项。

求解这类问题,它有很多种插值法,其中以拉格朗日(Lagrange)插值和牛顿(Newton)插值为代表的多项式插值最有特点,常用的插值还有Hermit 插值,分段插值和样条插值。 一.拉格朗日插值 1.问题提出: 已知函数()y f x =在n+1个点01,, ,n x x x 上的函数值01,, ,n y y y ,求任意一点 x '的函数值()f x '。 说明:函数()y f x =可能是未知的;也可能是已知的,但它比较复杂,很难计算其函数值()f x '。 2.解决方法: 构造一个n 次代数多项式函数()n P x 来替代未知(或复杂)函数()y f x =,则 用()n P x '作为函数值()f x '的近似值。 设()2012n n n P x a a x a x a x =+++ +,构造()n P x 即是确定n+1个多项式的系数 012,,,,n a a a a 。 3.构造()n P x 的依据: 当多项式函数()n P x 也同时过已知的n+1个点时,我们可以认为多项式函数 ()n P x 逼近于原来的函数()f x 。根据这个条件,可以写出非齐次线性方程组: 20102000 201121112012n n n n n n n n n n a a x a x a x y a a x a x a x y a a x a x a x y ?+++ +=?++++=??? ?+++ +=? 其系数矩阵的行列式D 为范德萌行列式: () 200021110 2 111n n i j n i j n n n n x x x x x x D x x x x x ≥>≥= = -∏

数值分析 插值法

第二章插值法 2.在区间[-1,1]上分别取n=10,20用两组等距节点对龙哥函数f(x)=1/(1+25*x^2)做多项式插值及三次样条插值,对每个n值,分别画出插值函数及f(x)的图形。 (1)多项式插值 ①先建立一个多项式插值的M-file; 输入如下的命令(如牛顿插值公式): function [C,D]=newpoly(X,Y) n=length(X); D=zeros(n,n) D(:,1)=Y' for j=2:n for k=j:n D(k,j)=(D(k,j-1)- D(k-1,j-1))/(X(k)-X(k-j+1)); end end C=D(n,n); for k=(n-1):-1:1 C=conv(C,poly(X(k))) m=length(C); C(m)= C(m)+D(k,k); end ②当n=10时,我们在命令窗口中输入以下的命令: clear,clf,hold on; X=-1:0.2:1; Y=1./(1+25*X.^2); [C,D]=newpoly(X,Y); x=-1:0.01:1; y=polyval(C,x); plot(x,y,X,Y,'.'); grid on; xp=-1:0.2:1; z=1./(1+25*xp.^2); plot(xp,z,'r') 得到插值函数和f(x)图形:

③当n=20时,我们在命令窗口中输入以下的命令:clear,clf,hold on; X=-1:0.1:1; Y=1./(1+25*X.^2); [C,D]=newpoly(X,Y); x=-1:0.01:1; y=polyval(C,x); plot(x,y,X,Y,'.'); grid on; xp=-1:0.1:1; z=1./(1+25*xp.^2); plot(xp,z,'r') 得到插值函数和f(x)图形:

数值分析实验插值与拟合

《数值分析》课程实验一:插值与拟合 一、实验目的 1. 理解插值的基本原理,掌握多项式插值的概念、存在唯一性; 2. 编写MATLAB 程序实现Lagrange 插值和Newton 插值,验证Runge 现象; 3. 通过比较不同次数的多项式拟合效果,理解多项式拟合的基本原理; 4. 编写MATLAB 程序实现最小二乘多项式曲线拟合。 二、实验内容 1. 用Lagrange 插值和Newton 插值找经过点(-3, -1), (0, 2), (3, -2), (6, 10)的三次插值公式,并编写MATLAB 程序绘制出三次插值公式的图形。 2. 设 ]5,5[,11 )(2 -∈+= x x x f 如果用等距节点x i = -5 + 10i /n (i = 0, 1, 2, …, n )上的Lagrange 插值多项式L n (x )去逼近它。不妨取n = 5和n = 10,编写MATLAB 程序绘制出L 5(x )和L 10(x )的图像。 3. 在某冶炼过程中,根据统计数据的含碳量与时间关系如下表,试求含碳量与时间t 的拟合曲线。

(1) 用最小二乘法进行曲线拟合; (2) 编写MATLAB 程序绘制出曲线拟合图。 三、实验步骤 1. (1) Lagrange 插值法:在线性空间P n 中找到满足条件: ?? ?≠===j i j i x l ij j i , 0,, 1)(δ 的一组基函数{}n i i x l 0)(=,l i (x )的表达式为 ∏ ≠==--= n i j j j i j i n i x x x x x l ,0),,1,0()( 有了基函数{}n i i x l 0)(=,n 次插值多项式就可表示为 ∑==n i i i n x l y x L 0)()( (2) Newton 插值法:设x 0, x 1, …, x n 是一组互异的节点,y i = f (x i ) (i = 0, 1, 2, …, n ),f (x )在处的n 阶差商定义为 1102110] ,,,[],,,[],,,[x x x x x f x x x f x x x f n n n n --= - 则n 次多项式 ) ())(](,,[) )(](,,[)](,[)()(11010102100100----++--+-+=n n n x x x x x x x x x f x x x x x x x f x x x x f x f x N 差商表的构造过程:

计算方法实验报告习题1(浙大版)

计算方法实验报告 实验名称: 实验1 从函数表出发进行插值 1 引言 某个实际问题中,函数f (x)在区间[a,b]上存在且连续,但难以找到其表达式,只能通过实验和观测得到有限点上的函数表。有些情况虽然可以写出表达式,但结构复杂,使用不方便。所以希望构造简单函数P (x)作为f (x)的近似值。插值法是解决此类问题的一种方法。 设函数y=在插值区间[a,b]上连续,且在n+1个不同的插值节点a≤x 0,x 1,…,x n ≤b 上分别取值y 0,y 1,…,y n 。目的是要在一个性质优良、便于计算的插值函数类Φ中,求一简单函数P (x),满足插值条件P (x i )=y i (i=0,1,…,n),而在其他点x≠x i 上,作为f (x)近似值。求插值函数P (x)的方法称为插值法[1]。 2 实验目的和要求 运用Matlab 编写m 文件,定义三种插值函数,要求一次性输入整张函数表,并利用计算机选择在插值计算中所需的节点。分别通过分段线性插值、分段二次插值和全区间上拉格朗日插值计算f (0.15),f (0.31),f (0.47)的近似值。 3 算法原理与流程图 (1)原理 1.线性插值 当给定了n+1个点x 0

数值计算方法复习题2

习题二 1. 已知 ,求的二次值多项式。 2. 令 解:; ,介于x和0,1决定的区 间内;,当时。 的数表,分别用线性插值与二次插值求 3. 给出函数 ,试利用拉格朗日余项定理写出以为节点的三次 4. 设 插值多项式。 ,求及的值。1,0 5. 已知 6. 根据如下函数值表求四次牛顿插值多项式,并用其计算 , 的如下函数值表,解答下列问题(1)试列出相应 7. 已知函数 的差分表;(2)分别写出牛顿向前插值公式和牛顿向后插值公式。 解:向前插值公式

向后插值公式 8. 下表为概率积分 的数据表,试问:1)时, 积分 在各点的数据(取五位有效数 9. 利用 字),求方程 在0.3和0.4之间的根的近似值。0.3376489 10. 依据表10中数据,求三次埃尔米特插值多项式。 11. 依据数表11 项式。 上给出的等距节点函数表,用分段线性插值求 12. 在 的近似值,要使截断误差不超过 取? 13. 将区间 分成n等分,求在上的分段三次埃尔米 特插值多项式,并估计截断误差。 14、给定的数值表

用线性插值与二次插值计算ln0.54的近似值并估计误差限 解:仍可使用n=1及n=2的Lagrange插值或Newton插值,并应用误差估计。线性插值时,用0.5及0.6两点,用Newton插值 误差限 ,因,故 二次插值时,用0.5,0.6,0.7三点,作二次Newton插值 误差限, 故 15、在-4≤x≤4上给出的等距节点函数表,若用二次插值法 求的近似值,要使误差不超过,函数表的步长h应取多少? 解:用误差估计式, 令因 得

16、若,求和 解:由均差与导数关系 于是 17、若互异,求 的值,这里p≤n+1. 解:,由均差对称性 可知当有 而当P=n+1时 于是得 18、求证 解:只要按差分定义直接展开得 19、已知的函数表

第4章 插值法作业

第4章 插值法 2.证明:n 次拉格朗日插值多项式为: 0()()()() n n n j n k k k k k j k j j k x x L x y l x y x x ===≠-==-∑∑∏ ————(1) 现令 ()() n j j x x x ω==-∏,则 00 '()() n n j m j j m x x x ω==≠=-∑ ∏,————2() 将 k x 代入 '()() n n j m j j m x x x ω==≠=-∑ ∏,可得 0'()() n k k j j j m x x x ω=≠=-∏————————(3) 将(3)和(2)代入(1)中命题可证。 5.证明提示:利用线性插值余项可以推出命题。 6.证明:由题意可知,()f x 是n 次多项式并有n 个互异的实根,可令 12()()()......()()n n n n f x a x x x x x x a x ω=---= 再令()j g x x = 则 j n k k=11()'()'() n k k k n n k g x x f x a x ω==∑ ∑ 利用均差性质:则 []121()1 ......'()n k n k n n k n g x g x x x a x a ω==∑ 又由均差与导数的性质可证命题成立。 7.算法提示:利用差商表可求。 8.算法提示:利用求牛顿插值公式。 12.证明提示:参考拉格朗日插值余项的证明方法。 14.算法提示:参考三对角方程组的样条函数的求解过程及例11。 补充习题解题思路 1. 设)(x l k (k= 0, 1, 2, …,n)是n 次拉格朗日插值基函数, 试证: ∑==n k j k j k x x l x 0 )( 。 (j = 0, 1, 2, …, n ) 证明:记n k x k k ...2,1,0,==?,

CPA.会计第二章插值法计算

专题四资金时间价值 一、资金时间价值的概念 定义:资金时间价值是指一定量资金在不同时点上的价值量差额。 【提示】理解资金时间价值要把握两个要点:(1)不同时点;(2)价值量差额。 二、终值和现值的计算 1.终值又称将来值,是现在一定量的资金折算到未来某一时点所对应的价值,俗称“本利和”,通常记作F。 2.现值,是指未来某一时点上的一定量资金折算到现在所对应的价值,俗称“本金”,通常记作“P”。 现值和终值是一定量资金在前后两个不同时点上对应的价值,其差额即为资金的时间价值。生活中计算利息时所称本金、本利和的概念,相当于资金时间价值理论中的现值和终值,利率(用i表示)可视为资金时间价值的一种具体表现:现值和终值对应的时点之间可以划分为n期(n≥1),相当于计息期。 【注意】终值与现值概念的相对性。 【思考】现值与终值之间的差额是什么?两者之间的差额是利息. 三、利息的两种计算方式 1.单利计息方式:只对本金计算利息。以本金为基数计算利息,所生利息不再加入本金滚动计算下期利息(各期的利息是相同的)。 2.复利计息方式:既对本金计算利息,也对前期的利息计算利息。将所生利息加入本金,逐年滚动计算利息的方法。(各期的利息是不同的)。 【提示】除非特别指明,否则在计算利息的时候使用的都是复利计息。

四、复利终值与现值 1.复利终值 复利终值的计算公式为: F=P(1+i)n 在上式中,(1+i)n称为“复利终值系数”,用符号(F/P,i,n)表示。这样,上式就 可以写为: F=P(F/P,i,n) 【提示】在平时做题时,复利终值系数可以查表得到。考试时,一般会直接给出。但需要注意的是,考试中系数是以符号的形式给出的。因此,对于有关系数的表示符号需要掌握。 【例题1·计算题】某人将100元存入银行,复利年利率2%,求5年后的终值。 【答案】5年后的终值=100×(1+2%)5=100×(F/P,2%,5)=100×1.104=110.4(元)。 【注意】如果不加注明,一般均按照复利计算。 2.复利现值 复利现值的计算公式为: 上式中,(1+i)-n称为“复利现值系数”,用符号(P/F,i,n)表示,平时做题时, 可查表得出,考试时一般会直接给出。 【例题2·计算题】某人存入一笔钱,想5年后得到10万,若银行存款利率为5%,要求计算按照复利计息,现在应存入银行多少资金? 【答案】 如果按照复利计息:P=10×(1+5%)-5 =(P/F,5%,5)=10×0.7835=7.835(万元)。 【结论】 (1)复利终值和复利现值互为逆运算; (2)复利终值系数(1+i)n和复利现值系数1/(1+i)n互为倒数。 【例题3·计算题】甲公司主要从事化工产品的生产和销售。2007年12月31日,甲公司一套化工产品生产线达到预定可使用状态并投入使用,预计使用寿命为15年,根据有关法律,甲公司在该生产线使用寿命届满时应对环境进行复原,预计将发生弃置费用200 000万元。甲公司采用的折现率为10%。 【答案】 甲公司与弃置费用有关的账务处理如下: 2007年12月31日,按弃置费用现值计入固定资产原价 应计入固定资产原价金额=200 000*0.2394(15年10%的复利现值系数)=47 880(万元)。 借:固定资产 47 880 贷:预计负债 47 880 五、年金的终值和年金现值的计算(重点) (一)年金的含义

计算方法简明教程插值法习题解析

第二章 插值法 1.当1,1,2x =-时,()0,3,4f x =-,求()f x 的二次插值多项式。 解: 0120121200102021101201220211,1,2, ()0,()3,()4;()()1()(1)(2)()()2 ()()1()(1)(2)()()6()()1()(1)(1) ()() 3x x x f x f x f x x x x x l x x x x x x x x x x x l x x x x x x x x x x x l x x x x x x x ==-===-=--==-+-----==------= =-+-- 则二次拉格朗日插值多项式为 2 20 ()()k k k L x y l x == ∑ 022 3()4() 14(1)(2)(1)(1)2 3 5376 2 3 l x l x x x x x x x =-+=- --+ -+=+ - 2.给出()ln f x x =的数值表 用线性插值及二次插值计算ln 0.54的近似值。 解:由表格知, 01234012340.4,0.5,0.6,0.7,0.8;()0.916291,()0.693147()0.510826,()0.356675()0.223144 x x x x x f x f x f x f x f x ======-=-=-=-=- 若采用线性插值法计算ln 0.54即(0.54)f , 则0.50.540.6<<

21121221 11122()10(0.6)()10(0.5) ()()()()() x x l x x x x x x l x x x x L x f x l x f x l x -==----= =---=+ 6.93147( 0.6) 5.10826 (x x =--- 1(0.54)0.62021860.620219L ∴=-≈- 若采用二次插值法计算ln 0.54时, 1200102021101201220212001122()()()50(0.5)(0.6)()()()()()100(0.4)(0.6)()()()()()50(0.4)(0.5) ()() ()()()()()()() x x x x l x x x x x x x x x x x l x x x x x x x x x x x l x x x x x x x L x f x l x f x l x f x l x --==------==-------= =----=++ 500.916291( 0.5)( 0.6) 69.3147( 0.4)(0.6)0.51082650(0.4)(0.5 x x x x x x =-?--+---?--2(0.54)0.615319840.615320 L ∴=- ≈- 3.给全cos ,090x x ≤≤ 的函数表,步长1(1/60),h '== 若函数表具有5位有效数字,研究用线性插值求cos x 近似值时的总误差界。 解:求解cos x 近似值时,误差可以分为两个部分,一方面,x 是近似值,具有5位有效数字,在此后的计算过程中产生一定的误差传播;另一方面,利用插值法求函数cos x 的近似值时,采用的线性插值法插值余项不为0,也会有一定的误差。因此,总误差界的计算应综合以上两方面的因素。 当090x ≤≤ 时, 令()cos f x x = 取0110,( )6060 180 10800 x h π π === ? = 令0,0,1,...,5400i x x ih i =+= 则5400902x π = = 当[]1,k k x x x -∈时,线性插值多项式为

插值方法练习题

插值方法练习题 一.已知函数y = f (x)的一组数据 对这些数据进行多项式插值和三次样条插值,并求:x = 3.5 4.1 6.2 4.5时,y相应的多项式插值和三次样条插值函数值。 二.绘制上题中函数y = f (x)在区间[0, 10]上的多项式插值函数图形,并将已知点用“o”标出。 三.求出上题中每一小段内的三次函数。绘制上题中函数y = f(x)在区间[0, 10]上的三次样条插值函数图形,并将已知点用“ ”标出。 四.对函数y = 1/(1+x2)在[-5, 5]上进行多项式插值,如何避免Runge现象。 五.对下表给出的数据作曲面插值 参考答案: 一.y = 13.2476 12.6730 9.8032 11.9877 附:命令行 x=[0 1 2 3 4 5 6 7 8 9 10]; y=[12.34 13.02 13.98 13.52 12.81 11.08 9.96 9.51 10.23 11.14 12.25]; xx=[3.5 4.1 6.2 4.5]; p=polyfit(x,y,10); y1=polyval(p,xx) yy=spline(x,y,xx) 二.

附:命令行 x=[0 1 2 3 4 5 6 7 8 9 10]; y=[12.34 13.02 13.98 13.52 12.81 11.08 9.96 9.51 10.23 11.14 12.25]; xx=0:0.0001:10; p=polyfit(x,y,10); y1=polyval(p,xx); plot(xx,y1,‘-‘,x,y,’o’) 三.p1 = -0.4440 1.4719 -0.3479 12.3400 p2 = -0.4440 1.4719 -0.3479 12.3400 p3 = 0.5198 -4.3109 11.2177 4.6295 p4 = -0.4654 4.5561 -15.3834 31.2307 p5 = 0.5717 -7.8892 34.3977 -35.1441 p6 = -0.1915 3.5588 -22.8420 60.2554 p7 = 0.2542 -4.4634 25.2912 -36.0109 p8 = -0.3253 7.7064 -59.8974 162.7624 p9 = 0.0671 -1.7107 15.4393 -38.1354 p10 = 0.0671 -1.7107 15.4393 -38.1354 附:命令行 x=[0 1 2 3 4 5 6 7 8 9 10]; y=[12.34 13.02 13.98 13.52 12.81 11.08 9.96 9.51 10.23 11.14 12.25]; xx=0:0.0001:10;

相关文档