第三章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
第3讲matlab的符号运算

第三讲 MATLAB 的符号运算(注:文中红色字体为命令执行的结果,在Command 窗口中显示)3-1 符号对象的创建和使用1.符号运算入门符号运算的特点是,运算过程中允许存在非数值的符号变量。
先看如下示例: 函数2)(sin )(x x f =,用MATLAB 求它的微积分,命令如下:f=’sin(x)^2’; %定义符号函数f(x)dfdx=diff(f) %求dxx df )(的指令 intf=int(f) %求⎰dx x f )(的指令显示的计算结果为:dfdx=2*sin(x)*cos(x)intf=-1/2sin(x)*cos(x)+1/2*x 所以,x x dx x df cos sin )(2=,x x x dx x f cos sin )(2121-=⎰。
此例中,首先定义符号函数f=’sin(x)^2’,然后由符号运算获得2)(sin )(x x f =的微分和积分。
2.定义符号变量在使用符号变量之前,应先声明某些要用到的变量是“符号”变量。
声明符号变量的语句:syms 变量名列表或: sym(‘变量名’)其中各个变量名应该用空格分隔,而不能用逗号分隔。
如创建符号变量x 和a :x=sym(‘x ’)a=sym(‘alpha ’)或用: syms x a %定义符号变量x 和a这里,变量x 和a 的类型是符号对象,它们被定义后,即可参与符号运算。
3.定义符号表达式和符号方程符号表达式和符号方程是两种不同的操作对象。
区别在于:符号表达式不包含等号(=),而符号方程须带等号。
它们的创建方式相同。
如:要考虑二次函数f=ax^2+bx+c ,可以创建符号表达式,赋值给符号变量f 。
f=sym(‘a*x^2+b*x+c ’)或:f=‘a*x^2+b*x+c’此例中,将符号表达式赋给符号变量f,但这不是必需的,引入符号变量是为了以后调用方便。
在这种情况下,没有创建对应于表达式中a、b、c、x项的变量,为了执行符号数学运算(如微分、积分等),必须显式地创建这些变量,可用下列命令创建:syms a b c x如下例中创建了符号表达式和符号方程,分别赋给相应的符号对象。
matlab中的数学符号与运算

matlab中的数学符号与运算MATLAB(Matrix Laboratory)是一种用于数值计算和科学工程应用的高级编程语言和环境。
MATLAB中包含了丰富的数学符号和运算,用于进行矩阵操作、线性代数、微积分等数学计算。
以下是MATLAB中一些常见的数学符号和运算:1. 数学符号:-矩阵:MATLAB 中的基本数据类型是矩阵,可以使用方括号`[]` 来表示。
例如,`A = [1, 2; 3, 4]` 表示一个2x2的矩阵。
-向量:向量可以表示为一维矩阵,例如,`v = [1, 2, 3]` 表示一个包含3个元素的行向量。
-转置:使用单引号`'` 来进行转置操作。
例如,`A'` 表示矩阵A的转置。
-点乘和叉乘:点乘使用`.*`,叉乘使用`.*`。
例如,`A .* B` 表示矩阵A和B的对应元素相乘,`A * B` 表示矩阵A和B的矩阵乘法。
2. 数学运算:-基本算术运算:MATLAB支持基本的算术运算,如加法、减法、乘法和除法。
例如,`result = 2 + 3`。
-元素-wise 运算:MATLAB 支持元素-wise 的运算,即对矩阵或向量中的每个元素进行运算。
例如,`C = A .* B` 表示矩阵A和B的对应元素相乘。
-矩阵操作:MATLAB 提供了许多用于矩阵操作的函数,如`inv`(求逆矩阵)、`det`(求行列式)、`eig`(求特征值)等。
-积分和微分:MATLAB 提供了`int`(积分)和`diff`(微分)等函数,用于进行积分和微分运算。
-方程求解:MATLAB 提供了`solve` 函数,用于求解方程组。
这些是MATLAB中一些常见的数学符号和运算。
MATLAB 的强大之处在于它的矩阵操作能力,使得它非常适用于数学和工程领域的计算和建模。
如果你有特定的数学运算需求,可以查阅MATLAB 的官方文档或在线资源以获取详细信息。
MATLAB的符号运算V精简版

ans=[2+y,4+y,6+y]
>> subs(f,x,[1:3]) >> subs(f,{x,y},{[1:3],[5:7]})
ans=[7 10 13]
>> subs(f,{x,y},{a+b,a-b}) >> subs(f,{x,y},{x+y,x-y})
Copyright © CUGB
2024/4/3
Matlab的符号运算
符号对象建立时可以附加属性: real、positive 和 unreal
>> x=sym('x','real') >> k=sym('k','positive') >> x=sym('x','unreal')
表明 x 是实的 表明 k 是正的 去掉 x 的附加属性
Copyright © CUGB 2024/4/3
Matlab的符号运算
符号表达式的建立
>> syms x >> f1=sin(x)+cos(x)
推荐!
>> f2=sym(’sin(x)+cos(x)’)
Copyright © CUGB 2024/4/3
Matlab的符号运算
相关函数
➢ findsym: 查找符号表达式中的符号变量
findsym(f) 按字母顺序列出符号表达式 f 中的所有自由变量 findsym(f,N) 列出 f 中距离 x 最近的 N 个自由变量(i,j 除外)
Matlab的符号运算
其它运算
第3章 MATLAB符号计算

复数函数。在符号计算中,复数的共轭conj、求实部real、求虚部 imag和求模abs函数与数值计算中的使用方法相同。但注意,在符号 计算中,MATLAB没有提供求相角的命令。
2.使用syms命令创建符号变量和符号表达式
语法:
syms('arg1', ' arg2',…,参数) syms arg1 arg2 … 参数
%把字符变量定义为符号变量 %把字符变量定义为符号变量的简洁形式
说明:syms用来创建多个符号变量,以上两种方式创建的符号对象是相同的。参数设置和前面的sym命令 相同,省略时符号表达式直接由各符号变量组成。 【例3.2续】 使用syms命令创建符号变量和符号表达式。
>> syms x y real >> z=x+i*y; >> real(z) ans = x >> sym('x','unreal'); >> real(z) ans = x/2 + conj(x)/2
%创建实数符号变量 %创建z为复数符号变量 %复数z的实部是实数x
%清除符号变量的实数特性 %复数z的实部
符号运算中的运算符有以下2种。 (1)基本运算符。
① 运算符“”、“”、“*”、 “\”、“/”、“^”分别实现符号 矩阵的加、减、乘、左除、 右除、求幂运算。
② 运算符“.*”、“./”、“.\”、 “.^”分别实现符号数组的乘、 左除、右除、求幂,即数 组间元素与元素的运算。
实验三MATLAB的符号运算

实验三 MATLAB 的符号运算一 实验目的:1.掌握符号对象的创建及符号表达式化简的基本方法;2.掌握符号微积分、符号方程的求解的基本方法。
二 实验装置:计算机三 实验内容:1.符号对象的创建(1) 建立符号变量使用sym 函数把字符表达式'2*sin(x)*cos(x)'转换为符号变量。
2.符号表达式的化简(1)因式分解对表达式f=x 3-1 进行因式分解。
(2) 符号表达式的展开对符号表达式f=cos(x+y)进行展开。
(3)符号表达式的同类项合并对于表达式f=(2x 2*(x+3)-10)*t ,分别将自变量x 和t 的同类项合并。
(4)符号表达式的化简(5)符号表达式的分式通分对表达式 进行通分。
(6)符号表达式的替换用新变量替换表达式a+b 中变量b 。
3.符号微积分(1) 符号极限计算表达式 的极限。
(2)符号微分计算表达式f=sinx 的微分。
(3)符号积分。
例:简化32381261+++=xx x f 22x y y x f +=xtgx x lim 0→()⎰+dzz x31计算表达式 的积分。
(4)符号求和计算表达式 4.符号方程的求解求解代数方程组 四 实验要求:1.按照要求预习实验;2.在MATLAB 中运行实验程序验证仿真结果;3. 按照要求完成实验报告。
.10005∑k⎪⎩⎪⎨⎧=--=-+=+-043035218472z y x z y x z y x。
MATLAB符号计算

例2: :
2、常微分方程 、 matlab解常微分方程式的函数为: 解常微分方程式的函数为: 解常微分方程式的函数为 dsolve(‘equ’,’condition’); 其中, 代表常微分方程式, 为初始条件, 其中,equ代表常微分方程式,condition为初始条件, 代表常微分方程式 为初始条件 如果初始条件没有给出,则给出通解形式。 如果初始条件没有给出,则给出通解形式。 equ中 用字母D来表示求微分 D的数字表示几 来表示求微分, 注:在equ中,用字母D来表示求微分,D的数字表示几 重微分, 后的变量为因变量 后的变量为因变量。 重微分,D后的变量为因变量。如Dy表示一阶微分项 表示一阶微分项 ,D2y表示二阶微分项 表示二阶微分项 量都是对自变量t求导 求导。 量都是对自变量 求导。 ,并默认所有这些变
3.级数运算 级数运算 可用于级数的函数有: 可用于级数的函数有: (1)symsum(s,v,a,b) 自变量 在[a,b]之间取值时, 自变量v在 之间取值时, 之间取值时 对通项s求和 求和; 对通项 求和; (2)toylor(f,v,n)求f对自变量 的泰勒级数展开 ( 对自变量v的泰勒级数展开 ) 对自变量 至n阶; 阶
例:计算时间函数 f (t ) = e
−t 2
的傅立叶变换
例:计算时间函数 f (t ) = 0.1e − t sin(t −
π
3
) 的拉氏变换。 的拉氏变换。
例:计算时间函数 f (t ) = 0.1e − t sin(t − 结果: 结果:
π
3
) 的拉氏变换。 的拉氏变换。
3.5 方程求解 1、代数方程 、 利用符号表达式解代数方程所需要的函数为solve(f), 利用符号表达式解代数方程所需要的函数为 作用为解符号方程式f; 作用为解符号方程式 例:求一元二次方程
实验三 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]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
f=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/6
• 符号运算
sym(1/2)+(1/3) ans = 5/6 --精确解
• 任意精度算术运算
digits(n) —— 设置可变精度,缺省16位 vpa(x,n) —— 显示可变精度计算 digits(25) vpa(1/2+1/3) ans = .8333333333333333333333333
dy 或 dt
dy dx
y的一阶导数—— Dy
d2y dt 2
或
d2y dx2
y的二阶导数—— D2y
dny dt n
或
d n y y的 n 阶导数—— Dny dxn
[y1,y2…]=dsolve(x1,x2,…xn) —— 返回 微分方程的解
一阶微分方程 dsolve('Dx=y','Dy=x','x(0)=0','y(0)=1')
第三章 MATLAB语言的符号运算
—— matlab 不仅具有数值运算 功能,还开发了在matlab环境下 实现符号计算的工具包Symbolic Math Toolbox
符号运算的功能
• 符号表达式、符号矩阵的创建 • 符号线性代数 • 因式分解、展开和简化 • 符号代数方程求解 • 符号微积分 • 符号微分方程
ans = x(t) = sin(t), y(t) = cos(t)
二阶微分方程 dsolve('D2y=-a^2*y','y(0)=1','Dy(pi/a)=0')
ans = cos(a*x)
例.
d2y dx2
2 dy 2 y 0
dx
y(0) 1,dy(0) 0 求该方程的解 dx
y=dsolve('D2y+2*Dy+2*y=0','y(0)=1','Dy(0)=0')
R=
(-1 + sqrt(5))/2
vpa(R,4) ans =
.6180 syms w t
syms s G=(s+1)/((s+2)(s+3)) G= (s+1)/(s+2)/(s+3)
F = sin(w*t);
E = sym(‘Dy + 5 * y = t’); A = sym(‘[a11 a12;a21 a22]’);
一、符号运算的基本操作
1. 什么是符号运算 • 与数值运算的区别
※ 数值运算中必须先对变量赋值, 然后才能参与运算。 ※ 符号运算无须事先对独立变量 赋值,运算结果以标准的符号形式 表达。
• 特点:
运算对象可以是没赋值的符号变量
可以获得任意精度的解
2. 符号变量与符号表达式
f = 'sin(x)+5x'
例题:计算无穷级数求和
funtool
2. 任意精度的数学运算
在symbolic中有三种不同的算术运算:
1. 数值类型 matlab的浮点算术运算 2. 有理数类型 maple的精确符号运算 3. vpa类型 maple的任意精度算术
运算
• 浮点算术运算
1/2+1/3 --(定义输出格式format long) ans = 0.83333333333333
ans =
exp(-x)*cos(x)+exp(-x)*sin(x) ezplot(y) —— 方程解y(t)的时间曲线图
exp(-t) sin(t)+exp(-t) cos(t)
250 200 150 100
50 0
-6
-4
-2
0
2
4
t
对于教材中提到的状态方程求解、差
vpa(5/6,40) ans = .8333333333333333333333333333333333333333
a=sym('[1/4,exp(1);log(3),3/7]') a= [ 1/4,exp(1)] [log(3), 3/7] vpa(a,10) ans = [.2500000000, 2.718281828] [1.098612289, .4285714286]
※ 需用' '标识
例如:A = sym('[a , 2*b ; 3*a , 0]') A= [ a, 2*b] [3*a, 0]
这就完成了一个符号矩阵的创建。 注意:符号矩阵的每一行的两端都有方
括号,这是与 matlab数值矩阵的 一个重要区别。
例题:符号变量定义
R = SYM(‘(-1 + sqrt(5))/2’)
f —— 符号变量名
sin(x)+5x—— 符号表达式
'
'—— 符号标识
❖符号表达式一定要用' ' 单引
号括起来matlab才能识别。
' ' 的内容可以是符号表达式,也可 以是符号方程。
例:
f1='ax^2+bx+c' —— 二次三项式 f2= 'ax^2+bx+c=0' —— 方程 f3='Dy+y^2=1' ——微分方程
3. 符号微积分与积分变换
• diff(f) — 对缺省变量求微分 • diff(f,v) — 对指定变量v求微分 • diff(f,v,n) —对指定变量v求n阶微分 • int(f) — 对f表达式的缺省变量求积分 • int(f,v) — 对f表达式的v变量求积分 • int(f,v,a,b) — 对f表达式的v变量在(a,b)
❖ 用A1=subs(A, ‘new’, ‘old’)来修改
例如:A =[ a, 2*b] [3*a, 0]
A1=subs(A, 'c', 'b') A1 =[ a, 2*c]
[3*a, 0]
数值矩阵转换为符号矩阵
函数调用格式:sym(A) A=[1/3,2.5;1/0.7,2/5] A=
0.3333 2.5000 1.4286 0.4000 sym(A) ans = [ 1/3, 5/2] [10/7, 2/5]
例.计算二重不定积分 xexydxdy
F=int(int('x*exp(-x*y)','x'),'y') F=
1/y*exp(-x*y)
例.计算 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(f) >> F=ztrans(x*exp(-x*10); F= z*exp(-10)/(z-exp(-10))^2
※符号表达式或符号方程可以赋给符 号变量,以后调用方便;也可以不赋 给符号变量直接参与运算
3.符号矩阵的创建
数值矩阵A=[1,2;3,4] A=[a,b;c,d] —— 不识别
用matlab函数sym创建矩阵(symbolic
的缩写)
命令格式:A=sym('[
]')
※ 符号矩阵内容同数值矩阵
※ 需用sym指令定义
用字符串直接创建矩阵
❖ 模仿matlab数值矩阵的创建方法 ❖ 需保证同一列中各元素 Nhomakorabea符串有相
同的长度。
例:A =['[ a,2*b]'; '[3*a, 0]'] A= [ a, 2*b] [3*a, 0]
例题:f = sin(w*x + pi/3), 求该函数对时间t的导 数,并在x=0邻域展开泰勒级数的前4项。
例题:计算时间函数f(t)= exp(-t^2)傅 立叶变换。
例. 计算指数函数eAt。 用拉氏反变换法计算eAt的公式为:
eAt = L-1[(SI-A)-1]
系统矩阵A= 0 1
2 3
结果:
eAt =
e2t 2et 2e2t 2et
e2t et 2e2t et
>> a=[0 1;-2 -3]; >> syms s >> b=(s*eye(2)-a) b= [ s, -1] [ 2, s+3] >> B=inv(b) [ (s+3)/(s^2+3*s+2), [ -2/(s^2+3*s+2),
命令格式:
solve(f) —— 求一个方程的解
solve(f1,f2, …fn) —— 求n个方程的解
例1. f = ax2+bx+c 求解
f='a*x^2+b*x+c';
• solve(f) —— 对缺省变量x求解