MATLAB的符号运算ppt课件_第1页
MATLAB的符号运算ppt课件_第2页
MATLAB的符号运算ppt课件_第3页
MATLAB的符号运算ppt课件_第4页
MATLAB的符号运算ppt课件_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三讲 MATLAB的符号运算科学与工程技术中的数值运算固然重要,但自然科学实际分析中各种各样的公式、关系式及其推导就是符号运算要处理的问题。在Matlab7.0中,符号计算虽以数值运算的补充身份出现,但它们都是科学计算研讨的重要内容。Matlab开发了实现符号计算的工具包Symbolic Math Toolbox 。符号数学工具箱中的工具是建立在功能强大的Maple的根底上。它最初是由加拿大的滑铁卢(Waterloo)大学开发出来的。假设要求Matlab7.0进展符号运算,那么首先由Maple计算并将结果前往到Matlab7.0命令窗口。两个数学分析的可视化界面图示化符号计算器 (由命令fu

2、ntool引出)泰勒级数逼近分析界面 (由命令taylortool引出)图示化符号计算器由三个独立的窗口构成,经过函数运算控制窗口来演示另外两个图形窗口,任何时候,只需一个窗口属于激活形状。而被激活的函数图像可随运算控制窗口的操作而做相应的变化。下面给出运算控制窗口的键位功能。前两行是函数 f 和 g 的详细解析式,第三行是自变量 x 的取值范围和常数 a 的值。第四行只对 f 起作用,如求导、积分、简化、提取分子和分母、倒数、反函数。第五行是处置 f 和 a 的加减乘除等运算。第六行前四个进展 f 和 g 之间的运算,后三个分别是:求复合函数;把 f 传送给 ;swap是实现 f 和 g 功

3、能的交换。最后一行是对计算器本身进展操作。Funtool计算器存有一张函数列表fxlist 这7个功能键分别是:Insert:把当前激活窗的函数写入列表Cycle:依次循环显示fxlist中的函数Delete:从fxlist列表中删除激活窗的函数Reset:使计算器恢复到初始调用形状Help:获得关于界面的在线提示阐明Demo:自动演示Close:封锁整个计算器泰勒级数逼近分析该界面用于察看函数f(x)在给定区间被N阶泰勒多项式Tn(x)逼近的情况。f(x)的输入可由命令taylortool(fx)引入,或者在栏中直接输入表达式,回车确定。N默许值为7,a是级数的展开点。函数的察看区间默以为(

4、-2pi,2pi)。符号运算的功能符号表达式、符号矩阵的创建符号线性代数因式分解、展开和简化符号代数方程求解符号微积分符号微分方程一、符号运算的根本操作什么是符号运算与数值运算的区别 数值运算中必需先对变量赋值,然后才干参与运算。 符号运算无须事先对独立变量赋值,运算结果以规范的符号方式表达。特点: 运算对象可以是没赋值的符号变量,以推了解析的方式进展,因此不受计算误差累积所带来的困扰。 可以给出完全正确的封锁解或恣意精度的数值解(当封锁解不存在时)。符号计算指令的调用简单,和经典教科书公式相近。计算所需的时间较长。Symbolic Math Toolbox符号运算工具包经过调用Maple软件

5、实现符号计算的。Maple软件主要功能是符号运算,它占据符号软件的主导位置。 2. 字符串与符号变量、符号常量字符串对象 f = sin(x)+5xf 字符串名sin(x)+5x 函数表达式 字符串标识字符串表达式一定要用 单引号括起来Matlab才干识别。用class( )来前往对象的数据类型。 里的内容可以是函数表达式,也可以是方程。例: f1=a*x2+b*x+c 二次三项式 f2= a*x2+b*x+c=0 方程 f3=Dy+y2=1 微分方程函数表达式或方程可以赋给字符串或符号变量,以后方便调用。符号变量符号变量是内容可变的符号对象。符号变量通常是指一个或几个特定的字符,不是指符号表

