一、符号微积分
1.符号表达式的极限(limit)
limit(F, x, a):求当x->a 时,符号表达式F的极限
limit(F, a):求函数F的默认自变量在趋于a时的极限值。F的默认自变量可由findsym求得
limit(F):求函数F的默认自变量在趋于0时的极限值
limit(F, x, a, ‘right’)或limit(F, x, a, ‘left’):求左右极限
Python
>> syms x;
>> f = (cos(x) + sin(x) - x) / x;
>> limit(f,x,inf)
ans =
-1
1
2
3
4
5
6
7
>>symsx;
>>f=(cos(x)+sin(x)-x)/x;
>>limit(f,x,inf)
ans=
-1
2.符号表达式的微分(diff、jacobian)
diff(S, ‘v’):对函数S求变量v的微分
diff(S, n):求函数S的n阶微分。S的默认自变量可由findsym求得
diff(S, ‘v’, n):对函数S求变量v的n阶微分。使用时应注意参数的调用顺序
jacobian(w, v):其中w是一个符号列向量,v是指定进行变换的变量所组成的行向量
Python
>> syms x y z;
>> f1 = exp(x*sin(y)) + log(z);
>> diff(f1, x)
ans =
exp(x*sin(y))*sin(y)
>> diff(f1, y, 2)
ans =
x^2*exp(x*sin(y))*cos(y)^2 - x*exp(x*sin(y))*sin(y)
>> J = jacobian(f1, [x, y])
J =
[ exp(x*sin(y))*sin(y), x*exp(x*sin(y))*cos(y)]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>symsxyz;
>>f1=exp(x*sin(y))+log(z);
>>diff(f1,x)
ans=
exp(x*sin(y))*sin(y)
>>diff(f1,y,2)
ans=
x^2*exp(x*sin(y))*cos(y)^2-x*exp(x*sin(y))*sin(y)
>>J=jacobian(f1,[x,y])
J=
[exp(x*sin(y))*sin(y),x*exp(x*sin(y))*cos(y)]
3.符号表达式的积分(int)
R = int(S):求S的默认变量的不定积分
R = int(S, v):求S的以符号标量v为变量的不定积分
R = int(S, a, b):求S的默认变量的从a到b时的定积分
R = int(S, v, a, b)
Python
>> syms x y;
>> f = x + x^-1;
>> int(f)
ans =
log(x) + x^2/2
>> int(f, -1, 1)
ans =
NaN
>> int(f, 0, 1)
ans =
Inf
>> int(f, 1, 2)
ans =
log(2) + 3/2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
>>symsxy;
>>f=x+x^-1;
>>int(f)
ans=
log(x)+x^2/2
>>int(f,-1,1)
ans=
NaN
>>int(f,0,1)
ans=
Inf
>>int(f,1,2)
ans=
log(2)+3/2
4.符号表达式的级数求和(symsum)
r = symsum(s, a, b):求s中对默认变量从a到b时的有限和
r = symsum(s, v, a, b)
Python
>> syms x n;
>> f = x^n;
>> symsum(f,n,0,inf)
ans =
piecewise([1 <= x, Inf], [abs(x) < 1, -1/(x - 1)])
>> symsum(f,x,0,5)
ans =
0^n + 2^n + 3^n + 4^n + 5^n + 1
1
2
3
4
5
6
7
8
9
10
11
12
13
>>symsxn;
>>f=x^n;
>>symsum(f,n,0,inf)
ans=
piecewise([1<=x,Inf],[abs(x)<1,-1/(x-1)])
>>symsum(f,x,0,5)
ans=
0^n+2^n+3^n+4^n+5^n+1
5.符号表达式的泰勒级数(taylor)
r = taylor(f):返回f以默认变量为0处的5阶泰勒展开
r = taylor(f, n, v):返回f以符号标量v为自变量,在v = 0处的n-1阶麦克劳林级数展开式
r = taylor(f, n, v, a):返回f以符号标量v为自变量,在v = a处的n-1阶泰勒展开式
Python
>> syms x;
>> f = sin(x);
>> taylor(f)
ans =
x^5/120 - x^3/6 + x
1
2
3
4
5
6
7
>>symsx;
>>f=sin(x);
>>taylor(f)
ans=
x^5/120-x^3/6+x
二、符号积分变换
1.傅里叶变换及其反变换(fourier、ifourier)
Fw = fourier(ft, t, w):求时域函数ft的Fourier变换Fw。ft是以t为自变量的时域函数,Fw是以圆频率w为自变量的频域函数
ft = ifourier(Fw, w, t):求频域函数Fw的Fourier反变换ft
2.拉普拉斯变换及其反变换(laspace、ilaspace)
Fs = laspace(ft, t, s)
ft = ilaspace(Fs, s,t)
3.Z变换及其逆变换
数学中常用的Z反变换计算方法有3种:幂级数展开法、部分分式展开法、围线积分法。
MATLAB中符号数学工具箱中采用的是围线积分法,即
fn = (1/2πj)*∫(F(z)*z^(n-1))dz
FZ = ztrans(fn):求时域函数fn的z变换FZ。默认fn自变量为n,生成的Z变换是以复频率z为变量的函数
FZ = ztrans(fn, w):求时域函数fn的z变换FZ。默认fn自变量为n,生成的Z变换是以变量w代替复频率z为变量的函数
FZ = ztrans(fn, n, z):求时域函数fn的z变换FZ。fn是以n为自变量的时域序列,FZ是以复频率z为自变量的频域函数
fn = iztrans(FZ, z, n):求频域函数FZ的z反变换fn
三、符号代数方程求解
此处所讲的一般代数方程包括线性、非线性和超越方程,求解函数为solve
当方程组不存在符号解,又无其他自由参数时,solve将给出数值解
g = solve(eq):求解方程 eq = 0 。eq的默认自变量可由findsym求得。eq可以是符号表达式或不带符号的字符串
g = solve(eq, var):求以var为自变量的方程 eq = 0 的解。返回值g是由方程的所有解构成的列向量
g = solve(eq1, eq2. … , eqn)
g = solve(eq1, eq2. … , eqn, var1, var2, … , varn)
Python
>> syms a b c x;
>> f = a*x^2 + b*x +c;
>> solve(f,x)
ans =
-(b + (b^2 - 4*a*c)^(1/2))/(2*a)
-(b - (b^2 - 4*a*c)^(1/2))/(2*a)
1
2
3
4
5
6
7
8
>>symsabcx;
>>f=a*x^2+b*x+c;
>>solve(f,x)
ans=
-(b+(b^2-4*a*c)^(1/2))/(2*a)
-(b-(b^2-4*a*c)^(1/2))/(2*a)
四、符号分析可视化
1.图示化符号函数计算器界面(funtool)
2.泰勒级数逼近分析界面(taylortool)
赞赏作者
喜欢 (1)or分享 (0)