当前位置:文档之家› 第四章 符号数学基础

第四章 符号数学基础


Matlab程序设计 Matlab程序设计
(二)置换操作
子表达式置换操作 子表达式置换操作
符号计算结果显得烦冗的一个重要原因是: 符号计算结果显得烦冗的一个重要原因是:有些子表达式会多 次出现在不同地方。 次出现在不同地方。 – 为了使表达式简洁易读,MATLAB提供了如下指令: 为了使表达式简洁易读, 提供了如下指令: 提供了如下指令 [RS,ssub]=subexpr(S,ssub)
简短形式 – 注:EXPR可以是符号表达式或矩阵。在这种情况下, EXPR可以是符号表达式或矩阵 在这种情况下, 可以是符号表达式或矩阵。
这些指令将对该矩阵的元素逐个进行操作。 这些指令将对该矩阵的元素逐个进行操作。
例:简化 f =
3
1 6 12 + 2+ +8。 3 广西大学电气工程学院 x x x
广西大学电气工程学院
Matlab程序设计 Matlab程序设计
(四)符号表达式中默认符号变量 自由变量) (自由变量)的确定
为符号操作和计算的需要, 提供一个findsym指 为符号操作和计算的需要,MATLAB提供一个 提供一个 指 令,可实现对表达式中所有自由符号变量或指定数目的独 立自变量的自动认定。 立自变量的自动认定。 findsym(EXPR) 确认表达式EXPR中所有“自由”符号“变量” 中所有“ 确认表达式 中所有 自由”符号“变量” findsym(EXPR,N) 从表达式 从表达式EXPR中确认出靠 最近的 个独立自变量。 中确认出靠x最近的 个独立自变量。 中确认出靠 最近的N个独立自变量 注:

运用符号变量ssub置换子表达式,重写 为RS。 置换子表达式,重写S为 。 运用符号变量 置换子表达式
例:把复杂表达式中所含的多个相同子表达式用一个符号代替, 把复杂表达式中所含的多个相同子表达式用一个符号代替, 使表达简洁。 使表达简洁。 置换原则:只有比较长的子表达式才被置换; 置换原则:只有比较长的子表达式才被置换;至于比较短的子表 达式,即便多次重复出现,也不被置换。 达式,即便多次重复出现,也不被置换。
指数、 指数、对数函数

在数值、符号计算中,函数 在数值、符号计算中,函数sqrt、exp、expm的使用方法完全 、 、 的使用方法完全 相同。至于对数函数,符号计算中只有自然对数log(在一般教 相同。至于对数函数,符号计算中只有自然对数 ( 科书中用ln),而没有数值计算中的log2,log10。 科书中用 ),而没有数值计算中的 。 ),而没有数值计算中的 涉及复数的共轭conj、求实部real、求虚部 、求实部 和求模abs函 涉及复数的共轭 、求虚部imag和求模 和求模 函 在符号、数值计算中的使用方法相同。 注意, 数,在符号、数值计算中的使用方法相同。但注意,在符号计 算中, 没有提供求相角的指令。 算中,MATLAB没有提供求相角的指令。 没有提供求相角的指令 在符号计算中, 提供的常用矩阵代数指令有diag, 在符号计算中,MATLAB提供的常用矩阵代数指令有 提供的常用矩阵代数指令有 triu,tril,inv,det,rank,rref,null,colspace,poly,expm,eig,svd。 。 它们的用法几乎与数值计算中的情况完全一样,只有svd稍微 它们的用法几乎与数值计算中的情况完全一样,只有 稍微 不同。 不同。
把字符argv1,argv2,argvk定义为基本符号对象 把字符argv1,argv2,argvk定义为基本符号对象 argv1,argv2,argvk
syms argv1 argv2 argvk
上述格式的简洁形式
广西大学电气工程学院
Matlab程序设计 Matlab程序设计