6、达式,甚至可以将一个符号表达式赋值给一个符号变量。符号变量有时也称自在变量,它的命名规那么和数值变量的命名规那么一样。相关指令为: sym( ) 和 syms( ) symbolic的缩写例:用函数命令sym( )和syms( )来创建符号对象并检测数据类型。a=sym(a) 留意两个 a的区别b=sym(c)classa=class(a)classb=class(b) 可看出两个变量均为符号对象syms a b c d e f g hwhos 也可以查看一切变量类型从上述比较来看:当需求同时定义多个符号变量时,运用syms( )更简约一些。符号常量当数值常量作为sym( )的输入参量时,就建

7、立了一个符号对象符号常量。虽然看上去是一个数值量,但曾经是一个符号对象了。例:a=3/4; b=3/4; c=sym(3/4); d=sym(3/4); whos 查看变量类型a为实双精度浮点数值类型;b为实字符类型;c和d都是符号对象类型。 由符号变量构成的符号函数和符号方程符号表达式是由符号常量、符号变量、符号函数运算符以及公用函数衔接起来的符号对象。包括:符号函数和符号方程。判别看带不带等号。例:syms x y z; f1=x*y/z; f2=x2+y2+z2; f3=f1/f2; e1=sym(a*x2+b*x+c) e2=sym(sin(x)2+2*cos(x)=1) e3=sym

8、(Dy-y=x)3.符号矩阵的创建 数值矩阵 clear clc A=1,2;3,4 A=a,b;c,d 不识别用Matlab函数sym创建矩阵命令格式:A=sym( ) 符号矩阵内容同数值矩阵 需用sym指令定义,需用 标识 留意与a,b;c,d的区别例如:A = sym(a , 2*b ; 3*a , 0) A = a, 2*b 3*a, 0 这就完成了一个符号矩阵的创建。留意:符号矩阵的每一行的两端都有方 括号,这是与 Matlab数值矩阵的 一个重要区别。用字符串直接创建矩阵v 模拟Matlab数值矩阵的创建方法v 需保证同一列中各元素字符串有相v 同的长度。例:A = a,2*b;

9、3*a, 0 A = a, 2*b 3*a, 0 符号矩阵的修正 a.直接修正 可用、 键找到所要修正的矩阵,直接修正 b.指令修正 用A1=subs(A, new, old)来修正例如:例如:A = a, 2*b 3*a, 0A(2,2)=4*bA1 = a, 2*b 3*a, 4*bA2=subs(A1, c, b) A2 = a, 2*c 3*a, 4*c v将数值矩阵转化为符号矩阵v 函数调用格式:sym(A)vclear A=1/3,2.5;1/0.7,2/5vA =v 0.3333 2.5000v 1.4286 0.4000vsym(A)vans =v 1/3, 5/2v10/7,

10、 2/5 符号矩阵与数值矩阵的转换v将符号矩阵转化为数值矩阵v函数调用格式: numeric(A)?vA =v 1/3, 5/2v10/7, 2/5vnumeric(A)vans =v 0.3333 2.5000v 1.4286 0.4000由于Matlab7.0采用了重载技术,使得符号计算表达式的运算符和根本函数,无论在外形、称号上,还是在运用方法上,都与数值计算中的运算符和根本函数几乎完全一样。这无疑给用户带来了极大的方便。例外:在符号对象的比较中,没有大于、 大于等于、 小于、 小于等于的概念,而只需能否“等于的概念。二、符号运算1.符号矩阵运算数值运算中,一切矩阵运算操作指令都比较直观

11、、简单。例如:a=b+c; a=a*b ;A=2*a2+3*a-5等。符号运算中,很多方面在方式上同数值计算都是一样的,没必要重新学习新的规那么。 2. 恣意精度的数学运算 在symbolic中有三种不同的算术运算:数值类型 matlab的浮点算术运算有理数类型 maple的准确符号运算vpa类型 maple的恣意精度算术 运算 浮点算术运算format long (定义输出格式) 1/2+1/3 ans =0.83333333333333符号运算sym(1/2)+(1/3)或sym(1/2+1/3)ans = 5/6 准确解恣意精度算术运算digits(n) 设置近似解的精读为n位有效数字,

