欢迎来到天天文库
浏览记录
ID:14482554
大小:101.00 KB
页数:5页
时间:2018-07-29
《三次样条插值函数逼近车门曲线》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、三次样条插值函数逼近车门曲线。插值节点数据:x012345678910y2.513.304.044.705.225.545.785.405.575.705.80y′0.80.2要求1)写出程序清单,生成M文件2)画出车门曲线图,给出插值结果,生成DOC文件。1、functionyi=cubic_spline2(x,y,ydot,xi)%三次样条插值公式(三弯矩方程,第一类边界条件)%x为向量,全部的插值节点;%y为向量,插值节点处的函数值;%ydot为向量,端点处的导数值;若缺省,则用均差代替导数;
2、%xi为标量,自变量x;%yi为xi处的函数估计值。n=length(x);ny=length(y);%输入的插值点与它的函数值应有相同的个数ifn~=nyerror('ThelengthsofXandYmustbeequal');return;end%如果没有给出端点处的导数值,则用均差代替导数ifisempty(ydot)==1ydot=[(y(2)-y(1))/(x(2)-x(1))(y(n)-y(n-1))/(x(n)-x(n-1))];endh=zeros(1,n);lambda=ones
3、(1,n);mu=ones(1,n);m=zeros(n,1);d=zeros(n,1);fork=2:nh(k)=x(k)-x(k-1);%插入节点必须互异ifabs(h(k))4、k));endd(2)=d(2)-lambda(2)*ydot(1);d(n-1)=d(n-1)-mu(n-1)*ydot(2);d(n)=[];d(1)=[];lambda(n)=[];lambda(1)=[];mu(n)=[];mu(1)=[];A=diag(2*ones(1,n-2));fori=1:n-3A(i,i+1)=mu(i);A(i+1,i)=lambda(i+1);endm=Ad;m=[ydot(1);m;ydot(2)];fork=2:nifx(k-1)<=xi&&xi<=x(5、k)yi=y(k-1)/h(k)^3*(xi-x(k))^2*(h(k)+2*(xi-x(k-1)))+y(k)/h(k)^3*(xi-x(k-1))^2*(h(k)+2*(x(k)-xi))+m(k-1)/h(k)^2*(xi-x(k-1))*(xi-x(k))^2+m(k)/h(k)^2*(xi-x(k))*(xi-x(k-1))^2;return;endend函数调用:>>x=[012345678910];y=[2.513.304.044.705.225.545.785.405.575.7056、.80];ydot=[0.80.2];xx=0.0:0.01:10.0;yy=cubic_spline2(x,y,ydot,xx);plot(x,y,'o',xx,yy,'r')%求插值函数系数:fork=2:na(k-1)=y(k-1)/h(k)^3;b(k-1)=y(k)/h(k)^3;c(k-1)=2*(y(k-1)/h(k)^3)+m(k-1)/h(k)^2;e(k-1)=m(k)/h(k)^2-2*(y(k)/h(k)^3);end结果显示:各区间的插值函数:区间三次样条差值
4、k));endd(2)=d(2)-lambda(2)*ydot(1);d(n-1)=d(n-1)-mu(n-1)*ydot(2);d(n)=[];d(1)=[];lambda(n)=[];lambda(1)=[];mu(n)=[];mu(1)=[];A=diag(2*ones(1,n-2));fori=1:n-3A(i,i+1)=mu(i);A(i+1,i)=lambda(i+1);endm=Ad;m=[ydot(1);m;ydot(2)];fork=2:nifx(k-1)<=xi&&xi<=x(
5、k)yi=y(k-1)/h(k)^3*(xi-x(k))^2*(h(k)+2*(xi-x(k-1)))+y(k)/h(k)^3*(xi-x(k-1))^2*(h(k)+2*(x(k)-xi))+m(k-1)/h(k)^2*(xi-x(k-1))*(xi-x(k))^2+m(k)/h(k)^2*(xi-x(k))*(xi-x(k-1))^2;return;endend函数调用:>>x=[012345678910];y=[2.513.304.044.705.225.545.785.405.575.705
6、.80];ydot=[0.80.2];xx=0.0:0.01:10.0;yy=cubic_spline2(x,y,ydot,xx);plot(x,y,'o',xx,yy,'r')%求插值函数系数:fork=2:na(k-1)=y(k-1)/h(k)^3;b(k-1)=y(k)/h(k)^3;c(k-1)=2*(y(k-1)/h(k)^3)+m(k-1)/h(k)^2;e(k-1)=m(k)/h(k)^2-2*(y(k)/h(k)^3);end结果显示:各区间的插值函数:区间三次样条差值
此文档下载收益归作者所有