欢迎来到天天文库
浏览记录
ID:41996244
大小:176.09 KB
页数:6页
时间:2019-09-06
《三次样条差值拟合车门曲线》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、数学实验(三次样条)数学实验(三次样条插值)某汽车制造商用三次样条插值设计车门的曲线,其中一段的数据如下:0123456789100.00.791.532」92.713.033.272.893.063」93.29/0.80.2用三次样条插值求S10(x),用软件绘制S10(x)的图像,即车门的曲线。1、计算几(尢):程序://splineaaaa.cpp:定义控制台应用程序的入口点。//**三次样条差值**//***第一步,利用差商,代替导数,求差商;//***第二步,利用追赶法求解三对角方程组,得到M[i];//***第三步,将求得值带入三次样条函数,求得S(x);#in
2、clude#include#include#dcfincN10doublex[N+1],fx[N+1],h[N],H[N],f[N],a[N+1],b[N+1],c[N+1],M[N+1],beta[N+1],y[N+1],s[N];//定义变量数组;doubletiaojianl,tiaojian2;//边界条件;//求插商;voidchashangOint■1;for(i=0;i<=N-1;;i++)h[i]=x[i+1]-x[ihfor(i=0;i<=N-1;;i++)f[i]=(fx[i+1]-fx[i])/(x
3、[i+1]-x[i]);for(i二1;i<=N-1;;i卄)a[i]=h[i-1]/(h[i--1]+h[i]);b[i]=h[i]/(h[i-1]+h[i]);}c[i]=3*(a[i]*f[i-1]+b[i]*for(i=1;i<=N-1;i++){H[i]=pow(h[i],2)://求h[i]的平方;}//利用追赶法解三对角方程组前期初始值:a[N]=l;//a[N]相当于P[N];b[0]=1;//X[0];c[0]=6.*(f[0]-tiaojianl)/h[0];//相当于cl[0];c[N]=6.*(tiaojian2-f[N-1])/h[N-1]://相
4、当于d[N];}//追赶法计算弯矩向量M[i];voidZhuigan()inti;beta[0]二b[0]/2.;y[0]=c[0]/2.;〃计算B[i];for(i=1;i<=N-1;i++)beta[i]=b[i]/(2.-a[i]*beta[i-1]):for(i=1;i<=N;i++)y[i]=(c[i]一a[i]*y[i1])/(2・-a[i]*beta[i-1]);//顺序求解计算y[i];M[N]=y[N];//逆序求解计算Mi]for(i=N-1;i>=0;i—)M[i]=y[i]-beta[i]*M[i+1];〃输岀三次样条差值苗数SI(x)、S10(x
5、)voidPrintsOinti;for(i=0;i6、53;=2.19;x[4]=4fx[4]=2.71;x[5]=5fx[5]=3.03;x[6]=6fx[6]=3.27;x[7]=7fx[7]=2.89;x[8]=8fx[8]=3.06;x[9]二9fx[9]二3.19;x[10]=10;fx[10]=3.29;tiaojianl=0.8;tiaojian2=0.2;chashangO:printfC追赶法计算所得M[i]:");Zhuigan();for(i=0:i<=N;i++)printf("%f",M[i]);printfC三次插值多项式s[i]二");Prints();}结果:追赶法计算所得M[i]:7、-0.6038191.1476380.6032690.6392880.3795800.362392-0.149149-0.1857950.2623290.0364770.281761三次插值多项式s[i]=sl=-0.100636.*(1.000000-xl).A3+0.191273.*xl.A3+0.790000.*xl;s2=0.191273.*(2.000000-x2).A3+0.100545.*(x2-l.000000).A3+0.598727.*(2.000000-x2)+1.429455.*(x2-l.
6、53;=2.19;x[4]=4fx[4]=2.71;x[5]=5fx[5]=3.03;x[6]=6fx[6]=3.27;x[7]=7fx[7]=2.89;x[8]=8fx[8]=3.06;x[9]二9fx[9]二3.19;x[10]=10;fx[10]=3.29;tiaojianl=0.8;tiaojian2=0.2;chashangO:printfC追赶法计算所得M[i]:");Zhuigan();for(i=0:i<=N;i++)printf("%f",M[i]);printfC三次插值多项式s[i]二");Prints();}结果:追赶法计算所得M[i]:
7、-0.6038191.1476380.6032690.6392880.3795800.362392-0.149149-0.1857950.2623290.0364770.281761三次插值多项式s[i]=sl=-0.100636.*(1.000000-xl).A3+0.191273.*xl.A3+0.790000.*xl;s2=0.191273.*(2.000000-x2).A3+0.100545.*(x2-l.000000).A3+0.598727.*(2.000000-x2)+1.429455.*(x2-l.
此文档下载收益归作者所有