《MATLAB课件-符号运算》由会员分享,可在线阅读,更多相关《MATLAB课件-符号运算(149页珍藏版)》请在金锄头文库上搜索。
1、课程主要内容 第1章 MATLAB简介 第2章 数值运算 第3章 单元数组和结构 第4章 字符串 第5章 符号运算 第6章 MATLAB绘图基础 第7章 程序设计 第8章 计算方法的MATLAB实现 第9章 优化设计 第10章 SIMULINK仿真初探 Date1 第5章 符号运算 数学问题的求解通常有两条途径可循 一是求它 的解析解 二是求它的数值解 求解析解的主要 工具是符号运算 所谓符号运算是指运算的主要 对象是符号 文字 或说是变量 Date2 5 1 符号表达式的生成 符号表达式是代表数字 函数 算子和变量的 MATLAB字符串 或字符串数组 不要求变量有 预先确定的值 符号方程式是
2、含有等号的符号表 达式 符号算数是使用已知的规则和给定符号恒 等式求解这些符号方程的实践 它与代数和微积 分所学到的求解方法完全一样 符号矩阵式数组 其元素是符号表达式 符号表达式的生成可采用sym和syms函数生成 Date3 5 1 1 符号常量 符号常量是一种符号对象 可用sym函数生成 可用class函数来检测其数据类型 Date4 程序实例 a sqrt 2 a 1 4142 b sym sqrt 2 b sqrt 2 c sqrt sym 2 c 2 1 2 Date5 程序实例 a sqrt 2 a 1 4142 b sym sqrt 2 b sqrt 2 class a ans
3、 double class b ans sym Date6 5 1 2 符号变量及符号表达式 使用sym函数也可定义符号表达式 一是将每一 个变量定义为符号变量 二是将整个表达式集体 定义 也可以直接用单引号生成 函数syms功能比sym更为强大 它可以一次创建 任意多个符号变量 使用格式如下 syms var1 var2 Date7 程序实例 a sym a b sym b c sym c x sym x f a x 2 b x c f a x 2 b x c Date8 程序实例 f sym a x 2 b x c f a x 2 b x c g sym a sin b x c g a s
4、in b x c Date9 程序实例 syms a b c x f a x 2 b x c f a x 2 b x c g a sin b x c g a sin c b x Date10 5 1 3 符号矩阵 元素是符号对象的矩阵叫做符号矩阵 在 MATLAB2009语言中 符号矩阵的生成与数值矩 阵的相关操作很相似 使用sym函数直接生成符号矩阵 各符号表达式 长度相同 Date11 程序实例 m1 sym asd we re as m1 asd we re as m2 sym 5 6 1 2 m2 5 6 1 2 Date12 5 2 符号变量的基本操作 符号变量的基本操作主要包括符号
5、变量的查找 符号变量的精度设置 数值型变量与符号型变量 的转换 Date13 5 2 1 符号变量查询 函数findsym用于找出一个表达式中存在哪些符号 变量 findsym s 列出全部符号变量 findsym s n 列出靠 x最近的n个符号变量 Date14 程序实例 f sym a x 2 b x c m1 findsym f m1 a b c x m2 findsym f 2 m2 x c m3 findsym f 3 m3 x c b Date15 5 2 2 符号变量精度设置 单独使用digits或d digits在命令窗口显示当前设定 的数值精度 digits d 命令设置数
6、值的精度为d位 r vpa s 命令将显示符号表达式s在当前精度下的 值 r vpa s d 命令将显示符号表达式s在精度d下的值 显示的数字个数为d Date16 程序实例 digits Digits 32 digits 100 digits Digits 100 digits 32 digits Digits 32 Date17 程序实例 r1 vpa pi r1 3 1415926535897932384626433832795 r2 vpa pi 4 r2 3 142 r2 vpa pi 5 r2 3 1416 Date18 5 2 3 数值型变量与符号型变量的转换 将数值形式转换为符
7、号形式 对于任意数值型变量t 使用sym函数可以将其转 换为4种形式的符号变量 分别为 有理数形式 sym t 或sym t r 浮点数形式sym t f 指数形 式 sym t e 和数值精度形式 sym t d 也可以采用这种方法将数值型矩阵转换为符号型 矩阵 但此时只能把它转换成有理数形式 另外 函数poly2sym实现将某一向量转化为它对 应的多项式 Date19 程序实例 t 0 1 sym t r ans 1 10 sym t f ans 1 999999999999a 2 4 sym t e ans 1 10 eps 40 sym t d ans 1000000000000000
8、0555111512312578 Date20 程序实例 a 1 2 3 4 5 f poly2sym a f x 4 2 x 3 3 x 2 4 x 5 Date21 将符号形式转换为数值形式 将符号形式转化为数值形式主要用函数eval来实现 另外 使用sym2poly函数实现将多项式转化为 它对应的系数向量 Date22 程序实例 a sym sqrt 5 a sqrt 5 b eval a b 2 2361 Date23 程序实例 syms x f x 3 4 x 5 c sym2poly f c 1 0 4 5 Date24 5 3 符号表达式的操作 用户可以对符号表达式进行各种操作
9、包括四则 运算 合并同类项 多项式分解和简化等 Date25 5 3 1 符号表达式的四则运算 符号表达式也与通常的算术式一样 可以进行四 则运算 在符号对象的比较中只有相等与否 没有大小关 系比较 三角函数的符号运算与数值运算法则基本相同 符号运算的指数函数运算与前面数值运算法则相 同 对数运算对于符号运算来说只能使用log函数 因此log2 sym a log a log 2 符号运算的复数运算与数值复数运算相同 Date26 程序实例 syms x y a b f1 sin x cos y f2 a b f f1 f2 f a b cos y sin x Date27 5 3 2 符号表
10、达式合并同类项 collect s v 命令将符号矩阵s中所有同类项合并 并以v为符号变量输出 collect s 命令使用findsym函数规定的默认变量代 替上式中的v Date28 程序实例 syms x y collect x 2 y y x x 2 2 x x ans y 1 x 2 y 2 x collect x 2 y y x x 2 2 x y ans x 2 x y x 2 2 x collect x 2 y y x x 2 2 x ans y 1 x 2 y 2 x Date29 5 3 3 符号多项式的因式分解 使用expand函数将表达式中的括号进行展开 使 用fact
11、or函数将表达式进行因式分解 使用horner 函数将一般的表达式变换为嵌套的形式 默认x为 第一变量 Date30 程序实例 syms x y f x 1 x 2 x 3 y 4 g expand f g x 3 y 4 x 3 6 x 2 y 24 x 2 11 x y 44 x 6 y 24 Date31 程序实例 syms x y g x 3 y 4 x 3 6 x 2 y 24 x 2 11 x y 44 x 6 y 24 f factor g f x 1 x 2 x 3 y 4 Date32 程序实例 syms x y g x 3 y 4 x 3 6 x 2 y 24 x 2 11
12、 x y 44 x 6 y 24 f horner g f 6 y 24 11 y 44 6 y 24 y 4 x x x Date33 程序实例 syms x y f x 2 2 x y 2 3 y x horner f ans y 2 2 3 y x x Date34 5 3 4 符号表达式的简化 使用simplify函数和simple函数进行符号表达式的 简化 simplify s 命令将符号表达式s中的每一个元素都 进行简化 该函数的缺点是即使多次运用此函数 也不一定得到最简形式 simple s 命令使用多种代数简化方法对符号表达 式s进行简化 并显示其中最简单的结果 r how s
13、imple命令在返回最简单的结果的同时 返回一个描述得到该最简结果所用简化方法的字 符串how Date35 程序实例 syms x f x 2 2 3 x 3 simplify f ans x 2 x 5 Date36 程序实例 syms x f x 2 2 3 x 3 r how simple f r x 2 x 5 how simplify Date37 程序实例 syms x f x 3 3 3 x x 1 x 2 2 2 x 2 simplify f ans x 5 7 x 4 16 x 3 25 x 2 109 11 x x 2 2 Date38 程序实例 syms x f x 3
14、 3 3 x x 1 x 2 2 2 x 2 simple f simplify x 5 7 x 4 16 x 3 25 x 2 109 11 x x 2 2 radsimp x 5 7 x 4 16 x 3 25 x 2 109 11 x x 2 2 combine trig x 5 7 x 4 16 x 3 25 x 2 109 11 x x 2 4 x 4 Date39 factor x 5 7 x 4 16 x 3 25 x 2 109 11 x x 2 2 expand x 3 11 x 2 24 x 27 1 x 2 2 x 1 x 2 2 combine x 3 3 3 x x
15、1 x 2 2 2 x 2 convert exp x 3 3 3 x x 1 x 2 2 2 x 2 convert sincos x 3 3 3 x x 1 x 2 2 2 x 2 convert tan x 3 3 3 x x 1 x 2 2 2 x 2 Date40 collect x x 3 3 3 x x 1 x 2 2 2 x 2 mwcos2sin x 3 3 3 x x 1 x 2 2 2 x 2 ans x 3 3 3 x x 1 x 2 2 2 x 2 syms x f x 3 3 3 x x 1 x 2 2 2 x 2 r how simple f r x 3 3 3
16、x x 1 x 2 2 2 x 2 how Date41 5 3 5 书写形式的转化 pretty函数的使用 pretty s 将符号表达式用书写方式表示出来 默认 宽度为79 pretty s n 将符号表达式用书写方式表示出来 宽 度指定为n Date42 程序实例 p sym x 2 1 x 2 2 x 5 3 x 2 p x 2 1 x 2 2 x 5 3 x 2 pretty p 2 x 1 2 x 5 x 2 3 x 2 Date43 5 3 6 subs函数用于替换求值 subs s 命令将符号表达式s中的所有符号变量用调 用函数中的值或matlab工作区间的值替代 subs s new 命令将符号表达式s中的自由符号变量 用数值型变量或表达式new替换 subs s old new 命令将符号表达式s中的符号变量 old用数值型变量或表达式new替换 如没指定被替换的变量 则默认选择与x最接近的 字母 Date44 程序实例 syms x y f x 2 y 5 x sqrt y subs f ans x 2 y 5 x y 1 2 subs f 2 ans 4 y 1