Alex_McAvoy

想要成为渔夫的猎手

Matlab 符号函数与微积分

【符号函数类型(symfun)】

广义的符号函数是指对于不带等号的符号表达式。

但实际上,在 matlab 中,符号函数是一个类型,即:symfun,正是有了该类型,才进一步可以对符号表达式进行微积分操作。

在数学上,对于两个变量 $x$、$y$,若他们存在一定的映射关系,则认为 $x$、$y$ 之间有一种对应关系 $f$,一般来说,我们将 $x$ 记为自变量,$y$ 记为因变量,称:$y=f(x)$ 为函数对应关系,而 y 关于 x 的函数,亦可记为 $y(x)$

在 matlab 中,我们同样采用上述记法:

1
2
3
4
5
>> syms x y(x)
>> whos
Name Size Bytes Class Attributes
x 1x1 112 sym
y 1x1 112 symfun

需要注意的是,该记法一般仅在涉及到微积分时使用

【符号函数的极限】

  • limit(F,x,a):求 $\lim_{x\to a}f(x)$
  • limit(F,a):求 $\lim_{x\to a}f(x)$,采用默认自变量,由 symvar() 给出
  • limit(F):求 $\lim_{x\to 0}f(x)$,采用默认自变量 ,由 symvar() 给出
  • limit(F,x,a,flag):求 $\lim_{x\to a^{flag}}f(x)$,flag 取值为 leftright,代表左右极限

说明:a 取值为 inf 代表无穷

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
>> syms x f(x)
>> f(x)=x^3+x^2+1
f(x) = x^3 + x^2 + 1

>> limit(f,x,1)
ans(x) = 3
>> limit(f,2)
ans(x) = 13
>> limit(f)
ans(x) = 1


>> f(x)=2^x
f(x) = 2^x
>> limit(f,inf)
ans(x) = Inf
>> limit(f,-inf)
ans(x) = 0

>> limit(f,x,0,'left')
ans(x) = 1
>> limit(f,x,0,'right')
ans(x) = 1

【符号函数的微分】

  • diff(F):对于符号函数或符号矩阵 F,求对默认变量的一阶微分,默认变量由 symvar() 给出
  • diff(F,v):对于符号函数或符号矩阵 F,求对变量 v 的一阶微分
  • diff(F,n):对于符号函数或符号矩阵 F,求对默认变量的 n 阶微分,默认变量由 symvar() 给出
  • diff(F,v,n):对于符号函数或符号矩阵 F,求对变量 vn 阶微分
  • jacobian(w,v):对于符号列向量 w,指定变量 v 所变换的雅克比矩阵,详见附录1:高数相关-4.隐函数求偏导
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
26
27
28
>> syms x y f(x)
>> f(x)=x^3+2*x
f(x) = x^3 + 2*x
>> diff(f)
ans(x) = 3*x^2 + 2
>> diff(f,2)
ans(x) = 6*x

>> f(x)=x^2+y
f(x) = x^2 + y
>> diff(f,y)
ans(x) = 1

>> syms x y z
>> f(x)=sym([x^2,y^2+z])
f(x) = [ x^2, y^2 + z]
>> jacobian(f,x)
ans(x) =
2*x
0
>> jacobian(f,[x,y])
ans(x) =
[2*x, 0]
[ 0, 2*y]
>> jacobian(f,[x,y,z])
ans(x) =
[2*x, 0, 0]
[0 , 2*y, 1]

【符号函数的积分】

  • int(F):用默认变量求符号函数 F 的不定积分,默认变量由 symvar() 给出
  • int(F,v):用变量 v 求符号函数 S 的不定积分
  • int(F,a,b):用默认变量求符号函数 F 在区间 (a,b)的定积分,默认变量由 symvar() 给出
  • int(F,v,a,b):用变量 v 求符号函数 F 在区间 (a,b)的定积分
1
2
3
4
5
6
7
8
9
10
>> syms x f(x)
>> f(x)=3*x^2+2*x
f(x) = 3*x^2 + 2*x
>> int(f)
ans(x) = x^2*(x + 1)

>> int(f,1,2)
ans = 10
>> int(f,1,inf)
ans = Inf

【符号函数的级数】

级数:将数列的项依次用加号连接起来的函数

  • symnsum(S,a,b):求符号表达式 S 中默认变量从 ab 的有限和,默认变量由 symvar() 给出
  • symnsum(S,v,a,b):求符号表达式 S 中变量 vab 的有限和

说明:取值为 inf 代表无穷

1
2
3
4
5
6
7
8
9
10
>> syms x y n
>> f(x)=sym(x^2)
f(x) = x^2
>> symsum(f,0,n)
ans = (n*(2*n + 1)*(n + 1))/6

>> f(x)=x^2+y
f(x) = x^2 + y
>> symsum(f,y,0,n)
ans(x) = (n + 1)*x^2 + (n*(n + 1))/2

【符号函数的泰勒级数】

  • taylor(F):求符号函数 F 默认变量等于 0 处 5 阶的麦克劳林展开式,默认变量由 symvar() 给出
  • taylor(F,v,a,'Order',n):求符号函数 F 变量 v=a 处 n-1 阶的泰勒展开式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
>> syms x f(x)
>> f(x)=sin(x)
f(x) = sin(x)
>> taylor(f)
ans(x) = x^5/120 - x^3/6 + x

% a=0,麦克劳林展开式
>> taylor(f,x,0,'Order',8)
ans(x) = - x^7/5040 + x^5/120 - x^3/6 + x

% a~=0,泰勒展开式
>> taylor(f,x,3,'Order',5)
ans(x) =
sin(3) - (sin(3)*(x - 3)^2)/2 + (sin(3)*(x - 3)^4)/24 + cos(3)*(x - 3) - (cos(3)*(x - 3)^3)/6

【符号函数的积分变换】

傅里叶变换与反傅里叶变换:

  • Fw=fourier(Ft,t,w):求以 w 为自变量的符号函数 Fw,其是由以 t 为自变量的符号函数 Ft 的傅里叶变换得来的
  • Ft=ifourier(Fw,w,t):求以 t 为自变量的符号函数 Ft,其是由以 w 为自变量的符号函数 Fw 的反傅里叶变换得来的

拉普拉斯变换与反拉普拉斯变换:

  • Fs=laplace(Ft,t,s):求以 s 为自变量的符号函数 Fs,其是以 t 为自变量的符号函数 Ft 拉普拉斯变换得来的
  • Ft=ilaplace(Fs,s,t):求以 t 为自变量的符号函数 Ft,其是以 s 为自变量的符号函数 Fs 反拉普拉斯变换得来的

Z 变换与反 Z 变换:

  • Fz=ztrans(Fn,n,z):求用 z 为变量的符号函数 Fz,其是以变量 n 的符号函数 Fn 的 Z 变换得来的
  • Fn=iztrans(FZ,z,n):求用 n 为变量的符号函数 Fn,其是以变量 z 的符号函数 Fz 的反 Z 变换得来的
感谢您对我的支持,让我继续努力分享有用的技术与知识点!