matlab向量取倒数,Matlab求倒数命令及控制⽅法建⽴符号变量命令sym和syms调⽤格式:
x=sym('x'), 建⽴符号变量x;
syms x y z , 建⽴多个符号变量x,y,z;
matlab求导命令diff调⽤格式:
diff(函数) , 求的⼀阶导数
diff(函数, n) , 求的n阶导数(n是具体整数);
diff(函数,变量名), 求对的偏导数;
diff(函数, 变量名,n) ,求对的n阶偏导数;
matlab求雅可⽐矩阵命令jacobian,调⽤格式:
jacobian([函数;函数; 函数], [])给出矩阵:
2.导数概念.
导数是函数的变化率,⼏何意义是曲线在⼀点处的切线斜率.
(1)点导数是⼀个极限值.
例1.设,⽤定义计算.
解:在某⼀点的导数定义为极限:
我们记,输⼊命令:
syms h;limit((exp(0+h)-exp(0))/h,h,0)
得结果:ans=1.可知
(2)导数的⼏何意义是曲线的切线斜率.
例2.画出在处()的切线及若⼲条割线,观察割线的变化趋势.
解:在曲线上另取⼀点,则的⽅程是:
.即
取,分别作出⼏条割线.
h=[3,2,1,0.1,0.01];a=(exp(h)-1)./h;x=-1:0.1:3;
plot(x,exp(x),’r’);hold on
for i=1:5;
plot(h(i),exp(h(i)),’r.’)
plot(x,a(i)*x+1)
end
axis square
作出在处的切线
plot(x,x+1,’r’)
3.求⼀元函数的导数.
(1)的⼀阶导数.
例3.求的导数.
解:打开matlab指令窗,输⼊指令:
dy_dx=diff(sin(x)/x).
得结果:
dy_dx=cos(x)/x-sin(x)/x^2.
matlab的函数名允许使⽤字母、空格、下划线及数字,不允许使⽤其他字符,在这⾥我们⽤dy_dx表⽰例4.求的导数.
解: 输⼊命令:
dy_dx=diff(log(sin(x))).
得结果:
dy_dx=cos(x)/sin(x).
在matlab中,函数⽤log(x)表⽰,⽽log10(x)表⽰
例5.求的导数.
解: 输⼊命令:dy_dx=diff((x^2+2*x)^20).
得结果:
dy_dx=20*(x^2+2*x)^19*(2*x+2).
注意输⼊时应为2*x.
例6.求的导数.
解: 输⼊命令:
dy_dx=diff(x^x).
得结果:
dy_dx =x^x*(log(x)+1).
利⽤matlab 命令diff⼀次可以求出若⼲个函数的导数.
例7.求下列函数的导数:
1.
2.
3.
4.
解: 输⼊命令:
a=diff([sqrt(x^2- 2*x+5),cos(x^2)+2*cos(2*x),4^(sin(x)),
log(log(x))]).
a=
[1/2/(x^2-2*x+5)^(1/2)*(2*x-2),-2*sin(x^2)*x-4*sin(2*x),
4^sin(x)*cos(x)*log(4), 1/x/log(x)].
dy1_dx=a(1)
dy1_dx=1/2/(x^2-2*x+5)^(1/2)*(2*x-2).
dy2_dx=a(2)
dy2_dx=-2*sin(x^2)*x-4*sin(2*x).
dy3_dx=a(3)
dy3_dx=4^sin(x)*cos(x)*log(4).
dy4_dx=a(4)
dy4_dx=1/x/log(x).
由本例可以看出
,matlab函数是对矩阵或向量进⾏操作的,a(i)表⽰向量a的第i个分量. (2)参数⽅程所确定的函数的导数.设参数⽅程确定函数,则的导数
例8.设,求
解: 输⼊命令:
dx_dt=diff(a*(t-sin(t)));dy_dt=diff(a*(1-cos(t)));
dy_dx=dy_dt/dx_dt.
得结果:
dy_dx=sin(t)/(1-cos(t)).
其中分号的作⽤是不显⽰结果.
4.求多元函数的偏导数.
例9.设 求 u的⼀阶偏导数.
解: 输⼊命令:
diff((x^2+y^2+z^2)^(1/2), x).
得结果:
ans=1/(x^2+y^2+z^2)^(1/2)*x.
在命令中将末尾的x换成y将给出y的偏导数:
ans=1/(x^2+y^2+z^2)^(1/2)*y.
也可以输⼊命令:
jacobian((x^2+y^2+z^2)^(1/2),[x y]).
得结果:
ans=[1/(x^2+y^2+z^2)^(1/2)*x, 1/(x^2+y^2+z^2)^(1/2)*y]
例10.求下列函数的偏导数:
1.
2.
解: 输⼊命令:
diff(atan(y/x).
得结果:
ans=-y/x^2/(1+y^2/x^2).
输⼊命令:
diff(atan(y/x), y).
得结果:
ans=1/x/(1+y^2/x^2).
输⼊命令:
diff(x^y, x).
得结果:
ans=x^y*y/x.
输⼊命令:
diff(x^y, y).
得结果:
ans=x^y*log(x).
使⽤jacobian命令求偏导数更为⽅便.
输⼊命令:
matlab求导jacobian([atan(y/x),x^y],[x,y]).
得结果:
ans=[ -y/x^2/(1+y^2/x^2), 1/x/(1+y^2/x^2)]
[ x^y*y/x, x^y*log(x)].
5.求⾼阶导数或⾼阶偏导数.
例11.设 ,求.
解:输⼊指令:
diff(x^2*exp(2*x),x,20).
得结果:
ans =
99614720*exp(2*x)+20971520*x*exp(2*x)+1048576*x^2*exp(2*x)例3.12.设,求,,
diff(x^6-3*y^4+2*x^2*y^2,x,2)
可得到:
ans=30*x^4+4*y^2.
将命令中最后⼀个x换为y得:
ans=-36*y^2+4*x^2.
输⼊命令:
diff(diff(x^6-3*y^4+2*x^2*y^2,x),y)
可得:
ans=8*x*y
同学们可⾃⼰计算⽐较它们的结果.
注意命令:diff(x^6-3*y^4+2*x^2*y^2,x,y),是对y求偏导数,不是求