第四章 MATLAB符号计算 4.2 微积分运算
4.2.1 导数
在MATLAB系统中为用户提供了一元显函数求导的符号计算函数diff,可以调用此函数求符号导数,不但使用方便,而且计算准确,迅速,尤其是求结构复杂的高阶导数更显示出其优越性。用diff可以求一元显函数的各阶导函数和在某点处的各阶导数。在这里将一元显函数y?f(x)的各阶导函数y',y\,y''',?分别记作yx,yxx,yxxx,?。用diff 作符号求导函数和在一点处的导数的调用格式和功能如表4-1。
表4-1 求一元显函数y?f(x)的各阶导函数的MATLAB方法
符号求导的命令 yx=diff(f(x),x) yxx=diff(f(x),x,2) 或yxx=diff(yx,x) yxxx=diff(f(x),x,3) 或yxxx=diff(yxx,x) yxn=diff(f(x),x,n) 求函数y?f(x)对求函数y?f(x)对x的三阶导函数y'''?f'''功 能 求函数y?f(x)对x的一阶导函数y'?f(x) 求函数y?f(x)对x的二阶导函数y''?f(x) '''(x) x的n阶导函数y(n)?f(n)(x) yn=simple(yxn) pretty(diff(f(x),x) 将n阶导函数y(n)?f(n)(x)化简,并记作yn。 输出一个符合日常书写习惯的表达式 [例1] 设一元函数y?arctan(3x2?2sin(5x3?2)),求y的一阶导函数y'(x)和四阶导函数y(4)(x)。
解 下面用函数diff的两种调用格式求解。
(1)输入计算y对x的一阶导函数和四阶导函数的程序:
>> syms x y
y=atan(3*x^2+2*sin(5*x^3-2)); yx=diff (y,x); yx4=diff (y,x,4);
y1=simple(yx), pretty(y1) y4=simple(yx4), pretty(y4)
运行后屏幕显示y对x的一阶导数和四阶导数如下:
y1 =
(6*x+30*cos(5*x^3-2)*x^2)/(1+(3*x^2+2*sin(5*x^3-2))^2) y4 =
(101250*sin(5*x^3-2)*x^8-81000*cos(5*x^3-2)*x^5-9000*s
in(5*x^3-2)*x^2)/(1+(3*x^2+2*sin(5*x^3-2))^2)-8*(-6750*cos(5*x^3-2)*x^6-2700*sin(5*x^3-2)*x^3+60*cos(5*x^3-2))/(1+(3*x^2+2*sin(5*x^3-2))^2)^2*(3*x^2+2*sin(5*x^3-2))*(6*x+30*cos(5*x^3-2)*x^2)+48*(6-450*sin(5*x^3-2)*x^4+60*cos(5*x^3-2)*x)/(1+(3*x^2+2*sin(5*x^3-2))^2)^3*(3*x^2+2*sin(5*x^3-2))^2*(6*x+30*cos(5*x^3-2)*x^2)^2-12*(6-450*sin(5*x^3-2)*x^4+60*cos(5*x^3-2)*x)/(1+(3*x^2+2*sin(5*x^3-2))^2)^2*(6*x+30*cos(5*x^3-2)*x^2)^2-6*(6-450*sin(5*x^3-2)*x^4+60*cos(5*x^3-2)*x)^2/(1+(3*x^2+2*sin(5*x^3-2))^2)^2*(3*x^2+2*sin(5*x^3-2))-48*(6*x+30*cos(5*x^3-2)*x^2)^4/(1+(3*x^2+2*sin(5*x^3-2))^2)^4*(3*x^2+2*sin(5*x^3-2))^3+24*(6*x+30*cos(5*x^3-2)*x^2)^4/(1+(3*x^2+2*sin(5*x^3-2))^2)^3*(3*x^2+2*sin(5*x^3-2))
(2) 用下面的MATLAB程序分别计算y对x的一阶导数和四阶导数:
>> syms x y
yx=diff((6*x+30*cos(5*x^3-2)*x^2)/(1+(3*x^2+2*sin(5*x^
3-2))^2),x)
yx4=diff((6*x+30*cos(5*x^3-2)*x^2)/(1+(3*x^2+2*sin(5*x
^3-2))^2),x,4)
所得到的结果与(1)相同。
235[例2] 设一元函数y?(3x?2cos(5x?2))ln(13x?6)?2x?1。 25x?6(5)'(1)求y的一阶导函数y(x)和五阶导函数y(x); (5)'(2)求y在x?0处的一阶导数y(0)和五阶导数y(0)。 '解 (1)输入计算y对x的一阶导函数y(x)和五阶导函数y(5)(x)的程序:
>> syms x y
y=(3*x^2+2*cos(5*x^3-2))*log(13*x^5+6)+(2*x-1)/(5*x^2+
6);
yx=diff (y,x,1); yx5=diff (y,x,5); y1=simple(yx) y5=simple(yx5)
运行后屏幕显示化简后的y对x的一阶导函数y1和五阶导函数y5如下:
113 / 8
y1 =
(6*x-30*sin(5*x^3-2)*x^2)*log(13*x^5+6)+65*(3*x^2+2*co
s(5*x^3-2))*x^4/(13*x^5+6)+2/(5*x^2+6)-10*(2*x-1)/(5*x^2+6)^2*x
y5 =
2400000*(2*x-1)/(5*x^2+6)^5*x^3-507000*(6-450*cos(5*x^
3-2)*x^4-60*sin(5*x^3-2)*x)*x^7/(13*x^5+6)^2-2028000*(6*x-30*sin(5*x^3-2)*x^2)*x^6/(13*x^5+6)^2+325*(101250*cos(5*x^3-2)*x^8+81000*sin(5*x^3-2)*x^5-9000*cos(5*x^3-2)*x^2)*x^4/(13*x^5+6)+7800*(6-450*cos(5*x^3-2)*x^4-60*sin(5*x^3-2)*x)*x^2/(13*x^5+6)+7800*(6*x-30*sin(5*x^3-2)*x^2)*x/(13*x^5+6)-90000*(2*x-1)/(5*x^2+6)^4*x-360000/(5*x^2+6)^4*x^2+(-1518750*sin(5*x^3-2)*x^10+2025000*cos(5*x^3-2)*x^7+540000*sin(5*x^3-2)*x^4-18000*cos(5*x^3-2)*x)*log(13*x^5+6)+2400000/(5*x^2+6)^5*x^4+6000/(5*x^2+6)^3+197730000*(3*x^2+2*cos(5*x^3-2))*x^10/(13*x^5+6)^3+2600*(6750*sin(5*x^3-2)*x^6-2700*cos(5*x^3-2)*x^3-60*sin(5*x^3-2))*x^3/(13*x^5+6)+1560*(3*x^2+2*cos(5*x^3-2))/(13*x^5+6)-42250*(6750*sin(5*x^3-2)*x^6-2700*cos(5*x^3-2)*x^3-60*sin(5*x^3-2))*x^8/(13*x^5+6)^2+5492500*(6-450*cos(5*x^3-2)*x^4-60*sin(5*x^3-2)*x)*x^12/(13*x^5+6)^3+65910000*(6*x-30*sin(5*x^3-2)*x^2)*x^11/(13*x^5+6)^3-535518750*(6*x-30*sin(5*x^3-2)*x^2)*x^16/(13*x^5+6)^4-4284150000*(3*x^2+2*cos(5*x^3-2))*x^15/(13*x^5+6)^4+27846975000*(3*x^2+2*cos(5*x^3-2))*x^20/(13*x^5+6)^5-12000000*(2*x-1)/(5*x^2+6)^6*x^5-2535000*(3*x^2+2*cos(5*x^3-2))*x^5/(13*x^5+6)^2
(5)'(2)输入计算y在x?0处的一阶导数y(0)和五阶导数y(0)的程序:
>> x=0;
y1=(6*x-30*sin(5*x^3-2)*x^2)*log(13*x^5+6)+65*(3*x^2+2
*cos(5*x^3......-2))*x^4/(13*x^5+6)+2/(5*x^2+6)-10*(2*x-1)/(5*x^2+6)^2*x,
y5=2400000*(2*x-1)/(5*x^2+6)^5*x^3-507000*(6-450*cos(5
*x^3-2)*x^4......-60*sin(5*x^3-2)*x)*x^7/(13*x^5+6)^2-2028000*(6*x-30*sin(5*x^3-2)*x^2)*x^6/(13*x^5+6)^2+325*(101250*cos(5*x^3-2)*x^8+81000*sin(5*x^3-2)*x^5-9000*cos(5*x^3-2)*x^2)*x^4/(13*x^5+6)+7800*(6-450*cos(5*x^3-2)*x^4-60*sin(5*x^3-2)*x)*x^2/(13*x^5+6)+7800*(6*x-30*sin(5*x^3-2)*x^2)*x/(13*x^5+6)-90000*(2*x-1)/(5*x^2+6)^4*x-360000/(5*x^2+6)^4*x^2+(-1518750*sin(5*x^3-2)*x^10+2025000*cos(5*x^3-2)*x^7+540000*sin(5*x^3-2)*x^4-18000*cos(5*x^3-2)*x)*log(13*x^5+6)+2400000/(5*x^2+6)^5*x^4+6000/(5*x^2+6)^3+197730000*(3*x^2+2*cos(5*x^3-2))*x^10/(13*x^5+6)^3+2600*(6750*sin(5*x^3-2)*x^6-2700*cos(5*x^3-2)*x^3-60*sin(5*x^3-2))*x^3/(13*x^5+6)+1560*(3*x^2+2*cos(5*x^3-2))/(13*x^5+6)-42250*(6750*sin(5*x^3-2)*x^6-2700*cos(5*x^3-2)*x^3-60*sin(5*x^3-2))*x^8/(13*x^5+6)^2+5492500*(6-450*cos(5*x^3-2)*x^4-60*sin(5*x^3-2)*x)*x^12/(13*x^5+6)^3+65910000*(6*x-30*sin(5*x^3-2)*x^2)*x^11/(13*x^5+6)^3-535518750*(6*x-30*sin(5*x^3-2)*x^2)*x^16/(13*x^5+6)^4-4284150000*(3*x^2+2*cos(5*x^3-2))*x^15/(13*x^5+6)^4+27846975000*(3*x^2+2*cos(5*x^3-2))*x^20/(13*x^5+6)^5-12000000*(2*x-1)/(5*x^2+6)^6*x^5-2535000*(3*x^2+2*cos(5*x^3-2))*x^5/(13
114 / 8
*x^5+6)^2
运行后屏幕显示y在x?0处的一阶导数y1和五阶导数y5如下:
y1 =
0.3333 y5 =
-188.6186
[例3] 求下列函数的导数
3x323?6x5x?2?(1) y? ; (2) 。 y?(ln5x)21?2x(6?7x)解 输入程序:
>> syms x
y=(log(5*x))^(x+2);
f=3*x^3*(sqrt((23-6*x^5)/(6+7*x)^2))/(1-2*x); yx=diff (y,x); fx=diff(f,x); y1=simple(yx) f1=simple(fx)
运行后屏幕显示(1)和(2)的导数分别为f1和y1如下:
y1 =
log(5*x)^(x+2)*(log(log(5*x))+(x+2)/x/log(5*x)) f1 =
3*(294*x^7+135*x^6-198*x^5-322*x^2-230*x+414)*x^2/(
23-6*x^5)^(1/2)/(-1+2*x)^2/(6+7*x)^2
4.2.2 积分
如果函数f(x)在区间[a,b]上连续,且F(x)是f(x)的一个原函数,则函数f(x)在区间[a,b]上的定积分为
?baf(x)dx?F(b)?F(a)。我们可以用MATLAB软件中
的函数int对定积分进行符号计算的调用格式和功能如表4-2所示。
表4-2 函数int的求定积分的调用格式和功能 函数int的求定积分的命令 F=int(S,a,b) 功 能 输入量:S可以是被积函数f(x),也可以是由几个被积函数f1(x),f2(x),?,fn(x)构成的矩阵,积分上、下限a 和 b可以是数,也可以是符号标量,积分变量是x。 输出量:F是S关于积分变量x的从a 到 b的定积分。 115 / 8
F=int(S,t,a,b) 输入量:S、a和b同上,t是积分变量。 输出量:F是S关于积分变量t的从a到b的定积分。 [例4] 求
?545dt
(t?1)(t?2)(t?3)解 输入程序:
>> syms t
f=5/((t-1)*(t-2)*(t-3)); F=int(f,t,4,5) y= double (F)
运行后屏幕显示计算的定积分值F和近似值y如下:
F =
25/2*log(2)-15/2*log(3) y =
0.4247
即
[例5] 求
?545dt?0.4247。
(t?1)(t?2)(t?3)?1ax?bdx?e0ndx
解 输入程序:
>> syms x a b d e n
f=(a*x+b)/((d*x+e)^(1/n)); F=int(f,0,1) y=simple(F)
运行后屏幕显示计算的定积分F和化简后的定积分y如下:
F =
n*(-2*e*(d+e)^(1/n)*n*b*d+e^2*(d+e)^(1/n)*n*a+2*e^(1/n)
*n*b*e*d+e^(1/n)*a*d^2*n+2*e^(1/n)*n*b*d^2-e^(1/n)*n*a*e^2-e^(1/n)*b*d^2-e^(1/n)*d*a*e-e^(1/n)*a*d^2+e*(d+e)^(1/n)*b*d-e^(1/n)*e*b*d)/(e^(1/n))/((d+e)^(1/n))/d^2/(-3*n+1+2*n^2)
y =
n*((-2*e*(d+e)^(1/n)*b*d+e^2*(d+e)^(1/n)*a+e^(1/n)*a*d^
2+2*e^(1/n)*b*d^2-e^(1/n)*a*e^2+2*e^(1/n)*e*b*d)*n-e^(1/n)*a*d^2+e*(d+e)^(1/n)*b*d-e^(1/n)*b*d^2-e^(1/n)*d*a*e-e^(1/n)*e*b*d)/(e^(1/n))/((d+e)^(1/n))/d^2/(-3*n+1+2*n^2)
[例6] 求下列不定积分
(1)
?22x29?x21dx;(2)
?212x2?11dx;(3)?dx。
1232x(x?4)解 下面将三个不定积分的被积函数f1,f2,f3构成一个矩阵f,用一个积分命
116 / 8