12、默许32位有效数字。vpa(x,n) 求符号解的近似解,该近似解的有效位数由n来决议。digits(25)vpa(1/2+1/3)ans =.8333333333333333333333333vpa(5/6,40) ans =.8333333333333333333333333333333333333333 a=sym(1/4,exp(1);log(3),3/7)a = 1/4,exp(1)log(3), 3/7vpa(a,10)ans =.2500000000, 2.7182818281.098612289, .42857142863.符号表达式的化简可以对符号计算结果进展简化,诸如因式分解

13、、同类项合并、符号表达式的展开、符号表达式的化简和通分等等。合并同类项 collect(v) -将表达式v的一样次幂的项合并。例:syms x t % 定义根本变量 f=(x-1)*(x-2)*(x-3) 定义符号表达式 collect(f) 合并f中x的同类项expand(s) 将s中的各项进展展开,用于多项式,三角函数、指数函数、对数函数。 例:syms x y; f=(x+y)3; f1=expand(f) f1 = x3+3*x2*y+3*x*y2+y3例:h=cos(x-y) expand(h)factor(S) 将系数为有理数的多项式(矩阵)S,表示成低阶多项式相乘的方式,假设不能

14、分解,那么前往S本身。例:syms x y factor(x3-y3)simplify( ) 该函数是一个强有力的具有普遍意义的工具,它利用Maple化简规那么对表达式进展简化。例:S=sym(x2+5*x+6)/(x+2);sqrt(16) simplify(S)simple( ) 用几种不同的算术简化规那么对符号表达式进展简化,使其用最少的字符来表示。虽然并非表达式中的字符越少,表达式就越简单,但采用这个规范往往可以得到称心的结果,尤其是对于包含三角函数的表达式。例:sym x simple(cos(x)2+sin(x)2)从结果看出,simple比较这些不同函数的结果,最终把最少字符作为

15、规范。diff(f) 对缺省变量求f的微分diff(f,v) 对指定变量v求微分diff(f,n) 对默许变量求n阶微分diff(f,v,n) 对指定变量v求f的n阶微分例:syms a x f=sin(a*x) df=diff(f) dfa=diff(f,a,2)4. 符号微积分与积分变换符号表达式的极限limit(F,x,a) 求当xa时,表达式F的极限limit(F, a) 默许自变量时,趋于a的极限limit(F) 默许自变量,默许a=0 limit(F,x,a, left) 取F的左极限limit(F,x,a, right) 取F的右极限例:syms h n x dc=limit(s

16、in(x+h)-sin(x)/h,h,0) %按照导数的定义求sin的导数留意:对于极限不存在,前往NaN例: limit(1/x,x,0) limit(1/x,x,0, left) limit(1/x,x,0, right)结果分别为:ans = NaNans = -Infans = Infint(f) 对f表达式的缺省变量求不定积分int(f,v) 对f表达式的v变量求不定积分int(f,v,a,b) 对f表达式的v变量在a,b) 区间求定积分 findsym(f) 可以找出f中的每个变量 留意:当函数的积分不存在时,Matlab7.0将简单地前往原来的积分表达式。符号表达式的积分int被

