第三章 MATLAB的符号计算
MATLAB应用第三章-符号计算

3. 1 数据类型 3.2 符号运算
数学运算中除了数值运算外,还有大量抽象运算(计算式中带有符号变 量、表达式的运算)。Matlab就是利用maple软件的符号运算功能来实 现这些符号运算的。 Maple : 通用的数学和工程软件,是世界上最值得信赖、最完整的数学 软件之一,被高等院校、研究机构和公司广泛应用,用户渗透超过97% 的世界主要高校和研究所,超过81%的世界财富五百强企业。 Maple提供世界上最强大的符号计算,无与伦比的数值计算,支持 用户界面开发和网络发布,内置丰富的数学求解库,覆盖几乎所有的数 学分支,所有的操作都是在一个所见即所得的交互式技术文档环境中完 成,完成计算的同时也生成了专业技术文件和演示报告。 Maple不仅仅提供编程工具,更重要的是提供数学知识。Maple是 教授、研究员、科学家、工程师、学生们必备的科学计算工具,从简单 的数字计算到高度复杂的非线性问题,Maple都可以帮助您快速、高效 地解决问题。用户通过Maple产品可以在单一的环境中完成多领域物理 系统建模和仿真、符号计算、数值计算、程序设计、技术文件、报告演 示、算法开发、外部程序连接等功能,满足各个层次用户的需要,从高 中学生到高级研究人员。
格 Eg 3-2 补充。 补充。 2)char函数创建:char(‘string1’,’string2’, …); Eg 3-3 各个字符串不须同大小, 各个字符串不须同大小,该函数自动补充空白 字符。 字符。 Eg 3-4
字符串与单元 1)cellstr将字符数组转换成单元数组。 2)char函数将单元数组转换成字符数组。 数组的转换 字符串的比较 1)strcmp(a,b):比较两个字符串所有字符是
Grand total is 33 elements using 462 bytes
第三章MATLAB符号运算

第三章MATLAB符号运算第三章 MATLAB符号运算MATLAB 不仅具有数值运算功能,还开发了在MATLAB环境下实现符号计算的⼯具包Symbolic Math Toolbox和⼤量的符号运算函数,符号运算的主要功能有(1)符号表达式、符号矩阵的创建;(2)符号线性代数;(3)因式分解、展开和简化;(4)符号代数⽅程求解;(5)符号微积分;(6)符号微分⽅程。
第⼀节符号运算的基本操作⼀、概述1、什么是符号运算符号运算与数值运算的区别:(1)数值运算中必须先对变量赋值,然后才能参与运算;(2)符号运算⽆须事先对独⽴变量赋值,运算结果以标准的符号形式表达。
2、特点(1)运算对象可以是没赋值的符号变量;(2)可以获得任意精度的解析解。
⼆、符号矩阵的创建数值矩阵A=[1,2;3,4]可以,A=[a,b;c,d]不可以。
MATLAB提供了两个建⽴符号对象的函数:sym和syms,两个函数的⽤法不同。
1、sym函数sym函数⽤来建⽴单个符号量,⼀般调⽤格式为:符号量名=sym('符号字符串')该函数可以建⽴⼀个符号量,符号字符串可以是常量、变量、函数或表达式。
应⽤sym函数还可以定义符号常量,使⽤符号常量进⾏代数运算时和数值常量进⾏的运算不同。
例:>>A = sym('[a , 2*b ; 3*a , 0]')A =[ a, 2*b][3*a, 0]这就完成了⼀个符号矩阵的创建。
注意:符号矩阵的每⼀⾏的两端都有⽅括号,这是与 MATLAB数值矩阵的⼀个重要区别。
把字符表达式转换为符号变量。
>>y=sym('2*sin(x)*cos(x)')y =2*sin(x)*cos(x)>>y=simple(y)y =sin(2*x)2、syms函数函数sym⼀次只能定义⼀个符号变量,使⽤不⽅便。
MATLAB提供了另⼀个函数syms,⼀次可以定义多个符号变量。
第三章_Matlab符号计算

① 数值运算中必须先对变量赋值,然后才能参与运算。 ② 符号运算无须事先对独立变量赋值,运算结果以标准的 符号形式表达。
符号运算的特点:
① 运算对象可以是没赋值的符号变量。符号计算定义在符 号变量的基础上,符号表达式计算前必须定义符号变量;
② 符号计算是精确计算,可以获得任意精度的解; • Symbolic Math Toolbox——符号运算工具包通过调用 Maple软件实现符号计算的。 • Maple软件——主要功能是符号运算,它占据符号软件的 主导地位。
第3章 MATLAB符号计算
主讲人:李良群
所谓符号计算是指在运算时,无须事先对变量 赋值,而将所得到结果以标准的符号形式来表示。
Matlab本身并没有符号计算功能, MathWorks 公司于1993年购买了著名的符号数学软件Maple的 使用权,并利用Maple已有的函数库,开发了符号 数学工具箱。
符号量名=sym('符号字符串')
符号字符串可以是常量、变f1='ax^2+bx+c' —— 二次三项式 f2= 'ax^2+bx+c=0' —— 方程 f3='Dy+y^2=1' ——微分方程
符号表达式或符号方程可以赋给符号变量,以后调用 方便;也可以不赋给符号变量直接参与运算 使用符号变(常)量进行代数运算和数值变(常)量 进行的运算是不同的。 例1 考察符号变量和数值变量的差别。 a=sym('a');b=sym('b');c=sym('c');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章 MATLAB的符号运算_微分方程求解_符号代数方程

