本博文源于matlab求导数求极值求最值,涉及内容极限命令求导/diff求导/一元函数一阶导数,多阶导数,求参数导数/函数极值和最值/不给定区间求最值
用极限命令求导
例子:求函数3sinx+4x^2在x=0处的导数
>> syms t;
limit((3*sin(t)+4*t^2)/t,0)
ans =
3
>>
求一元函数的导数
diff(函数)
求3sinx+4x^2的导数
>> syms x;
diff(3*sin(x)+4*x^2)
ans =
3*cos(x)+8*x
>>
求y=ln(x+cosx)的导数
>> syms x;
diff(log(x+cos(x)))
ans =
(1-sin(x))/(x+cos(x))
求一组一元函数导数
例子:求向量的导数
>> syms x;
diff([sin(x)+1,cos(x)+x,4*x^4])
ans =
[ cos(x), 1-sin(x), 16*x^3]
求一元函数的高阶导数
大家千万不要diff嵌套,直接后面追加参数
例子:求3sinx+4x^8的7阶导数
>> syms x;
diff(3*sin(x)+4*x^8,7)
ans =
-3*cos(x)+161280*x
>>
参数方程形式的函数求导
例子:求参数导数
>> syms t
dx_dt=diff(t^2-log(2+sin(t)));
dy_dt=diff(t^3-3*sin(log(t)));
dy_dx=dy_dt/dx_dt
dy_dx =
(3*t^2-3*cos(log(t))/t)/(2*t-cos(t)/(2+sin(t)))
>>
求函数的极值和最值
[x,f]=fminbnd('f(x)',a,b)
即计算f(x)在区间[a,b]内的最小值点x和最小值f
例子:计算x^2-3*x+1在[-10,10]的最值
>> [x,f]=fminbnd('x^2-3*x+1',-10,10)
x =
1.5000
f =
-1.2500
>>
在不给定区间,求函数在某一点附近的局部最小值和最小值点
[x,f]=fminsearch('f(x)',a)
例子求y=sin2x+1在3点附近最小值
>> [x,f]=fminsearch('sin(2*x)+1',3)
x =
2.3562
f =
8.9290e-011