【MATLAB】符号数学计算(七):符号微积分与符号微分方程求解

一、符号表达式的极限

  • limit(F,x,a):求当x\rightarrow a时,符号表达式F的极限。
  • limit(F,a):符号表达式F采用默认自变量(可由函数findsym求得),该函数求F的自变量趋于a时的极限值。
  • limit(F):符号表达式采用默认变量,并以a=0作为自变量的趋近值。
  • limit(F,x,a,'right')或limit(F,x,a,'left'):分别求符号表达式的左极限和右极限。
>> syms x
>> f1=sym('(cos(x)+sin(x)-x)/x');
>> limit(f1,x,inf)
 
ans =
 
-1
 
>> limit(f1,x,-inf)
 
ans =
 
-1
 
>> limit(f1,x,0)
 
ans =
 
NaN
 
>> f2=sym('(sin(x)-x)/x')
 
f2 =
 
-(x - sin(x))/x
 
>> limit(f2,x,0,'right')
 
ans =
 
0
 
>> limit(f2,x,0,'left')
 
ans =
 
0

二、符号表达式的微分

功能函数diff可以完成一元或多元函数任意阶数的微分。

对于自变量的个数多于一个的符号矩阵,微分为Jocabian矩阵,采用功能函数Jacobian实现。

1、diff函数

  • diff(S,'v'):将符号“ v ”视作变量,对符号表达式或者符号矩阵求取微分。
  • diff(S,n):将S中的默认变量进行n阶微分运算,其中默认变量可用findsym函数确定。
  • diff(S,'v',n):将符号“ v ”视作变量,对符号表达式或矩阵S进行n阶微分运算。

2、jacobian函数

  • R=jacobian(w,v):其中w是一个符号列向量,v是指定进行变换的变量所组成的行向量。

 (第一个参数必须是列向量,第二个参数必须是行向量)

>> syms x y z;
>> f1=sym('exp(x*sin(y))+log(z)');
>> diff(f1,x)
 
ans =
 
exp(x*sin(y))*sin(y)
 
>> diff(f1,y)
 
ans =
 
x*exp(x*sin(y))*cos(y)
 
>> diff(f1,z)
 
ans =
 
1/z
 
>> diff(f1,x,2)
 
ans =
 
exp(x*sin(y))*sin(y)^2
 
>> f2=sym('[x^2+y^2;y*z]')
 
f2 =
 
 x^2 + y^2
       y*z
 
>> J=jacobian(f2,[x,y])
 
J =
 
[ 2*x, 2*y]
[   0,   z]

三、符号表达式的积分

  • R=int(S):用默认变量求符号表达式S的不定积分,默认变量可用函数findsym确定。
  • R=int(S,v):用符号标量v作为变量求符号表达式S的不定积分。
  • R=int(S,a,b):符号表达式采用默认变量,该函数求默认变量从a到b时符号表达式S的定积分值。如果S是符号矩阵,那么积分将对各个元素分别进行。
  • R=int(S,v,a,b):用符号标量v作为变量,求当v从a变到b时,符号表达式S的定积分值。
>> syms x y
>> f1=sym('x+x^-1');
>> int(f1)
 
ans =
 
log(x) + x^2/2
 
>> f2=sym('x*y+(x*y)^-1')
 
f2 =
 
1/(x*y) + x*y
 
>> int(f2,y)
 
ans =
 
log(y)/x + (x*y^2)/2
 
>> int(f1,1,2)
 
ans =
 
log(2) + 3/2
 
>> int(f2,y,1,2)
 
ans =
 
(3*x)/2 + log(2)/x

四、符号表达式的级数求和

  • r=symsum(s,a,b):求符号s表达式中默认变量从a变到b时的有限和。
  • symsum(s,v,a,b):求符号s表达式中变量v从a变到b时的有限和。
>> syms x y n
>> f1=sym('x^2')
 
f1 =
 
x^2
 
>> symsum(f1,0,n-1)
 
ans =
 
(n*(2*n - 1)*(n - 1))/6
 
>> f2=sym('x^n')
 
f2 =
 
x^n
 
>> symsum(f2,n,0,inf)
 
ans =
 
piecewise([1 <= x, Inf], [abs(x) < 1, -1/(x - 1)])

五、符号表达式的泰勒级数

  • r=taylor(f):f是符号表达式,其变量采用默认变量,该函数返回f在变量等于0处作5阶泰勒展开时的展开式。
  • r=taylor(f,n,v):符号表达式f以符号标量v作为自变量,返回f的n-1阶麦克劳林级数(即在v=0处的泰勒展开)展开式。
  • r=taylor(f,n,v,a):返回符号表达式f在v=a处作n-1阶泰勒展开时的展开式。
>> syms  x y
>> f1=sym('sin(x)/(2+sin(x))')
 
f1 =
 
sin(x)/(sin(x) + 2)
 
>> taylor(f1)
 
ans =
 
- (13*x^5)/480 + x^4/48 + x^3/24 - x^2/4 + x/2

六、符号微分方程求解

函数dsolve用来求常微分方程的符号解。

在方程中用D表示一次微分,用D2、D3分别表示二次、三次微分运算。

D2y表示 \frac{d^{2}y}{dt^{2}}

  • r=dsolve('eq1,eq2,...','cond1,cond2,...','v'):求由eq1,eq2,...指定的常微分方程的符号解。常微分方程以变量v作为自变量,参数cond1,cond2,...用于指定方程的边界条件或者初始条件。如果v不知道,将默认t为自变量。
  • r=dsolve('eq1,eq2’,...,'cond1,cond2‘,...,'v')

猜你喜欢

转载自blog.csdn.net/csdn___csdn/article/details/81162335