或syms a b c x
f='a*x^2+b*2+c'
9/46
数组、矩阵与符号矩阵(P51)
m1=sym('[ab bc cd ; de ef fg ; h l j]') m2=sym('[1 12;23 34]') 例:
– >>A=hilb(3) A= 1.0000 0.5000 0.3333 0.5000 0.3333 0.2500 0.3333 0.2500 0.2000
dx dx2
例6:已知函数
f
= x2 sin 2 y 求
df
df ,
d2 f ,
dx dy dxdy
例7:已知函数
f
=
xe y y2
求
ff ,
xy
见example3_12
23/46
df
例8:已知导函数
= ax 求原函数
dx
b
例9:已知导函数 f (x) = x2 求 f (x)dx a
例10:计算重积分I = 2 d a r2 sin dr ?
– 例:>>rho=1+sqrt(5)/2; >>sym(rho,’d’); ans= 2.1180339887498949025257388711907
11/46
符号对象转换为数值对象的函数double(), vpa() 1、double()
这种格式的功能是将符号常量转换为双精度数值 2、vpa()
创建符号对象与函数命令(P50)
1、函数命令sym()格式 格式1 s=sym(a)(a代表一个数字值、数值矩阵、数值表达式 格式2 s=sym(‘a’)(a代表一个字符串)
第3章 MATLAB符号计算

>>f1=sym('1/(s^2+3*s+2)'),[n1,d1]=numden(f1) >>f2=sym('1/s^2+3*s+2') ,[n2,d2]=numden(f2)
4
1
2
3.4 符号极限、微积分和级数求和
3.4.11101 0001 0100 1011 符号极限 0011 0010 1010
%对x求趋近于0的极限
%左趋近于0
>>limit(f,'x',0,'right')
%右趋近于0
4
1Байду номын сангаас
2
例:求
lim
x 0
ln(1 2 x) sin 3x
0011 0010 1010 1101 0001 0100 1011
>>syms x;F=log(1+2*x)/sin(3*x);limit(F,x,0)
subs(s) %用给定值替换符号表达式s中的所有 变量 subs(s,new) %用new替换符号表达式s中的自 由变量 subs(s,old,new) %用new替换符号表达式s中的 old变量 >>f=sym('(x+y)^2+3*(x+y)+5'),x=5;f1=subs(f) >>f2=subs(f,'x+y','s') >> f4=subs(f,'x','z')
compose(f,g) %求f(x)和g(y)的复合函数f(g(y))
第三章MATLAB语言符号运算PPT课件

3.1.1 符号对象的创建
例:
>> x=sym('x') >> y=sym('y')
>> syms x y
>> z=x*x+y*y z= x^2+y^2 >> a=5;b=3;c=a*a+b*b c=
34
3.1.1 符号对象的创建
2. 符号常量的创建 不含变量的符号叫符号常量。符号常量的定义 也使用函数sym()。
3.1.1 符号对象的创建
➢syms函数调用格式:
函数sym一次只能定义一个符号变量,使用不 方便。MATLAB提供了另一个函数syms,一 次可以定义多个符号变量。syms函数的一般 调用格式为: syms 符号变量名1 符号变量名2 … 符号变量 名n 用这种格式定义符号变量时不要在变量名上加 字符串分界符(‘),变量间用空格而不要用逗号 分隔。
例:
>> a=sym(1/5) a= 1/5
3.1.1 符号对象的创建
3. 符号表达式的创建
符号表达式为含有符号对象(符号常量、符号变量)的 表达式,其创建方法如下: 1.利用函数sym()直接创建 sym(A):其中A为字符串的表达式,必须被单引号引用。 2.利用符号对象创建 符号表达式也可以通过创建的符号对象来实现,当把已 定义的符号变量或者符号常量连接为表达式,即可完成 符号表达式的创建。
※ 数值运算中必须先对变量赋值,然后才能参 与运算。
※ 符号运算无须事先对独立变量赋值,运算结 果以标准的符号形式表达。
3.1.1 符号对象的创建
在MATLAB中的符号计算主要是对符号对象进 行操作的,在使用符号计算功能前,首先需要创 建符号对象。本节主要介绍符号对象的创建,其 中常用的符号对象主要包括符号常量和变量、符 号表达式、符号矩阵。
实验三 MATLAB符号计算

expr1 =
x^3+2*exp(-t)*x^2+(1+exp(-t)^2)*x+exp(-t) expr2 = x*exp(-t)^2+(2*x^2+1)*exp(-t)+(x^2+1)*x
expand使用指令 y=0.14-(1.2e+002)*(-2.4005*(0.445-x)^7+4.2505*(0.445x)^6-2.2336*(0.445-x)^5+0.4993*(0.445-x)^40.0514*(0.445-x)^3+0.0025*(0.445-x)^2);
符号矩阵的生成
符号矩阵可通过函数sym来生成。符号矩阵中的元素是任何不带等号的符 号表达式,各符号表达式的长度可以不相同;符号矩阵中,以空格或逗号 分隔的元素指定的是不同列的元素而分号分隔的元素指定的是不同行的元 素。 例:
syms x; A=sym(‘[cos(x),sin(x),x;-x+1 x^2+x+1 tan(x)]’) A= [ cos(x), sin(x), x] [ -x+1, x^2+x+1, tan(x)] >> size(A) %求符号矩阵的大小 ans = 2 3 > a=[1 2 3 4;4 5 6 7]; >> b=sym(a) b= [ 1, 2, 3, 4] [ 4, 5, 6, 7]
第3讲 MATLAB语言的符号运算

2、微分
Matlab求微分的函数是diff()
说明:
①用diff(f)求 f 对预设独立变量的一次微分;
② diff(f,t)求 f 对独立变量 t 的一次微分;
③用diff(f,n)求 f 对预设独立变量的n次微分 ④diff(f,t,n)求 f 对独立变量 t 的n次微分; ⑤ f 可以是标量、向量、矩阵。
调用格式如下:
通过F=fourier(f)求时域函数f的Fourier变换
①如果采用F=fourier(f)的格式,默认积分变量是x;
③invfourier()为Fourier反变换。
②如果采用F=fourier(f,u)的格式,指定u为积分变量;
例:计算时间函数的 >>syms t w
f (t ) e
(t ) y (t ) x (t ) x(t ) y
[x,y]= dsolve(‘Dx=y’,Dy=-x’) [f,g]= dsolve(‘Df=3*f+4*g’,’Dg=-5*f+2*g’)
⑥ 2个微分方程,给定初始条件 [x,y]= dsolve(‘Dx=y’,Dy=-x’,’x(0)=0’,’y(0)=1’)
3.4 微分方程求解
符号运算中的微分方程求解函数可利用如下格式
dsolve(‘方程1’,‘方程2’,…) 函数格式说明: ①可多至12个微分方程的求解; ②默认自变量为x,并可任意指定自变量t,u等;
③方程的各阶导数项以大写字母“D”作为标识,后接 数字阶数,再接解变量名;
④初始条件以符号代数方程给出,如果初始条件项缺 省,其默认常数为C1,C2,…等; ⑤返回变量的格式为:[Y1,Y2,…]=dsolve(…)
3.6 符号表达式的运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章MATLAB的符号计算
MATLAB的数学计算分为数值计算和符号计算,在第二章中我们介绍了数值计算。
符号计算则是可以对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理,是MATLAB 处理数值功能的自然扩展。
MATLAB具有符号数学工具箱,将符号运算结合到MATLAB的数值运算环境。
符号运算可以实现微积分运算、表达式的化简以及求解代数方程和微分方程等。
3.1 符号表达式的建立
在符号运算时,首先要定义基本的符号对象,然后才能进行符号运算。
符号对象是一种数据结构,包括符号常数、符号变量和符号表达式,用来存储代表符号的字符串。
在符号运算时,凡是由符号表达式所生成的对象也都是符号对象。
3.1.1 创建符号常量、变量和表达式
符号常量是不含变量的符号表达式,用sym命令来创建符号常量。
语法:sym(‘常量’) %创建符号常量
sym(‘arg’ , 参数) %把变量定义为符号对象
sym(‘表达式’) %创建符号表达式
sym(‘arg1’ , ‘arg2’ ,……,参数) %把变量定义为符号对象
sym arg1 arg2 …, 参数%把变量定义为符号对象的简洁形式
3.1.2 符号矩阵
用sym和syms命令也可以创建符号矩阵。
例如:
>>A=sym(‘[a, b ; c, d]’) 与下列相同
>>syms a b c d
>>A=[a, b ; c, d] 与下列相同
>>B=’[a, b; c, d]’>>C=sym(B)
3.2 符号表达式的代数运算
由于MATLAB采用了重载技术,使得符号运算表达式的运算符和基本函数都与数值计算的几乎完全相同,使得符号运算的编程很方便。
例如:
>> syms a b c d >>f=sym(‘2*x^2+3*x+4’)
>>A=[a, b; c, d] >>g=sym(‘5*x+6’)
>>det(A) >>f+g
可以使用digits和vpa命令来实现任意精度的控制。
语法:digits(n) %设定默认精度
vpa(s, n) %将s表示为n位有效位数的符号对象
使用double和numeric函数将符号对象转化为数值对象。
语法:double(S) %将符号变量S转换成数值
numeric(S) %将符号变量S转换成数值
3.3 符号表达式的操作和转换。