收藏 分享(赏)

第3章__MATLAB符号计算.ppt

上传人:Facebook 文档编号:3404771 上传时间:2018-10-24 格式:PPT 页数:52 大小:437.50KB
下载 相关 举报
第3章__MATLAB符号计算.ppt_第1页
第1页 / 共52页
第3章__MATLAB符号计算.ppt_第2页
第2页 / 共52页
第3章__MATLAB符号计算.ppt_第3页
第3页 / 共52页
第3章__MATLAB符号计算.ppt_第4页
第4页 / 共52页
第3章__MATLAB符号计算.ppt_第5页
第5页 / 共52页
点击查看更多>>
资源描述

1、第三章 符号计算,1、学会符号变量和符号表达式的定义; 2、能够使用符号运算解决一般的微积分和方程求解问题。,3.1 符号计算基础,3.2 符号导数及应用,3.3 符号积分,3.4 级数,3.5 代数方程符号求解,3.6 常微分方程符号求解,3.7 作业,3.1 符号计算基础,3.1.1 符号对象,1、建立符号变量和符号常数,(1)sym函数:sym函数用来建立单个符号量;,例如:a=sym(a)建立符号变量a,此后,用户可以在表达式中使用变量a进行各种运算。,例3.1考察符号变量和数值变量的差别。,在 MATLAB命令窗口,输入命令:,a=sym(a);b=sym(b); c=sym(c);

2、d=sym(d);,%定义4个符号变量,w=10;x=5;y=-8;z=11;,%定义4个数值变量,A=a,b;c,d,%建立符号矩阵A,B=w,x;y,z,%建立数值矩阵B,det(A),%计算符号矩阵A的行列式,det(B),%计算数值矩阵B的行列式,例3.2比较符号常数与数值在代数运算时的差别。,在 MATLAB命令窗口,输入命令:,pi1=sym(pi);k1=sym(8); k2=sym(2);k3=sym(3);,% 定义符号变量,pi2=pi;r1=8;r2=2;r3=3;,% 定义数值变量,sin(pi1/3),% 计算符号表达式值,sin(pi2/3),% 计算数值表达式值,

3、sqrt(k1),% 计算符号表达式值,sqrt(r1),% 计算数值表达式值,sqrt(k3+sqrt(k2),% 计算符号表达式值,sqrt(r3+sqrt(r2),% 计算数值表达式值,(2)syms函数,1) 调用格式:syms var1 var2 varn,!注意: 不要在变量名上加字符分界符(),变量间用空格而不要用逗号分隔。,说明:定义符号变量var1,var2,varn;,2. 建立符号表达式,例3.3用两种方法建立符号表达式。,例3.4建立x,y的一般二元函数。,在MATLAB命令窗口,输入命令:,syms x y; f=sym(f(x,y);,3、默认自变量情况,原则:MA

4、TLAB按照数学常规决定谁是自变量。,例3.5:默认自变量情况,a*x2+b*x+c %默认自变量为x 1/(4+cos(t) %默认自变量为t 4*x/y %默认自变量为x 2*a+b %默认自变量为b 2*I+4*j %默认自变量为x,1)除了i和j之外,字母位置最接近x的小写字母;,2)式子中没有上述字母,x被视为默认自变量。,3.1.2 基本的符号运算,(1)符号表达式的四则运算,例3.6 符号表达式的四则运算示例。,syms x y z; f=2*x+x2*x-5*x+x3 %符号表达式的结果为最简形式 f=2*x/(5*x) %符号表达式的结果为最简形式 f=(x+y)*(x-y)

5、 %符号表达式的结果不是x2-y2 而是(x+y)*(x-y),1. 符号表达式运算,(2)因式分解与展开,1)factor(S) :%对S分解因式,S是符号表达式或符号矩阵;,2) expand(S) : %对S进行展开,S是符号表达式或符号矩阵;,3) collect(S) :%对S合并同类项,S是符号表达式或符号矩阵;,4) collect(S,v) : %对S按变量v合并同类项,S是符号表达式或符号矩阵。,例3.7 对符号矩阵A的每个元素分解因式。,syms a b x y; A=2*a2*b3*x2-4*a*b4*x3+10*a*b3*x4,3*x*y-5*x2;4,a3-b3; f

6、actor(A) %对A的每个元素分解因式 Ans=?,例3.8 计算表达式S的值。,syms x y; s=(-7*x2-8*y2)*(-x2+3*y2); expand(s) %对s展开 collect(s,x) %对s按变量x合并同类项factor(ans) % 对ans分解因式,(3)表达式化简,1) simplify(S) :应用函数规则对S进行化简;,2) simple(S) :调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。,例3.9 化简,syms x y; s=(x2+y2)2+(x2-y2)2; simple(s) %MATLAB自动调用多种函数对s进行化简

