第三讲 MATLAB的符号运算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
syms 函数 MATLAB提供了另一个函数 提供了另一个函数syms,一次可以定义 提供了另一个函数 , 多个符号变量. 多个符号变量. 符号变量 syms函数的一般调用格式为: 函数的一般调用格式为 函数的一般调用格式 syms 符号变量名 符号变量名 … 符号变量名 符号变量名1 符号变量名2 符号变量名n Note:用这种格式定义符号变量时不要在变量名 : 上加字符串分界符('), 上加字符串分界符 ,变量间用空格而不要用逗 号分隔. 号分隔.
ωτ
2
>> syms A t tao w; f=int(A*exp(-i*w*t),t,-tao/2,tao/2); f= i*A*(exp(-1/2*i*tao*w)-exp(1/2*i*tao*w))/w >> F=simple(f) F= 2*A*sin(1/2*tao*w)/w
3. 符号矩阵的创建
数值矩阵A=[1,2;3,4] 数值矩阵A=[1,2;3,4] A=[a,b;c,d] —— 不识别 1) 用matlab函数sym创建矩阵命令格式: matlab函数 函数sym创建矩阵命令格式 创建矩阵命令格式: A=sym('[ ※ 需用sym指令定义 需用sym指令定义 ※ 需用' 需用' ' 标识 ]') ※ 符号矩阵内容同数值矩阵
t3 d 2 a t3 t3 d a d2 a 例: 求 , 2 和 dx t cos x ln x dt t cos x ln x dxdt t cos x ln x
>> syms a t x;f=[a,t^3;t*cos(x),log(x)]; >> df=diff(f) df = [ 0, 0] 1/x] >> dfdxdt=diff(diff(f,x),t) dfdxdt = [ 0, 0] 0]
求解. 例1, f = ax2+bx+c 求解. ,
%把y符号表达式化成最简形式 符号表达式化成最简形式
a11 a12 的行列式值,逆和特征根. 例2: 求矩阵 A = : 的行列式值,逆和特征根. a21 a22
>> syms a11 a12 a21 a22; >> A=[a11,a12;a21,a22] A= [ a11, a12] [ a21, a22] >> DA=det(A),IA=inv(A),EA=eig(A) DA = a11*a22-a12*a21
Note:采用syms a11 a12 a21 a21定义符号变量 :采用 定义符号变量 变量名之间只能用"空格符"隔离, 时,变量名之间只能用"空格符"隔离,不能采用 逗号或分号. 逗号或分号.
Fra Baidu bibliotek
例3: 验证积分: ∫ : 验证积分:
τ /2
τ /2
Ae jωτ dτ = A τ
sin
ωτ
2 .
2. 符号微积分与积分变换
微积分: 微积分: diff(f) —对f表达式的缺省变量求微分 diff(f,v) —对f表达式的指定变量v求微分 表达式的指定变量v diff(f,v,n) —对f表达式的指定变量v求n阶微分 表达式的指定变量v int(f) — 对f表达式的缺省变量求积分 int(f,v) — 对f表达式的v变量求积分 表达式的v int(f,v,a,b) — 对f表达式的v变量在(a,b)区间求定积分 表达式的v变量在(a,b)
例1:>> f= '2*x^2+3*x-5'; g= 'x^2+x-7'; 2*x^2+3*xx^2+x法①: >> h= symadd(f,g) symadd(f,g) % 符号矩阵的加法运算
h= 3*x^2+4*x3*x^2+4*x-12 法②: >> syms x >> f=2*x^2+3*x-5; g= x^2+x-7; f=2*x^2+3*xx^2+x>> h=f+g h = 3*x^2+4*x-12 3*x^2+4*x-
符号矩阵运算的函数: 符号矩阵运算的函数:
symadd(a,b) —— 符号矩阵的加 symsub(a,b) —— 符号矩阵的减 symmul(a,b) —— 符号矩阵的乘 symdiv(a,b) —— 符号矩阵的除 sympow(a,b) —— 符号矩阵的幂运算 symop(a,b) —— 符号矩阵的综合运算
1) 求fourier变换 变换 >> syms t w ;ut=sym('Heaviside(t)'); >> uw=fourier(ut) uw = pi*Dirac(w)-i/w 2) 求fourier反变换验证 反变换验证 >> Ut=ifourier(uw,w,t) Ut = 1/2+1/2*Heaviside(t)-1/2*Heaviside(-t)
符号一些特殊运算函数: 符号一些特殊运算函数: symsize —— 求符号矩阵维数 charploy —— 特征多项式 determ —— 符号矩阵行列式的值 eigensys —— 特征值和特征向量 inverse —— 逆矩阵 transpose —— 矩阵的转置 jordan —— 约当标准型 simple —— 符号矩阵简化
第三讲 MATLAB的 MATLAB的 符号运算
—— matlab 不仅具有数值运算功 能,还开发了在matlab环境下实 能,还开发了在matlab环境下实 现符号计算的工具包Symbolic 现符号计算的工具包Symbolic Math Toolbox
符号运算的功能
符号表达式, 符号表达式,符号矩阵的创建 符号线性代数 因式分解,展开和简化 因式分解, 符号代数方程求解 符号微积分 符号微分方程
int('被积表达式','积分变量','积分上限', int( 被积表达式' 积分变量' 积分上限' '积分下限')—— 定积分 积分下限' ——缺省时为不定积分 缺省时为不定积分 积分变换: 积分变换: fourier(f) —— 付氏变换 ifourier(f) —— 反付氏变换 ztrans(f) —— Z变换 变换 iztrans(f) —— 反Z变换 变换 laplace(f) —— 拉氏变换 ilaplace(f) —— 反拉氏变换
建立符号变量
MATLAB提供了两个建立符号对象的函数:sym和 MATLAB提供了两个建立符号对象的函数:sym和 提供了两个建立符号对象的函数 syms,两个函数的用法不同. syms,两个函数的用法不同. sym函数 sym函数 sym函数用来建立单个符号量,一般调用格式为: sym函数用来建立单个符号量,一般调用格式 函数用来建立单个符号量 调用格式为 符号量名=sym('符号字符串' 符号量名=sym('符号字符串') 该函数可以建立一个符号量,符号字符串可以是常 该函数可以建立一个符号量, 量,变量,函数或表达式. 变量,函数或表达式.
例:A = sym('[a , 2*b ; 3*a , 0]') A= [ a, 2*b] [3*a, 0]
这就完成了一个符号矩阵的创建. 这就完成了一个符号矩阵的创建. Note:符号矩阵的每一行的两端都有方括号,这是 :符号矩阵的每一行的两端都有方括号, 数值矩阵的一个重要区别. 与 matlab数值矩阵的一个重要区别. 数值矩阵的一个重要区别
单位脉冲函数 0时刻起跳的单位 时刻起跳的单位 阶跃函数
δ (τ a) u(τ b) 的Laplace变换 . 例4, 求 -at 2 t te e sin bt
>> syms t s; >> syms a b positive;
%对常数进行限定性设置 对常数进行限定性设置
>> Dt=sym('Dirac(t-a)'); >> Ut=sym('Heaviside(t-b)'); >> Ft=[Dt,Ut;exp(-a*t)*sin(b*t),t^2*exp(-t)]; >> Fs=laplace(Ft,t,s) Fs = [ exp(-a*s), exp(-b*s)/s] 2/(s+1)^3]
IA = [ a22/(a11*a22-a12*a21), -a12/(a11*a22-a12*a21)] [ -a21/(a11*a22-a12*a21), a11/(a11*a22-a12*a21)] EA = [ 1/2*a11+1/2*a22+1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)] [ 1/2*a11+1/2*a22-1/2*(a11^2-2*a11*a22+a22^2+4*a12*a21)^(1/2)]
一,符号运算的基本操作
1. 什么是符号运算
与数值运算的区别 ※ 数值运算中必须先对变量赋值, 然后才能 数值运算中必须先对变量赋值, 参与运算. 参与运算. ※ 符号运算无须事先对独立变量赋值,运算 符号运算无须事先对独立变量赋值, 结果以标准的符号形式表达. 结果以标准的符号形式表达.
2. 符号变量与符号表达式
[ -t*sin(x),
[ -sin(x),
>> dfdt2=diff(f,t,2) dfdt2 = [ 0, 6*t] [ 0, 0]
xexy dxdy 例2,计算二重不定积分 ∫∫
>> F=int(int('x*exp(-x*y)','x'),'y') F= 1/y*exp(-x*y)
1 t ≥ 0 例3, 求 f (t) = 的fourier变换. 0 t < 0
2)用字符串直接创建矩阵 >> A =['[ a,2*b]'; '[3*a, 0]'] A= [ a,2*b] [3*a, 0] >> B=[a,2*b;3*a,0] ??? Undefined function or variable 'a'.
二,符号运算
1. 符号矩阵运算
数值运算中, 数值运算中,所有矩阵运算操作指令都比 较直观,简单.例如:a=b+c; a=a*b ; 较直观,简单.例如: A=2*a^2+3*aA=2*a^2+3*a-5等. 而符号运算就不同了, 而符号运算就不同了,所有涉及符号运算 的操作都可以用专用函数来进行. 的操作都可以用专用函数来进行.这些函数作用于 专用函数来进行 符号矩阵时,是分别作用于矩阵的每一个元素. 符号矩阵时,是分别作用于矩阵的每一个元素.
例2:>> f='cos(x)';g= ' sin(2*x)'; :
法①: >> symop(f,'/',g,'+',f,'*',g) % 符号矩阵的综合运算
ans = cos(x)/sin(2*x)+cos(x)*sin(2*x)
法②: >> syms x
>> f=cos(x);g=sin(2*x); >> f/g+f*g ans = cos(x)/sin(x)+cos(x)*sin(x)
例, >> y=sym('2*sin(x)*cos(x)') y= 2*sin(x)*cos(x) >> z='2*sin(x)*cos(x)' z= 2*sin(x)*cos(x)
例1: 把字符表达式转化为符号变量. : 把字符表达式转化为符号变量. >> y=sym('2*sin(x)*cos(x)') %把字符表达式转化为符号变量 y= 2*sin(x)*cos(x) >> y=simple(y) y= sin(2*x)
[ b/((s+a)^2+b^2),
3. 符号代数方程求解
Matlab符号运算能够解一般的线性方程,非线 符号运算能够解一般的线性方程, 符号运算能够解一般的线性方程 性方程及一般的代数方程 代数方程组. 代数方程, 性方程及一般的代数方程,代数方程组. 命令格式: 命令格式: solve(f) —— 求一个方程的解 solve(f1,f2, …fn) —— 求n个方程的解 个方程的解
建立符号表达式
含有符号对象的表达式称为符号表达式. 含有符号对象的表达式称为符号表达式. 建立符号表达式有以下3种方法: 建立符号表达式有以下 种方法: 种方法 利用单引号来生成符号表达式. 利用单引号来生成符号表达式. 函数建立符号表达式. 用sym函数建立符号表达式. 函数建立符号表达式 使用已经定义的符号变量组成符号表达式. 使用已经定义的符号变量组成符号表达式.