样条插值及应用深入研究 联系客服

发布时间 : 星期日 文章样条插值及应用深入研究更新完毕开始阅读

学院: 研究生学院 专业: 机械工程 组号: 39 成绩:

2、给出以下函数表,求出满足边界条件S''(0)?1,S''(3)?2的三次样条插值和自然样条插值。

x f(x) f''(x)

0 0 1 1 1 2 1 3 0 2 (1) 满足边界条件S''(0)?1,S''(3)?2的三次样条插值

Mathematics程序: Clear[x,y,a,b,c,M] x[i_]:=i; y[0]=0; y[1]=1; y[2]=1; y[3]=0;

B=Table[{x[i],y[i]},{i,0,3}]; y''[0]=1; y''[3]=2; h[j_]:=1;

a[j_]:=h[j-1]/(h[j-1]+h[j]); b[j_]:=1-a[j];

c[1]=6((y[2]-y[1])/h[1]-(y[1]-y[0])/h[0])/(h[0]+h[1])-h[0]y''[0]/(h[0]+h[1]);

-41-

学院: 研究生学院 专业: 机械工程 组号: 39 成绩:

c[2]=6((y[3]-y[2])/h[2]-(y[2]-y[1])/h[1])/(h[1]+h[2])-h[2]y''[3]/(h[1]+h[2]); A=Table[Switch[i-j,-1,b[j-1],0,2,1,a[j+1],_,0],{i,1,2},{j,1,2}]; MatrixForm[%] CC=Table[c[j],{j,1,2}]; MatrixForm[%] LinearSolve[A,CC]; MatrixForm[%];

M[j_]:=LinearSolve[A,CC][[j]] Table[M[j],{j,1,2}] M[0]=1; M[3]=2;

S[j_]:=M[j+1](x-x[j])^3/(6h[j])-M[j](x-x[j+1])^3/(6h[j])+ (y[j+1]-M[j+1]h[j]^2/6)(x-x[j])/h[j]- (y[j]-M[j]h[j]^2/6)(x-x[j+1])/h[j] Table[S[j],{j,0,2}]; Expand[%]; MatrixForm[%] g1=Plot[%[[1]],{x,0,1}] g2=Plot[%%[[2]],{x,1,2}] g3=Plot[%%%[[3]],{x,2,3}]

g4=ListPlot[B,Prolog->AbsolutePointSize[15]] Show[g1,g2,g3,g4,Prolog->AbsolutePointSize[15]]

运行结果如下:

-42-

学院: 研究生学院 专业: 机械工程 组号: 39 成绩:

(2) 自然样条插值。

Mathematics程序:

Clear[x,y,a,b,c,M] x[i_]:=i; y[0]=0; y[1]=1; y[2]=1; y[3]=0;

B=Table[{x[i],y[i]},{i,0,3}]; y''[0]=0; y''[3]=0; h[j_]:=1;

a[j_]:=h[j-1]/(h[j-1]+h[j]); b[j_]:=1-a[j];

c[1]=6((y[2]-y[1])/h[1]-(y[1]-y[0])/h[0])/(h[0]+h[1])-h[0]y''[0]/(h[0]+h[1]); c[2]=6((y[3]-y[2])/h[2]-(y[2]-y[1])/h[1])/(h[1]+h[2])-h[2]y''[3]/(h[1]+h[2]); A=Table[Switch[i-j,-1,b[j-1],0,2,1,a[j+1],_,0],{i,1,2},{j,1,2}]; MatrixForm[%] CC=Table[c[j],{j,1,2}]; MatrixForm[%] LinearSolve[A,CC]; MatrixForm[%];

M[j_]:=LinearSolve[A,CC][[j]]

-43-

学院: 研究生学院 专业: 机械工程 组号: 39 成绩:

Table[M[j],{j,1,2}] M[0]=0; M[3]=0;

S[j_]:=M[j+1](x-x[j])^3/(6h[j])-M[j](x-x[j+1])^3/(6h[j])+ (y[j+1]-M[j+1]h[j]^2/6)(x-x[j])/h[j]- (y[j]-M[j]h[j]^2/6)(x-x[j+1])/h[j] Table[S[j],{j,0,2}]; Expand[%]; MatrixForm[%] g1=Plot[%[[1]],{x,0,1}] g2=Plot[%%[[2]],{x,1,2}] g3=Plot[%%%[[3]],{x,2,3}]

g4=ListPlot[B,Prolog->AbsolutePointSize[15]] Show[g1,g2,g3,g4,Prolog->AbsolutePointSize[15]]

运行结果如下:

3、样条插值的思想最早产生于工业部门,作为工业应用的例子,某汽车制造商用三次样条插

-44-