7、,并显示每步结果,2. 符号矩阵运算,1)transpose(S): 返回S矩阵的转置矩阵;,2) determ(S): 返回S矩阵的行列式值;,3) colspace(S): 返回S矩阵列空间的基;,4) Q,D=eigensys(S): Q返回S矩阵的特征向量,D返回S矩阵的特征值。,3.1.3 符号表达式中变量的确定,1)MATLAB中的符号可以表示符号变量和符号常数;,2) findsym可以帮助用户查找一个符号表达式中的符号变量。,3) 用findsym(S,1)查找系统的缺省变量;,调用格式:findsym(S,n),MATLAB按离字符x最近原则确定缺省变量。,3.2 符号导数及

8、其应用,3.2.1函数的极限,1)函数:limit,(1)调用格式:limit(f,x,a) %若a0,且对x求极限,可简写为limit(f),(2) limit函数的另一种功能是求单边极限;,调用格式为: limit(f,x,a,right) %右趋近于a limit(f,x,a,left) %左趋近于a,例3.10 求极限。,limit(1/x,x,0) %求limit(1/x),x趋于0 limit(1/x,x,0,left) %求limit(1/x),x左趋于0 limit(1/x,x,0,right) %求limit(1/x),x右趋于0,特例: 若求函数cos(x)的导数,按照导数

9、定义有 syms t x limit(cos(x+t)-cos(x)/t,t,0) Ans=?,3.2.2 符号函数求导及其应用,1)diff(f):求f对预设独立变量的一次微分值;,2)diff(f,t):求f对独立变量t的一次微分值;,3)diff(f,n):求f对预设独立变量的n次微分值;,4)diff(f,t,n):求f对独立变量t的n次微分值。,注意: 微分函数diff也可以作用于符号矩阵,其结果是对矩阵的每个元素进行微分运算。,例3.11 求函数的导数。,syms a b t x y z; f=sqrt(1+exp(x); diff(f) %预设独立变量的一次微分值,f=x*cos

10、(x); diff(f,x,2) %求f对x的二阶导数 diff(f,x,3) %求f对x的三阶导数,f=x*exp(y)/y2; diff(f,x) %z对x的偏导数 diff(f,y) %z对y的偏导数,f1=a*cos(t);f2=b*sin(t); diff(f2)/diff(f1) %按参数方程求导公式求y对x的导数 (diff(f1)*diff(f2,2)-diff(f1,2)*diff(f2)/(diff(f1)3 %求y对x的二阶导数,f=x2+y2+z2-a2; zx=-diff(f,x)/diff(f,z) %按隐函数求导公式求z对x的偏导数 zy=-diff(f,y)/d

11、iff(f,z) %按隐函数求导公式求z对y的偏导数,例3.12在曲线y=x3+3x-2上哪一点的切线与直线y=4x-1平行。,x=sym(x); y=x3+3*x-2; %定义曲线函数 f=diff(y); %对曲线求导数 g=f-4; solve(g) %求方程f-4=0的根,即求曲线何处的导数为4,3.3 符号积分,3.3.1不定积分,(1)int(f) 返回f对预设独立变量的积分值;,(2)int(f,t) 返回f对独立变量t的积分值;,(3)int(f,a,b) 返回f对预设独立变量的积分值,积分区间为a,b,a和b为数值式;,(4)int(f,t,a,b) 返回f对独立变量t的积分

12、值,积分区间为a,b,a和b为数值式;,(5)int(f,m,n) 返回f对预设变量的积分值,积分区间为m,n,m和n为符号式;,例3.13 求不定积分,x=sym(x); f=(3-x2)3; int(f) %求不定积分 f=sqrt(x3+x4); int(f) %求不定积分 g=simple(ans) %调用simple函数对结果化简,3.3.2 符号函数的定积分,x=sym(x);t=sym(t); int(abs(1-x),1,2) %求定积分 f=1/(1+x2); int(f,-inf,inf) %求定积分int(4*t*x,x,2,sin(t) %求定积分f=x3/(x-1)1

13、00; I=int(f,2,3) %用符号积分的方法求定积分 double(I) %将上述符号结果转换为数值,例3.14 求定积分,例3.15 求椭球的体积,syms a b c z; f=pi*a*b*(c2-z2)/c2; V=int(f,z,-c,c) V = 4/3*pi*a*b*c,例3.16 轴的长度为10米,若该轴的线性密度计算公式是f(x)=3+0.3x千克/米(其中x为距轴的端点距离),求轴的质量。,(1)符号函数积分 syms x; f=3+0.3*x; m=int(f,0,10),(2)数值积分 先建立一个函数文件fx.m: function fx=fx(x) fx=3+

14、0.3*x; 再在MATLAB命令窗口,输入命令: m=quad(fx,0,10,1e-3),3.3.3积分变换,1. 傅立叶(Fourier)变换,1)fourier(fx,x,t) 求函数f(x)的傅立叶像函数F(t); 2)ifourier(Fw,t,x) 求傅立叶像函数F(t)的原函数f(x);,例3.17求函数的傅立叶变换及其逆变换。,syms x t; y=abs(x); Ft=fourier(y,x,t) %求y的傅立叶变换 fx=ifourier(Ft,t,x) %求Ft的傅立叶逆变换,2. 拉普拉斯(Laplace)变换,1)laplace(fx,x,t) 求函数f(x)拉普

15、拉斯像函数F(t) 2)ilaplace(fw,t,x) 求拉普拉斯像函数F(t)的原函数f(x)。,例3.18 计算y=x2的拉普拉斯变换及其逆变换。,x=sym(x);y=x2; Ft=laplace(y,x,t) %对函数y进行拉普拉斯变换 fx=ilaplace(Ft,t,x) %对函数Ft进行拉普拉斯逆变换,3. Z变换,1)ztrans(fn,n,z) 求fn的Z变换像函数F(z) 2)iztrans(Fz,z,n) 求Fz的z变换原函数f(n),例3.19求数列 fn=e-n的Z变换及其逆变换。,syms n z fn=exp(-n); Fz=ztrans(fn,n,z) %求f

