【数模学习】Matlab 符号微积分 计算微分、雅可比矩阵、不定积分与定积分、求解微分方程
1.计算微分
函数diff可以用来计算符号表达式的微分,其调用格式如下:
df=diff(f,n);
参数说明:df是微分运算的结果。f是输入的表达式,n是求导的次数,其默认值是1.
举例:
>>g = diff(sym(sin(x)),1);
g =
cos(x)
2.计算雅可比矩阵
函数jacobian可以用来计算符号表达式的雅可比矩阵
在Matlab中,jacobian的调用格式如下:
Jf=jacobian(f,v);
参数说明:f是符号表达式,v是由不同变量名组成的向量。当v中只含有一个变量时,jacobian(f,v)和diff(f)是等价的。
举例:调用函数jacobian
>> Jf1=jacobian(sym(\'x*log(1+x)\'),sym(\'x\'));
>> Jf2=jacobian(sym(\'[x+y,x*y]\'),[sym(\'x\'),sym(\'y\')]);
>> Jf1
Jf1 =
log(x + 1) + x/(x + 1)
>> Jf2
Jf2 =
[ 1, 1]
[ y, x]
3.计算不定积分和定积分
函数int可以用来计算定积分与不定积分,该函数调用格式如下:
v=int(S);
v=int(S,var);
v=int(S,a,b);
v=int(S,var,a,b);
参数说明:v是返回的结果,S是被积函数,可以使一个向量或者矩阵,var是积分表达式中的积分变量。a和b用于指定积分的积分度量。a和b用于指定积分的上下界。当var默认的时候,函数int将默认对x进行积分。
举例:调用函数int
>> syms x y a;
>> v1=int([sin(x),x*exp(x)])
v1 =
[ -cos(x), exp(x)*(x - 1)]
>> v12=int(y*sin(x*y),y);
>> v12
v12 =
(sin(x*y) - x*y*cos(x*y))/x^2
>> v3=int([sin(x)/x,x*exp(-x^2)],0,inf);
>> v3
v3 =
[ pi/2, 1/2]
>> v4=int(sin(x*a)/x,x,0,1);
>> v4
v4 =
sinint(a)
4.求解微分方程
函数dsolve直接的用法是用来求解微分方程,可以计算出被积函数的原函数,再代入积分限进行计算,就可以得到积分结果了。
相关程序如下:
>> F=dsolve(\'Df=sin(t)*cos(t)\');
>> v=subs(F,2)-subs(F,1); %subs通用置换指令
>> v
v =
sin(2)^2/2 - sin(1)^2/2
>> double(v)
ans =
0.059374196079117
5.计算极限
函数limit可以用来计算不同类型表达式的极限,其调用格式为:
v=limit(f);
v=limit(f,a);
v=limit(f,x,a);
v=limit(f,x,a,\'right\');
v=limit(f,x,a,\'left\');
参数说明:v是返回的极限值,f是符号表达式,它可以是单个表达式,也可以是由多个表达式组成的向量或者矩阵,x指定符号表达式中的x为变量,a是用于指定x->a的极限值,‘right’和‘left’分别用于指定表达式的右极限和左极限。
举例:调用函数limit计算极限
syms x a t;
v1=limit((sin(x)/x)); %计算表达式在x趋向于0时的极限
v2=limit((x-1)/(x^2-1),1); %计算表达式在x趋向于1时的极限
v3=limit((1+2*x/t)^(3*t),t,inf); %计算表达式在t趋向于无穷大(inf)时的极限
v4=limit(1/x,x,0,\'right\'); %计算表达式在x趋向于0时的右极限
v5=limit(1/x,x,0,\'left\'); %计算表达式在x趋向于0时的左极限
输出结果为:
v1 = 1
>> v2
v2 =
1/2
>> v3
v3 =
exp(6*x)
>> v4
v4 =
Inf
>> v5
v5 =
-Inf
说明:输入表达式还可以是向量或者矩阵。
版权声明:本文为博主原创文章,未经博主允许不得转载。
请发表评论