第三讲 MATLAB的符号运算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

符号一些特殊运算函数: 符号一些特殊运算函数: symsize —— 求符号矩阵维数 charploy —— 特征多项式 determ —— 符号矩阵行列式的值 eigensys —— 特征值和特征向量 inverse —— 逆矩阵 transpose —— 矩阵的转置 jordan —— 约当标准型 simple —— 符号矩阵简化
建立符号表达式
含有符号对象的表达式称为符号表达式. 含有符号对象的表达式称为符号表达式. 建立符号表达式有以下3种方法: 建立符号表达式有以下 种方法: 种方法 利用单引号来生成符号表达式. 利用单引号来生成符号表达式. 函数建立符号表达式. 用sym函数建立符号表达式. 函数建立符号表达式 使用已经定义的符号变量组成符号表达式. 使用已经定义的符号变量组成符号表达式.
符号矩阵运算的函数: 符号矩阵运算的函数:
symadd(a,b) —— 符号矩阵的加 symsub(a,b) —— 符号矩阵的减 symmul(a,b) —— 符号矩阵的乘 symdiv(a,b) —— 符号矩阵的除 sympow(a,b) —— 符号矩阵的幂运算 symop(a,b) —— 符号矩阵的综合运算
ωτ
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. 符号矩阵的创建
建立符号变量
MATLAB提供了两个建立符号对象的函数:sym和 MATLAB提供了两个建立符号对象的函数:sym和 提供了两个建立符号对象的函数 syms,两个函数的用法不同. syms,两个函数的用法不同. sym函数 sym函数 sym函数用来建立单个符号量,一般调用格式为: sym函数用来建立单个符号量,一般调用格式 函数用来建立单个符号量 调用格式为 符号量名=sym('符号字符串' 符号量名=sym('符号字符串') 该函数可以建立一个符号量,符号字符串可以是常 该函数可以建立一个符号量, 量,变量,函数或表达式. 变量,函数或表达式.
例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-
一,符号运算的基本操作
1. 什么是对变量赋值, 然后才能 数值运算中必须先对变量赋值, 参与运算. 参与运算. ※ 符号运算无须事先对独立变量赋值,运算 符号运算无须事先对独立变量赋值, 结果以标准的符号形式表达. 结果以标准的符号形式表达.
2. 符号变量与符号表达式
例, >> 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)
求解. 例1, f = ax2+bx+c 求解. ,
例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)
数值矩阵A=[1,2;3,4] 数值矩阵A=[1,2;3,4] A=[a,b;c,d] —— 不识别 1) 用matlab函数sym创建矩阵命令格式: matlab函数 函数sym创建矩阵命令格式 创建矩阵命令格式: A=sym('[ ※ 需用sym指令定义 需用sym指令定义 ※ 需用' 需用' ' 标识 ]') ※ 符号矩阵内容同数值矩阵
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)
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等. 而符号运算就不同了, 而符号运算就不同了,所有涉及符号运算 的操作都可以用专用函数来进行. 的操作都可以用专用函数来进行.这些函数作用于 专用函数来进行 符号矩阵时,是分别作用于矩阵的每一个元素. 符号矩阵时,是分别作用于矩阵的每一个元素.
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)
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)]
[ -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
Note:采用syms a11 a12 a21 a21定义符号变量 :采用 定义符号变量 变量名之间只能用"空格符"隔离, 时,变量名之间只能用"空格符"隔离,不能采用 逗号或分号. 逗号或分号.
例3: 验证积分: ∫ : 验证积分:
τ /2
τ /2
Ae jωτ dτ = A τ
sin
ωτ
2 .
第三讲 MATLAB的 MATLAB的 符号运算
—— matlab 不仅具有数值运算功 能,还开发了在matlab环境下实 能,还开发了在matlab环境下实 现符号计算的工具包Symbolic 现符号计算的工具包Symbolic Math Toolbox
符号运算的功能
符号表达式, 符号表达式,符号矩阵的创建 符号线性代数 因式分解,展开和简化 因式分解, 符号代数方程求解 符号微积分 符号微分方程
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]
int('被积表达式','积分变量','积分上限', int( 被积表达式' 积分变量' 积分上限' '积分下限')—— 定积分 积分下限' ——缺省时为不定积分 缺省时为不定积分 积分变换: 积分变换: fourier(f) —— 付氏变换 ifourier(f) —— 反付氏变换 ztrans(f) —— Z变换 变换 iztrans(f) —— 反Z变换 变换 laplace(f) —— 拉氏变换 ilaplace(f) —— 反拉氏变换
例: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]
%把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
syms 函数 MATLAB提供了另一个函数 提供了另一个函数syms,一次可以定义 提供了另一个函数 , 多个符号变量. 多个符号变量. 符号变量 syms函数的一般调用格式为: 函数的一般调用格式为 函数的一般调用格式 syms 符号变量名 符号变量名 … 符号变量名 符号变量名1 符号变量名2 符号变量名n Note:用这种格式定义符号变量时不要在变量名 : 上加字符串分界符('), 上加字符串分界符 ,变量间用空格而不要用逗 号分隔. 号分隔.
[ b/((s+a)^2+b^2),
3. 符号代数方程求解
Matlab符号运算能够解一般的线性方程,非线 符号运算能够解一般的线性方程, 符号运算能够解一般的线性方程 性方程及一般的代数方程 代数方程组. 代数方程, 性方程及一般的代数方程,代数方程组. 命令格式: 命令格式: solve(f) —— 求一个方程的解 solve(f1,f2, …fn) —— 求n个方程的解 个方程的解
相关文档
最新文档