资源描述:
《matlab代码--数值微分》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数值微分1.MidPoint中点公式求取导数functiondf=MidPoint(func,x0,h)ifnargin==2h=0.1;elseif(nargin==3&&h==0.0)disp('h不能为0!');return;endendy1=subs(sym(func),findsym(sym(func)),x0+h);y2=subs(sym(func),findsym(sym(func)),x0-h);df=(y1-y2)/(2*h);2.ThreePoint三点法求函数的导数functiondf=ThreePoint(func,x0,type,h)ifnargin==3h=0.1
2、;elseif(nargin==4&&h==0.0)disp('h不能为0!');return;endendy0=subs(sym(func),findsym(sym(func)),x0);y1=subs(sym(func),findsym(sym(func)),x0+h);y2=subs(sym(func),findsym(sym(func)),x0+2*h);y_1=subs(sym(func),findsym(sym(func)),x0-h);y_2=subs(sym(func),findsym(sym(func)),x0-2*h);switchtypecase1,df=(-3*y0+
3、4*y1-y2)/(2*h);%用第一个公式求导数case2,df=(3*y0-4*y_1+y_2)/(2*h);%用第二个公式求导数case3,df=(y1-y_1)/(2*h);%用第三个公式求导数end3.FivePoint五点法求函数的导数functiondf=FivePoint(func,x0,type,h)ifnargin==3h=0.1;elseif(nargin==4&&h==0.0)disp('h不能为0!');return;endendy0=subs(sym(func),findsym(sym(func)),x0);y1=subs(sym(func),findsym(sy
4、m(func)),x0+h);y2=subs(sym(func),findsym(sym(func)),x0+2*h);y3=subs(sym(func),findsym(sym(func)),x0+3*h);y4=subs(sym(func),findsym(sym(func)),x0+4*h);y_1=subs(sym(func),findsym(sym(func)),x0-h);y_2=subs(sym(func),findsym(sym(func)),x0-2*h);y_3=subs(sym(func),findsym(sym(func)),x0-3*h);y_4=subs(sym(
5、func),findsym(sym(func)),x0-4*h);switchtypecase1,df=(-25*y0+48*y1-36*y2+16*y3-3*y4)/(12*h);%用第一个公式求导数case2,df=(-3*y_1-10*y0+18*y1-6*y2+y3)/(12*h);%用第二个公式求导数case3,df=(y_2-8*y_1+8*y1-y2)/(12*h);%用第三个公式求导数case4,df=(3*y1+10*y0-18*y_1+6*y_2-y_3)/(12*h);%用第四个公式求导数case5,df=(25*y0-48*y_1+36*y_2-16*y_3+3*y_
6、4)/(12*h);%用第五个公式求导数end4.DiffBSample三次样条法求函数的导数functiondf0=DiffBSample(func,x0,n,h)formatlong;node_num=2*n+1;fori=1:node_numy(i)=subs(sym(func),findsym(sym(func)),x0-n*h+i*h-h);endy_1=(-3*y(1)+4*y(2)-y(3))/(2*h);y_N=(3*y(2*n+1)-4*y(2*n)+3*y(2*n-1))/(2*h);c=SubBSample(h,2*n,y,y_1,y_N);df0=(c(n+3)-c(
7、n+1))/2/h;formatshort;functionc=SubBSample(h,n,y,y_1,y_N)f0=0.0;c=zeros(n+3,1);b=zeros(n+1,1);A=diag(4*ones(n+1,1));I=eye(n+1,n+1);AL=[I(2:n+1,:);zeros(1,n+1)];AU=[zeros(1,n+1);I(1:n,:)];A=A+AL+AU;%形成系数矩阵fo