欢迎来到天天文库
浏览记录
ID:58963245
大小:67.00 KB
页数:6页
时间:2020-10-27
《三次样条差值拟合车门曲线.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数学实验(三次样条)数学实验(三次样条插值)实验1:某汽车制造商用三次样条插值设计车门的曲线,其中一段的数据如下:0123456789100.00.791.532.192.713.033.272.893.063.193.290.80.2用三次样条插值求,用软件绘制的图像,即车门的曲线。1、计算:程序://splineaaaa.cpp:定义控制台应用程序的入口点。//**三次样条差值**//***第一步,利用差商,代替导数,求差商;//***第二步,利用追赶法求解三对角方程组,得到M[i];//***第三步,将求得值带入三次样条函数,求得S(x)
2、;#include#include#include#defineN10doublex[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];//定义变量数组;doubletiaojian1,tiaojian2;//边界条件;//求插商;voidchashang(){inti;for(i=0;i<=N-1;i++)h[i]=x[i+1]-x[i];for(i=0;i<=N-1;i++)f[i]
3、=(fx[i+1]-fx[i])/(x[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]*f[i]);}for(i=1;i<=N-1;i++){H[i]=pow(h[i],2);//求h[i]的平方;}//利用追赶法解三对角方程组前期初始值;a[N]=1;//a[N]相当于μ[N];b[0]=1;//λ[0];c[0]=6.*(f[0]-tiaojian1)/h[0];//相当于d[0
4、];c[N]=6.*(tiaojian2-f[N-1])/h[N-1];//相当于d[N];}//追赶法计算弯矩向量M[i];voidZhuigan(){inti;beta[0]=b[0]/2.;y[0]=c[0]/2.;for(i=1;i<=N-1;i++)beta[i]=b[i]/(2.-a[i]*beta[i-1]);//计算β[i];for(i=1;i<=N;i++)y[i]=(c[i]-a[i]*y[i-1])/(2.-a[i]*beta[i-1]);//顺序求解计算y[i];M[N]=y[N];for(i=N-1;i>=0;i--)
5、//逆序求解计算M[i]M[i]=y[i]-beta[i]*M[i+1];}//输出三次样条差值函数S1(x)~S10(x)voidPrints(){inti;for(i=0;i6、i]);}}//主函数调用;voidmain(){inti;x[0]=0;fx[0]=0.0;x[1]=1;fx[1]=0.79;x[2]=2;fx[2]=1.53;x[3]=3;fx[3]=2.19;x[4]=4;fx[4]=2.71;x[5]=5;fx[5]=3.03;x[6]=6;fx[6]=3.27;x[7]=7;fx[7]=2.89;x[8]=8;fx[8]=3.06;x[9]=9;fx[9]=3.19;x[10]=10;fx[10]=3.29;tiaojian1=0.8;tiaojian2=0.2;chashang();printf7、("追赶法计算所得M[i]:");Zhuigan();for(i=0;i<=N;i++)printf("%f",M[i]);printf("三次插值多项式s[i]=");Prints();}结果:追赶法计算所得M[i]:-0.1.0.0.0.0.-0.-0.0.0.0.三次插值多项式s[i]=s1=-0..*(1.-x1).^3+0..*x1.^3+0..*x1;s2=0..*(2.-x2).^3+0..*(x2-1.).^3+0..*(2.-x2)+1..*(x2-1.);s3=0..*(3.-x3).^3+0..*(x3-2.)8、.^3+1..*(3.-x3)+2..*(x3-2.);s4=0..*(4.-x4).^3+0..*(x4-3.).^3+2..*(4.-x4)+2.
6、i]);}}//主函数调用;voidmain(){inti;x[0]=0;fx[0]=0.0;x[1]=1;fx[1]=0.79;x[2]=2;fx[2]=1.53;x[3]=3;fx[3]=2.19;x[4]=4;fx[4]=2.71;x[5]=5;fx[5]=3.03;x[6]=6;fx[6]=3.27;x[7]=7;fx[7]=2.89;x[8]=8;fx[8]=3.06;x[9]=9;fx[9]=3.19;x[10]=10;fx[10]=3.29;tiaojian1=0.8;tiaojian2=0.2;chashang();printf
7、("追赶法计算所得M[i]:");Zhuigan();for(i=0;i<=N;i++)printf("%f",M[i]);printf("三次插值多项式s[i]=");Prints();}结果:追赶法计算所得M[i]:-0.1.0.0.0.0.-0.-0.0.0.0.三次插值多项式s[i]=s1=-0..*(1.-x1).^3+0..*x1.^3+0..*x1;s2=0..*(2.-x2).^3+0..*(x2-1.).^3+0..*(2.-x2)+1..*(x2-1.);s3=0..*(3.-x3).^3+0..*(x3-2.)
8、.^3+1..*(3.-x3)+2..*(x3-2.);s4=0..*(4.-x4).^3+0..*(x4-3.).^3+2..*(4.-x4)+2.
此文档下载收益归作者所有