16、n的Z变换 f=iztrans(Fz,z,n) %求Fz的逆Z变换,3.4 级数,3.4.1 级数的符号求和,symsum (s,v,a,b) : %自变量v在a,b之间取值时,对通项s求和。,例3.20 分别求级数1+1/2+1/3+1/k+和级数1/2+1/(23)+1/(34)+1/(k(k+1)+之和。,syms k symsum(1/k,k,1,inf) % +1/2+1/3+1/k+ symsum(1/(k*(k+1),k,1,inf) % 1/2+1/(23)+1/(34)+1/(k(k+1)+,3.4.2 函数的泰勒级数,taylor(F,v,n): %求F对自变量v的tayl

17、or级数展开至n级。,例3.21求函数在指定点的泰勒展开式。,x=sym(x); f1=(1+x+x2)/(1-x+x2); f2=sqrt(1-2*x+x3)-(1-3*x+x2)(1/3); taylor(f1,x,5) %求展开到x的4次幂时应择n=5 taylor(f2,3),例3.22将多项式表示成x+1的幂的多项式。,x=sym(x); p=1+3*x+5*x2-2*x3; f=taylor(p,x,-1,4),例3.23求sin(x)的幂次方小于10次方的展开式。,syms x taylor(sin(x),10) %求sin(x)taylor级数展开 Ans=?,3.5 代数方程

18、符号求解,3.5.1线性方程组的符号求解,1)函数linsolve; 2)调用格式为:linsolve(A,b),例3.24 求线性方程组AX=b的解。,解方程组(1)的命令如下: A=34,8,4;3,34,3;3,3,8; b=4;3;2; X=linsolve(A,b) %调用linsolve函数求(1)的解 Ab %用另一种方法求(1)的解,3.5.2 非线性方程组的符号求解,1) 函数solve;2)调用格式: solve(eqn1,eqn2,eqnN,var1,var2,varN),例3.25 解方程。,x=solve(1/(x+2)+4*x/(x2-4)=1+2/(x-2),x)

19、 %解方程(f=sym(x-(x3-4*x-7)(1/3)=1); x=solve(f) %解方程(2) x=solve(2*sin(3*x-pi/4)=1) %解方程(3) x=solve(x+x*exp(x)-10,x) %解方程(4)。仅标出方程的左端,3.6常微分方程的符号求解,1) 函数dsolve; 2)调用格式:dsolve(eqn1,condition,var),说明: 该函数求解微分方程eqn1在初值条件condition下的特解。参数var描述方程中的自变量符号,省略时按缺省原则处理,若没有给出初值条件condition,则求方程的通解。,特别: dsolve在求微分方程组