17、积表达式,积分变量,积分上限, 积分下限 定积分缺省时为不定积分例:int(-2*x/(1+x2)2) ans = 1/(1+x2) int(log(x) int(log10(x) int(sin(x),x,-pi,pi) taylor(f,n,v) n阶泰勒级数展开例:syms x f=1/(2+cos(x) r=taylor(f,8)symsum(f,v,a,b) 表达式f中变量 v从a变到b时的有限和例:syms x k s1=symsum(1/k2,1,inf) s2=symsum(xk,k,0,inf) 上述都是求无穷级数的和符号积分变换ztrans(f) Z变换Invztrans(

18、f) 反Z变换Laplace(f) 拉氏变换Invlaplace(f) 反拉氏变换fourier(f) 付氏变换Invfourier(f) 反付氏变换 留意 :上述函数均缺省了部分参数 例1.计算二重不定积分dxdyxexyF=int(int(x*exp(-x*y),x),y)例例2.计算计算 f=x*exp(-x*10)的的Z变换变换 F=ztrans(f) F= z*exp(-10)/(z-exp(-10)2符号积分的例子 syms x y F=int(int(x*exp(-x*y),x),y)F =1/y*exp(-x*y) syms x f=x*exp(-x*10); F=ztrans

19、(f) F=ztrans(x*exp(-x*10);F =z*exp(-10)/(z-exp(-10)2 例3. 计算指数函数eAt。用拉氏反变换法计算eAt的公式为: eAt = L-1(SI-A)-1系统矩阵A= 3210tttttttteeeeeeee22222222eAt =结果: a=0 1;-2 -3; syms s b=(s*eye(2)-a)b = s, -1 2, s+3 B=inv(b) (s+3)/(s2+3*s+2), 1/(s2+3*s+2) -2/(s2+3*s+2), s/(s2+3*s+2) b11=ilaplace(sym(b,1,1);b(1,1)=b11;

20、 b12=ilaplace(sym(b,1,2);b(1,2)=b12; b21=ilaplace(sym(b,2,1);b(2,1)=b21; b22=ilaplace(sym(b,2,2);b(2,2)=b22; bb = -exp(-2*t)+2*exp(-t), exp(-t)-exp(-2*t) -2*exp(-t)+2*exp(-2*t), 2*exp(-2*t)-exp(-t) 5.符号代数方程求解 Matlab符号运算可以解普通的线性方程、非线性方程、超越方程。当方程组不存在符号解时,又无其他自在参数,那么给出数值解。命令格式:solve(f,v) 求一个方程f=0的解Solv

21、e(f1,f2, fn) 求n个方程的解 例1. f = ax2+bx+c 求解f=a*x2+b*x+c; solve(f) 对缺省变量x求解ans =1/2/a*(-b+(b2-4*a*c)(1/2)1/2/a*(-b-(b2-4*a*c)(1/2)计算机格式aacbb242普通格式例2. 符号方程cos(x)=sin(x) tan(2*x)=sin(x)求解f1=solve(cos(x)=sin(x),f1 =1/4*pi f2=solve(tan(2*x)=sin(x) solve(f , b ) 对指定变量b求解 加与不加效果一样 例3. 解方程组 x+y+z=1 x-y+z=2 2x

22、-y-z=1g1=x+y+z=1,g2=x-y+z=2,g3=2*x-y-z=1f=solve(g1,g2,g3)f=solve(x+y+z=1,x-y+z=2,2*x-y-z=1)f =z = 5/6, y = -1/2, x = 2/3f=solve(x+y+z=1,x-y+z=2,2*x-y-z=1)f = x: 1x1 sym f.x ans =2/3 y: 1x1 sym f.y ans =-1/2 z: 1x1 sym f.z ans =5/6 x,y,z=solve(x+y+z=1,x-y+z=2,2*x-y-z=1) x = 2/3 y =-1/2 z =5/66. 符号微分方

23、程求解 用一个函数可以方便地得到微 分方程的符号解符号微分方程求解指令:dsolve命令格式:dsolve(f,g)f 微分方程,可多至12个微分方程的求 解;g为初始条件默许自变量为 x,可恣意指定自变量t, u等微分方程的各阶导数项以大写字母D表示 dtdydxdy22dtydnndtyd22dxydnndxyd或或或y的一阶导数 Dyy的二阶导数 D2yy的 n 阶导数 Dnyy1,y2=dsolve(x1,x2,xn) 前往 微分方程的解一阶微分方程dsolve(Dx=y,Dy=x,x(0)=0,y(0)=1)ans =x(t) = sin(t), y(t) = cos(t)二阶微分方

24、程dsolve(D2y=-a2*y,y(0)=1,Dy(pi/a)=0)ans =cos(a*x)例.y=dsolve(D2y+2*Dy+2*y=0,y(0)=1,Dy(0)=0)ans =exp(-x)*cos(x)+exp(-x)*sin(x)ezplot(y) 方程解y(t)的时间曲线图22dxyddxdy202y00 )(dxdy,1)0(y求该方程的解-6-4-2024050100150200250300 xexp(-x)*cos(x)+exp(-x)*sin(x)-6-4-2024050100150200250texp(-t) sin(t)+exp(-t) cos(t)三、mapl

25、e函数符号运算的扩展maple是专门进展数学运算的软件工具, 具有超强的符号运算才干,提供了 几乎包括一切数学领域的公用函数matlab依赖于maple的内核与函数库,扩 展了本人的符号运算功能。 matlab还设计了对maple库函数的调用功能使得已有的maple数学功能,可以扩展matlab中,作为本身符号运算才干的扩展。1. maple内核访问函数可以访问maple内核的matlab函数: maple 访问maple内核函数 mapleinit maple函数初始化 mpa maple函数定义 mhelp maple函数协助命令 procread maple函数程序安装. maple 的

26、调用格式maple(表达式 将表达式送至maple内核, 前往符号表达式结果。maple 函数,变量1,变量2 调用maple函数,传送给定 变量。 例1. 展开5阶 bernoulli 多项式,计算 x=3 时bernoulli 数。a=maple(bernoulli(5,x)a =-1/6*x+5/3*x3+x5-5/2*x4a=maple(bernoulli(5,3)a =85例2. 化简三角函数式sin2x+cos2xa=maple(simplify(sin(x)2+cos(x)2);)a =1例4. 求f(t)=e-3tsint的拉式变换f=maple(laplace(exp(-3*

27、t)*sin(t),t,s);)f =1/(s+3)2+1)例4. 寻觅二次多项式的完全平方 f (x) = x2+2x+2a=maple(completesquare(x2+2*x+2)a =completesquare(x2+2*x+2) 将工具包装入内存maple(with(student);)a=maple(completesquare(x2+2*x+2)a =(x+1)2+1maple软件中的一切函数,在初始化时并没有完全装入内存,可用readlib指令把库函数读入内存,或用with指令将运用工具包装入内存。调用格式maple(readlib(函数名);)maple(with(工具包

28、名);)例5.求sin(x2+y2)在x=0,y=0处泰勒级数展开式,8阶截断。maple(mtaylor(sin(x2+y2),x=0,y=0,8)ans =mtaylor(sin(x2+y2),x = 0, y = 0,8)maple(readlib(mtaylor);)maple(mtaylor(sin(x2+y2),x=0,y=0,8)ans =x2+y2-1/6*x6-1/2*y2*x4-1/2*y4*x2-1/6*y62. mpa maple变量定义任何一个matlab定义的函数f,可运用mpa语句直接调用,还可把 f 定义成maple变量v。maple的任务空间与matlab任务

29、空间是相互独立的, 所以f 与v是属于不同任务空间中的变量mpa的调用格式: mpa(v,f) mpa v ff为matlab任务空间中已存在的变量例. 电磁力计算公式为试I=0.5,x=0.1邻域展开泰勒级数,3阶截断,令常数 ,1.直接调用maple(readlib(mtaylor);)maple(mtaylor(k*I2/x2,I=0.5,x=0.1,3);)2204)(),(xNISxIF420NSk22),(xkIxIF2.定义符号函数f(matlab6.1无map函数)f=k*I2/x2;maple(mtaylor(f,I=0.5,x=0.1,3);)ans =mtaylor(f,I = .5, x = .1,3)mpa(u,f)maple(mtaylor(u,I=0.5,x=0.1,3);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论