: .
h 为离散步长;
df 为导数值。
(2)流程图:
4(3)源程序:
function df=FivePoint(func,x0,type,h)
%采用五点公式,求取函数func在x0处的导数
%函数名:func
%求导点:x0
%公式的形式:type(取值为1,2,3,4,5)
%离散步长:h
%导数值:df
if nargin==3
h=;
else if(nargin==4&&h==)
disp('h不能为0!');
return;
5end
end
y0=subs(sym(func),findsym(sym(func)),x0);
y1=subs(sym(func),findsym(sym(func)),x0+h);%将函数func中的求导点
x0用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(func),findsym(sym(func)),x0-4*h);
switch type
case 1,
df=(-25*y0+48*y1-36*y2+16*y3-3*y4)/(12*h);
case 2,
df=(-3*y_1-10*y0+18*y1-6*y2+y3)/(12*h);
case 3,
df=(y_2-8*y_1+8*y1-y2)/(12*h);
case 4,
df=(3*y1+10*y0-18*y_1+6*y_2-y_3)/(12*h);
case 5,
6df=(25*y0-48*y_1+36*y_2-16*y_3+3*y_4)/(12*h);
end
(4)应用实例:采用五点公式法求函数f=sin(x)在x=2处的导数。
在命令窗中输入:
>> df1=FivePoint('sin(x)',2,1)
df2=FivePoint('sin(x)',2,2)
df3=FivePoint('sin(x)',2,3)
df4=FivePoint('sin(x)',2,4)
df5=FivePoint('sin(x)',2,5)
运行结果:
72、编程解决以下科学计算和工程实际问题。
8①已知阿波罗(Apollo)卫星的运动轨迹(x,y)满足下列微分方程
.. * x (x * )
x 2 y x
r 3 r 3
1 2
.. . * y y
y 2 x y
r 3 r 3
1 2
其中 = 1 , *=1- r (x ) 2 y 2 , r (x * ) 2 y 2
0604090108 帅晶 来自淘豆网m.daumloan.com转载请标明出处.