www.gusucode.com > 高等数学问题求解源码程序 > CH07/diff_ctr.m
function [dy,dx]=diff_ctr(y,dt,n) %DIFF_CTR 数值微分求解 % [DY,DX]=DIFF_CTR(Y,DT,N) 利用中心差分算法求解离散数据Y的N解数值导数 % % 输入参数: % ---Y:给定的等间距的实验数据 % ---DT:自变量的间距 % ---N:数值求导阶次 % 输出参数: % ---DY,DX:求得的导数向量与对应的自变量向量 % % See also diff yx1=[y 0 0 0 0 0];yx2=[0 y 0 0 0 0];yx3=[0 0 y 0 0 0]; yx4=[0 0 0 y 0 0];yx5=[0 0 0 0 y 0];yx6=[0 0 0 0 0 y]; switch n case 1 dy=(-diff(yx1)+7*diff(yx2)+7*diff(yx3)-diff(yx4))/(12*dt); L0=3; case 2 dy=(-diff(yx1)+15*diff(yx2)-15*diff(yx3)+diff(yx4))/(12*dt^2); L0=3; case 3 dy=(-diff(yx1)+7*diff(yx2)-6*diff(yx3)-6*diff(yx4)+... 7*diff(yx5)-diff(yx6))/(8*dt^3);L0=5; case 4 dy=(-diff(yx1)+11*diff(yx2)-28*diff(yx3)+28*diff(yx4)-... 11*diff(yx5)+diff(yx6))/(6*dt^4);L0=5; end dy=dy(L0+1:end-L0); dx=((1:length(dy))+L0-2-(n>2))*dt; web -broswer http://www.ilovematlab.cn/forum-221-1.html