6. matlab符号计算

发布时间 : 星期日 文章6. matlab符号计算更新完毕开始阅读

dfdt2=diff(f,t,2) %求矩阵f对t的二阶导数

dfdxdt=diff(diff(f,x),t) %求二阶混合导数 df =

[ 0, 0] [ -t*sin(x), 1/x] dfdt2 = [ 0, 6*t] [ 0, 0] dfdxdt =

[ 0, 0] [ -sin(x), 0]

??x1ex2??f??x2??cos(x1)sin(x2)???的jacobian矩阵。 【*例6.3.2-2】求

syms x1 x2 x3;f=[x1*exp(x2);x2;cos(x1)*sin(x2)]; v=[x1 x2];fjac=jacobian(f,v) fjac =

[ exp(x2), x1*exp(x2)] [ 0, 1] [ -sin(x1)*sin(x2), cos(x1)*cos(x2)]

6.3.3 符号积分 6.3.3.1 通用积分指令 6.3.3.2 交互式近似积分指令 6.3.3.3 符号积分示例

?axbx2??dx1???xsinx??。演示:积分指令对符号函数矩阵的作用。 【*例6.3.3.3-1】求?syms a b x;f=[a*x,b*x^2;1/x,sin(x)];

disp('The integral of f is');pretty(int(f)) The integral of f is

[ 2 3] [1/2 a x 1/3 b x ] [ ] [ log(x) -cos(x) ]

【*例6.3.3.3-2】求

?x01dtlnt。演示如何使用mfun指令获取一组积分值。

(1)求一般积分结果

F1=int('1/log(t)','t',0,'x') F1 =

-Ei(1,-log(x))

(2)利用mfun指令求x=0.5 , 0.6 , 0.7 , 0.8 , 0.9时的定积分

x=0.5:0.1:0.9

F115=-mfun('Ei',1,-log(x)) x =

0.5000 0.6000 0.7000 0.8000 0.9000 F115 =

-0.3787 -0.5469 -0.7809 -1.1340 -1.7758

【*例6.3.3.3-3】求积分

syms x y z

???1x2x2x2yxy(x2?y2?z2)dzdydx。注意:内积分上下限都是函数。

F2=int(int(int(x^2+y^2+z^2,z,sqrt(x*y),x^2*y),y,sqrt(x),x^2),x,1,2) VF2=vpa(F2) F2 = ^(3/4) VF2 =

224.92153573331143159790710032805

%积分结果用32位数字表示

1610027357/6563700-6072064/348075*2^(1/2)+14912/4641*2^(1/4)+64/225*2

S?【*例6.3.3.3-4】利用rsums求

?0.501dtlnt积分。(与例6.3.3.3-2结果比较)

syms x positive;px=0.5/log(0.5*x);rsums(px)

图6.3.3.3-4 交互式近似积分

6.3.4 符号卷积

h(t)?1?t/TeU(t)T,求

【*例6.3.4-1】本例演示卷积的时域积分法:已知系统冲激响应

u(t)?e?tU(t)输入下的输出响应。

syms T t tao;ut=exp(-t); ht=exp(-t/T)/T;

%定义系统输入

%定义系统冲激响应

uh_tao=subs(ut,t,tao)*subs(ht,t,t-tao); yt=int(uh_tao,tao,0,t);

yt=simple(yt) yt =

-(exp(-t)-exp(-t/T))/(T-1)

%运用变量替换指令形成被积函数

%实施卷积

【*例6.3.4-2】本例演示通过变换和反变换求取卷积。系统冲激响应、输入同上例,求输出。 syms s;yt=ilaplace(laplace(ut,t,s)*laplace(ht,t,s),s,t);yt=simple(yt)

yt =

-(exp(-t)-exp(-t/T))/(T-1)

?tu(t)?U(t)?U(t?1)h(t)?teU(t)的卷积。 【*例6.3.4-3】求函数和

(1)在5.2版(配Symbolic Math Toolbox 2.0.1)中,采用以下指令。

syms t tao;ut=sym('Heaviside(t)-Heaviside(t-1)');ht=t*exp(-t);

yt=int(subs(ut,t,tao)*subs(ht,t,abs(t)-tao),tao,0,abs(t)); yt=collect(yt,'signum(abs(t)-1)'),yt=subs(yt,abs(t),t)

%<3> yt =

(-1/2+1/2*exp(-abs(t)+1)*abs(t))*signum(abs(t)-1)-exp(-abs(t))*abs(t)-exp(-abs(t))+1/2*exp(-abs(t)+1)*abs(t)+1/2 yt =

(-1/2+1/2*exp(-t+1)*t)*signum(t-1)-exp(-t)*t-exp(-t)+1/2*exp(-t+1)*t+1/2

(2)5.3版(配Symbolic Math Toolbox 2.1)中的运行指令和结果如下。

syms tao;t=sym('t','positive'); <4>

%把t定义为限定性符号变量

ut=sym('Heaviside(t)-Heaviside(t-1)');ht=t*exp(-t); yt53=int(subs(ut,t,tao)*subs(ht,t,t-tao),tao,0,t); yt53=collect(yt53,'Heaviside(t-1)') yt53 =

(-1+exp(1-t)*t)*Heaviside(t-1)+1+(-t-1)*exp(-t)

6.4 符号积分变换

6.4.1 Fourier变换及其反变换

?1f(t)???0【*例 6.4.1-1】求

t?0t?0的Fourier变换。本例演示三个重要内容:单位阶跃

函数和单位脉冲函数的符号表示;fourier指令的使用;simple指令在MATLAB不同版本中的表现差异。

(1)求Fourier变换

syms t w;ut=sym('Heaviside(t)'); <1> UT=fourier(ut) 论一致的结果

UTC=maple('convert',UT,'piecewise','w') <3> UTS=simple(UT) 化导致漏项! UT =

pi*Dirac(w)-i/w

%计算结果起指示作用

%在此是5.3版的运算结果,简

%定义0时刻起跳的单位阶跃函数

%实施Fourier变换,给出与理

联系合同范文客服:xxxxx#qq.com(#替换为@)