当前位置:首页 > 样条插值及应用深入研究
学院: 研究生学院 专业: 机械工程 组号: 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-
共分享92篇相关文档