例1:符号常数形成中的差异 : =[1 ,pi/7,sqrt(5),pi+sqrt(5 a1=[1/3,pi/7,sqrt(5),pi+sqrt(5)] sym([ ,pi/7,sqrt(5),pi+sqrt(5)]) a2=sym([1/3,pi/7,sqrt(5),pi+sqrt(5)]) =sym(' ,pi/7,sqrt(5),pi+sqrt(5)]' a3=sym('[1/3,pi/7,sqrt(5),pi+sqrt(5)]') 例2:把字符表达式转换为符号变量 y=sym('2 y=sym('2*sin(x)*cos(x)') y=simple(y)
广西大学电气工程学院
复数函数

矩阵代数指令

Matlab程序设计 Matlab程序设计
(三)识别对象类别的指令
数值计算对象、符号计算对象、 数值计算对象、符号计算对象、字符串是 MATLAB中最常遇到的数据对象。它们遵循着 中最常遇到的数据对象。 中最常遇到的数据对象 各自不同的运算法则, 各自不同的运算法则,但有时在外形上却十分 相似。为管理和使用方便, 相似。为管理和使用方便,MATLAB提供了一 提供了一 些识别不同数据对象的指令, 些识别不同数据对象的指令,常用的有 class,isa,whos等。 等 数据对象及其识别指令的使用。 例:数据对象及其识别指令的使用。
a11 a12 例3:求矩阵A = 的行列式值、逆和特征根。 a 21 a 22 广西大学电气工程学院
Matlab程序设计 Matlab程序设计
(二)符号计算中的算符和基本函数
基本运算符
– – –
算符“ 、 算符“+”、“-”、“ * ”、“ \ ”、“ / ”、“ ^ ”分 、 、 、 分 别实现矩阵的加、 左除、右除、求幂运算。 别实现矩阵的加、减、乘、左除、右除、求幂运算。 分别实现“ 算符 “.* ”、“.\ ”、“./ ”、“.^ ”分别实现“元素对 、 、 、 分别实现 元素”的数组乘、左除、右除、求幂运算。 元素”的数组乘、左除、右除、求幂运算。 算符“ 分别实现矩阵的共轭转置、 算符“ ’ ”、“ .’ ” 分别实现矩阵的共轭转置、非 共轭转置。 共轭转置。 算符“ 算符“ == ”、“ ~= ” 分别对算符两边的对象进行 、 相等” 不等”的比较。当事实为“ “相等”、“不等”的比较。当事实为“真”时,比 较结果用1表示 当事实为“ 表示; 较结果用 表示;当事实为“假”时,比较结果则用 广西大学电气工程学院 0表示。 表示。 表示
关系运算符

Matlab程序设计 Matlab程序设计
三角函数、 三角函数、双曲函数及它们的反函数

仅能用于数值计算外, )、双 除atan2仅能用于数值计算外,其余的三角函数(如sin)、双 仅能用于数值计算外 其余的三角函数( )、 曲函数( ),无论在 曲函数(如cosh)及它们的反函数(如asin,acosh),无论在 )及它们的反函数( ), 数值计算还是符号计算中,它们的使用方法相同。 数值计算还是符号计算中,它们的使用方法相同。
通用置换指令
RES=subs(ES,old,new) RES=subs(ES,old,new) subs RES=subs(ES, RES=subs(ES, new) subs
用new置换ES中的old后产生RES new置换ES中的old后产生RES 置换ES中的old后产生 用new置换ES中的自由变量后产生RES new置换ES中的自由变量后产生RES 置换ES中的自由变量后产生 广西大学电气工程学院


EXPR可以是符号矩阵。此时,该指令对自由变量的确认是对整 可以是符号矩阵。此时, 可以是符号矩阵 个矩阵进行的,而不是对矩阵元素逐个进行的。 个矩阵进行的,而不是对矩阵元素逐个进行的。 按照自然科学中的习惯, 表达式中N 按照自然科学中的习惯,findsym(EXPR,N)把EXPR表达式中 把 表达式中 个最靠近x的自由符号变量确认为 独立自由变量” 的自由符号变量确认为“ 个最靠近 的自由符号变量确认为“独立自由变量”。注意字母的 大小写。在此认为大写字母离小写x的距离总大于所有小写字母离 大小写。在此认为大写字母离小写 的距离总大于所有小写字母离 x的距离。 的距离。 的距离 广西大学电气工程学院
广西大学电气工程学院
Matlab程序设计 Matlab程序设计
定义基本符号对象的指令
定义基本符号对象的指令有两个: 定义基本符号对象的指令有两个:sym,syms. 它们的常用使用格式如下: 它们的常用使用格式如下:
f=sym(arg) f=sym(argn,flagn)
把数字、字符串或表达式arg转换为符号对象f 把数字、字符串或表达式arg转换为符号对象f arg转换为符号对象 把数值或数值表达式argn转换为flagn格式的符号对象 把数值或数值表达式argn转换为flagn格式的符号对象 argn转换为flagn
Matlab程序设计 Matlab程序设计
二、符号对象的操作和转换
(一)符号表达式的操作
– 符号运算中有许多操作指令,如collect(合并同类 符号运算中有许多操作指令, collect(
项)、expand(对指定项展开)、factor(进行因式 )、expand(对指定项展开)、factor( expand )、factor 或因子分解)、horner(转换成嵌套形式)、 )、horner )、numden 或因子分解)、horner(转换成嵌套形式)、numden 提取公因式)、simplify(恒等式简化)、 )、simplify )、pretty (提取公因式)、simplify(恒等式简化)、pretty 习惯方式显示) (习惯方式显示)等,其中最常用的是 运用包括simplify在内的各种指令把EXPR simplify在内的各种指令把EXPR转换成最 simple(EXPR) 运用包括simplify在内的各种指令把EXPR转换成最
Байду номын сангаас
相关主题