matlab实验7符号计算器,MATLAB自学笔记(二十一):符号微积分、积分变换、代数方程以及可视化...

一、符号微积分

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值