20、时的调用格式为: dsolve(eqn1,eqn2,eqnN,condition1,conditionN,var1,varN),说明: 函数求解微分方程组eqn1、eqnN在初值条件conditoion1、conditionN下的解,若不给出初值条件,则求方程组的通解,var1、varN给出求解变量。,方法:在函数dsolve所包含的equation中,用字母D表示求微分,D的数字表示几重微分,D后的变量为因变量。如Dy表示一阶微分项y;D2y表示二阶微分项y;并且默认所有这些变量都是对自变量t求导。,例3.26 求微分方程的通解。,dsolve(Dy=5) ans=5*t+C1 dsolve

21、(Dy=x, x) % 求微分方程y=x的通解,指定x为自变量 ans1/2*x2+C1,dsolve(D2y=1+Dy) %求y=1+y的通解 ans=-t+C1+C2*exp(t) dsolve(D2y=1+Dy,y(0)=1,Dy(0)=0) %求y=1+y的解,加初始条件 ans=-t+exp(t),例3.27 求微分方程的通解。,y=dsolve(Dy-(x2+y2)/x2/2,x) %解(1)。方程的右端为0时可以不写 y=dsolve(Dy*x2+2*x*y-exp(x),x) %解(2) y=dsolve(Dy-x/y/sqrt(1-x2),x) %解(3),例3.28 求微分

22、方程的特解。,y=dsolve(Dy=2*x*y2,y(0)=1,x) %解(1) y=dsolve(Dy-x2/(1+y2),y(2)=1,x) %解(2),* 常微分方程组求解,例3.29求微分方程组的解。,x,y=dsolve(Dx=yx,Dy=2x) %微分方程组的通解 X=exp(t)*C1+C2*exp(t)-C2-2-2*t Y=C2+2*t x,y=dsolve(Dx=yx,Dy=2x,x(0)=0,y(0)=1)%加初始条件 X=? Y=?,1、求极限 和,2、设 ,求f(t),3、求积分,4、求y+ytgx=cosx的通解。,5、解微分方程组。,信号分析和处理,一、信号的产

23、生 二、信号的运算 + :y=x1+x2 * : y=x1.*x2 尺度变换 :y=k*x1 y=x(-n) :y=fliplr(x):y=sun(x(n1:n2):y=sun(abs(x).2),卷积和:conv,x1=0 0.5 1 1.5,x2=1 1 1 y=conv(x1,x2) k0=x1(1)+x2(1);%卷积和的起点 k1=length(x1)+length(x2)-2;%卷积和的宽度 k=k0:k0+k1; stem(k,y),数据分析,Time Location 1 Location 2 Location 3 01h00 11 11 9 02h00 7 13 11 03h

24、00 14 17 20 04h00 11 13 9 05h00 43 51 69 06h00 38 46 76 07h00 61 132 186 08h00 75 135 180 09h00 38 88 115 10h00 28 36 55 11h00 12 12 14 12h00 18 27 30 13h00 18 19 29 14h00 17 15 18 15h00 19 36 48 16h00 32 47 10 17h00 42 65 92 18h00 57 66 151 19h00 44 55 90 20h00 114 145 257 21h00 35 58 68 22h00 11 1

25、2 15 23h00 13 9 15 24h00 10 9 7,11 11 9 7 13 11 14 17 20 11 13 9 43 51 69 38 46 76 61 132 186 75 135 180 38 88 115 28 36 55 12 12 14 18 27 30 18 19 29 17 15 18 19 36 48 32 47 10 42 65 92 57 66 151 44 55 90 114 145 257 35 58 68 11 12 15 13 9 15 10 9 7,以上数据被保存在一个称为count.dat 的文件中,调入此文件,并看看文件的一些参数,load

26、count.dat n,p = size(count) n = 24 p = 3,创建一个时间轴后,我们可以把图画出来:,t = 1:n; set(0,defaultaxeslinestyleorder,-|-|-.) set(0,defaultaxescolororder,0 0 0) plot(t,count), legend(Location 1,Location 2,Location 3,0) xlabel(Time), ylabel(Vehicle Count), grid on,继续用上面的数据,其每列最大值均值及偏差分别为: mx = max(count) mu = mean(count) sigma = std(count) mx = 114 145 257 mu = 32.0000 46.5417 65.5833 sigma = 25.3703 41.4057 68.0281,还可以定位出最大最小值的位置 mx,indx = min(count) mx = 7 9 7 indx = 2 23 24 面这句命令则找出了整个矩阵的最小值: min(count(:)求第一列的方差: cov(count(:,1) cov()函数作用于矩阵,则会计算其协方差矩阵.corrcoef()用于计算相关系数,如: corrcoef(count),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报