




已阅读5页,还剩97页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章MATLAB的符号计算 与数值运算的区别 数值运算中必须先对变量赋值 然后才能参与运算 符号运算无须事先对独立变量赋值 运算结果以标准的符号形式表达 符号计算的特点 运算以推理解析的方式进行 因此不受计算误差积累问题困扰 符号计算给出完全正确的解析解 当解析解不存在时 会给出数值解 符号计算指令的调用比较简单 与教科书上的公式相近 计算所需时间比数值计算要多很多 常用的符号计算软件有Maple Mathmatica MathCAD等 Matlab的符号运算 Matlab符号运算是通过符号数学工具箱 SymbolicMathToolbox 来实现的 Matlab符号数学工具箱是建立在功能强大的Maple软件的基础上的 当Matlab进行符号运算时 它就请求Maple软件去计算并将结果返回给Matlab Matlab符号运算的功能 Matlab的符号数学工具箱可以完成几乎所有的符号运算功能 主要包括 符号表达式的运算 复合 化简等可变精度运算 即支持以指定的精度返回结果符号矩阵的运算符号微积分符号代数方程求解符号微分方程求解符号作图 一 符号计算基础 在进行符号运算时 必须先定义基本的符号量 可以是符号常量 符号变量 符号对象 含有符号对象的表达式称为符号表达式 符号矩阵 数组 元素为符号表达式的矩阵 数组 一 定义符号变量符号变量要先定义 后引用 可以用sym函数 syms函数将运算量定义为符号型数据 引用符号运算函数时 用户可以指定函数执行过程中的变量参数 若用户没有指定变量参数 则使用findsym函数默认的变量作为函数的变量参数 1 sym函数sym函数的主要功能是创建符号变量 以便进行符号运算 也可以用于创建符号表达式或符号矩阵 用sym函数创建符号变量的一般格式为 x sym x a sym a b sym 1 3 例 作符号计算 a b x y均为符号运算量 在符号运算前 应先将a b x y定义为符号运算量 a sym a 定义 a 为符号运算量 输出变量名为ab sym b x sym x y sym y x y solve a x b y 1 a x b y 5 x y 以a b为符号常数 x y为符号变量即可得到方程组的解 x 3 ay 2 b 例 已知一复数表达式z x i y 试求其共轭复数 并求该表达式与其共轭复数乘积的多项式 为了使乘积表达式x 2 y 2非负 这里 把变量x和y定义为实数 x sym x real y sym y real z x i y 定义复数表达式conj z 求共轭复数expand z conj z 求表达式与其共轭复数乘积的多项式ans x 2 y 2若要去掉 x 的属性 可以使用下面语句x sym x unreal 将 x 创建为纯格式的符号变量 符号常量的精度 a sym 1 3 sqrt 2 b sym 1 3 sqrt 2 转化为最接近的 有理 表示 最精确的符号常数 符号数值精度控制 把符号常数转化为16位相对精度的浮点数值对象 设置数值计算以n位相对精度进行 在digits指定的精度下 给出x的数值型符号结果xs 在n位相对精度下 给出x的数值型符号结果xs double x digits n xs vpa x n xs vpa x 数值型符号结果 数值 符号常数 vpa sym double vpa double 2 syms函数syms函数的功能与sym函数类似 syms函数可以在一个语句中同时定义多个符号变量 其一般格式为 symsarg1arg2 argN用于将arg1 arg2 argN等变量创建为符号型变量 各变量间须用空格分开 先使用syms定义符号变量 再按普通书写形式创建符号表达式 symsaxbf a x b 3 创建符号表达式 用sym命令创建符号表达式 f sym a x b 4 创建符号矩阵 数组 将数值矩阵转化成符号矩阵 B 2 3 sqrt 2 5 2 log 3 C sym B A sym 1 x sin x 5 exp x 使用sym函数直接生成 先使用syms定义符号变量 再按普通书写形式创建符号矩阵 数组 symsabxyC a b x y 5 生成符号函数将表达式中的自变量定义为符号变量后 赋值给符号函数名 即可生成符号函数 例如有一数学表达式 其用符号表达式生成符号函数fxy的过程为 symsabcxy 定义符号运算量fxy a x 2 b y 2 c 2 生成符号函数生成符号函数fxy后 即可用于微积分等符号计算 例 定义一个符号函数fxy a x2 b y2 c2 分别求该函数对x y的导数和对x的积分 symsabcxy 定义符号变量fxy a x 2 b y 2 c 2 生成符号函数diff fxy x 符号函数fxy对x求导数ans 2 a x c 2diff fxy y 符号函数fxy对y求导数ans 2 b y c 2 符号函数fxy对x求积分int fxy x ans 1 c 2 1 3 a x 3 b y 2 x Matlab符号运算采用的运算符 在名称和使用上 都与数值计算中的运算符完全相同 6 符号计算的基本运算 矩阵运算 数组运算 矩阵转置 X sym x11 x12 x21 x22 x31 x32 Y sym y11 y12 y13 y21 y22 y23 Z1 X Y Z2 X Y 7 符号计算中的函数 Matlab符号运算采用的函数 在名称和使用上 与数值计算中的函数基本相同 三角函数 双曲函数及它们的反函数 无论在数值计算还是在符号计算中 使用方法相同 但是atan2函数只能用于数值计算 指数 对数函数 符号计算中log2 log10都利用log计算复数函数 符号计算中 没有angle函数 求相角 矩阵代数指令 与数值计算一样 symsab s ab ba det s inv s sin a b expand sin a b 二 符号计算中的常用函数 1 findsym2 subs3 subexpr4 符号表达式操作 1 findsym默认符号变量 在数学表达式中 一般习惯于使用排在字母表中前面的字母作为变量的系数 而用排在后面的字母表示变量 例如 f ax2 bx c表达式中的a b c通常被认为是常数 用作变量的系数 而将x看作自变量 例如 数学表达式f xng sin at b 根据数学式中表示自变量的习惯 默认a b c为符号常数 x为符号变量 若在MATLAB中表示上述表达式 首先用syms函数定义a b n t x为符号对象 在进行导数运算时 由于没有指定符号变量 则系统采用数学习惯来确定表达式中的自变量 默认a b c为符号常数 x t为符号变量 即 对函数f求导为 df dx对函数g求导为 dg dt 为了了解函数引用过程中使用的符号变量个数及变量名 可以用findsym函数查询默认的变量 该函数的引用格式为 findsym f n 说明 f为用户定义的符号函数 n为正整数 表示查询变量的个数 n i 表示查询i个系统默认变量 n值省略时表示查询符号函数中全部系统默认变量 例 查询符号函数f xng sin at b 中的系统默认变量 symsabntx 定义符号变量f x n 给定符号函数g sin a t b findsym f 1 在f函数中查询1个系统默认变量ans x表示f函数中查询的1个系统默认变量为x f sym 2 w 3 y z 2 5 a findsym f findsym f 3 findsym f 1 findsym举例 2 subs 用a替换字符函数f中的符号变量xa可以是数值量 表达式 或符号量 表达式 若x是一个由多个符号变量组成的数组或矩阵 则a应该具有与x相同的形状的数组或矩阵 用给定的数据替换符号表达式中的指定的符号变量 subs f x a f sym x y 2 3 x y 5 x 5 f1 subs f x f2 subs f y 7 f3 subs f x y z 一 符号计算基础 f sym 2 u subs f u 2 f2 subs f u u 2 a 3 subs f2 u a 2 subs f2 u a 2 symsxy f3 subs f u x y subs f3 x y 1 2 ans 4 f2 2 u 2 ans 14 ans 2 a 2 2 f3 2 x 2 y ans 6 f 2 u 例 指出下面各条语句的输出结果 3 subexpr subexpr命令可以把复杂的表达式中所含的多个相同的子表达式用一个符号代替 使其表达更简洁 RS ssub subexpr S ssub S是原表达式 RS是结果表达式ssub是符号变量 注意 被代替的子表达式是matlab自动寻找的 并不肯定会得到简洁的结果 只有比较长的子表达式才会被替代 t solve a x 3 b x 2 c x d 0 r s subexpr t s 4 符号表达式操作 1 factor 2 expand 3 collect 4 simplify 5 simple 6 numden 7 horner 1 Factor factor f symsxfactor x 9 1 ans x 1 x 2 x 1 x 6 x 3 1 a 2010b1 factor a b2 factor sym a 对f进行因式分解 也可用于正整数的分解 2 expand expand f symsx f x 1 6 f1 expand f 多项式展开 三角函数展开 symsxy f sin x y f1 expand f 函数展开 3 collect合并同类项 collect f v 按指定变量v进行合并collect f 按默认变量进行合并 symsxy f x 2 y y x x 2 2 x f1 collect f F2 collect f y f sym x 3 2 x 2 y 4 x y 6 collect f y ans 2 x 2 4 x y x 3 6 4 simplify y simplify f 功能强大 利用各种形式的代数恒等式对符号表达式进行化简 symsx f sin x 2 cos x 2 f1 simplify f symsabc f exp c log sqrt a b f1 simplify f 5 simple y simple f 对f尝试多种不同的算法 包括simplify 进行简化 返回其中最简短的形式 y How simple f y为f的最简短形式 How中记录的为简化过程中使用的方法 symsfai1fai2y simple sin fai1 cos fai2 cos fai1 sin fai2 输出为 y sin fai1 fai2 验证三角等式 函数简化举例 symsx f 1 x 3 6 x 2 12 x 8 1 3 y1 simplify f g1 simple f g2 simple g1 多次使用simple可以达到最简表达 例 简化 6 numden分式通分 N D numden f N为通分后的分子 D为通分后的分母 symsxy f x y y x N D numden f 7 horner 将多项式该写为霍纳形式 一种多项式简化算法的形式 symsx f x 4 2 x 3 4 x 2 x 1 g horner f 霍纳算法 一种多项式简化算法 以英国数学家威廉 乔治 霍纳命名 又称秦九韶算法 是中国南宋时期的数学家秦九韶提出的 结论 对于一个n次多项式 至多做n次乘法和n次加法 该算法看似简单 其最大的意义在于将求n次多项式的值转化为求n个一次多项式的值 在人工计算时 利用秦九韶算法和其中的系数表可以大幅简化运算 对于计算机程序算法而言 加法比乘法的计算效率要高很多 因此该算法仍有极大的意义 用于减少CPU运算时间 polyval 函数就是使用这种算法 三 常用符号运算功能的实现 1 极限2 微分3 积分4 级数求和5 一元函数的泰勒级数展开6 反函数7 复合函数 1 求极限函数limit用于求符号函数f的极限 系统可以根据用户要求 计算变量从不同方向趋近于指定值的极限值 limit f x a 求符号函数f x 的极限值 即计算当变量x趋近于常数a时 f x 函数的极限值 limit f a 求符号函数f x 的极限值 由于没有指定符号函数f x 的自变量 则使用该格式时 符号函数f x 的变量为函数findsym f 确定的默认自变量 既变量x趋近于a limit f 求符号函数f x 的极限值 符号函数f x 的变量为函数findsym f 确定的默认变量 没有指定变量的目标值时 系统默认变量趋近于0 即a 0的情况 limit f x a right 求符号函数f的极限值 right 表示变量x从右边趋近于a limit f x a left 求符号函数f的极限值 left 表示变量x从左边趋近于a 二 微积分 例 求极限symsx 定义符号变量f x exp sin x 1 2 exp tan x 1 sin x 3 确定符号表达式w limit f 求函数的极限w 1 2 二 微积分 2 微分函数diff函数用于对符号表达式s求微分 diff s v n 二 微积分 diff f v n diff f n diff f v diff f 求f对变量v的n阶导数求f对默认变量的n阶导数求f对变量v的一阶导数求f对默认变量的一阶导数 例 求导数 x sym x 定义符号变量diff sin x 2 求导运算ans 2 cos x 2 x 二 微积分 3 积分函数积分函数int s v a b 可以对被积函数或符号表达式s求积分int s v a b a 积分下限 b 积分上限 当a或b取inf 或 inf 时 计算的就是广义积分 int f v inf f int f v a b int f a b 求f对变量v的不定积分求f对默认变量的不定积分求f对变量v的定积分求f对默认变量的定积分 例 求下述积分 求积分 symsxint 1 1 x 2 ans atan x 二 微积分 symsAttaowyf int A exp i w t t tao 2 tao 2 Yf simple yf Yf 2 A sin 1 2 tao w w 例验证积分 例 计算二重不定积分 F int int x exp x y x y F 1 y exp x y 求下列积分 1 求不定积分 2 求定积分 3 求二重定积分 int x 3 exp x 2 x int sin x 4 cos x 2 0 pi 2 int int x sin x y sqrt y 0 1 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 区间求定积分 4 级数 级数求和 级数求和运算是数学中常见的一种运算 例如 f x a0 a1x a2x2 a3x3 anxn函数symsum可以用于此类对符号函数f的求和运算 该函数的引用时 应确定级数的通项式s 变量的变化范围a和b 该函数的引用格式为 symsum s a b 二 微积分 例8 求级数的和 键入 1 12 1 22 1 32 1 42 symsksymsum 1 k 2 1 Inf k值为1到无穷大ans 1 6 pi 2其结果为 1 12 1 22 1 32 1 42 2 6 二 微积分 symsum s v a b 若默认变量为k 求k从a开始到b为止时s的和 变量为v 求v从0开始到v 1为止s的前k项和 功能同上 不过变量为v 若默认变量为k 求k从0开始到k 1为止s的前k项和 symsum s symsum s v symsum s a b 5 一元函数的泰勒级数展开 taylor f taylor f n taylor f n v taylor f n v a 求f关于默认变量的5阶麦克劳林展开求f关于默认变量的n 1阶麦克劳林展开求f关于变量v的n 1阶麦克劳林展开求f在v a处的n 1阶泰勒展开式 求函数y cosx在x 0点处的5阶taylor展开式及在x pi 3处的6阶taylor展开式 symsxy1 taylor cos x y2 taylor cos x 7 pi 3 Matlab程序 ch413 m 6 复合函数 7 反函数 求反函数g finverse f g finverse f v 四 求解符号方程 1 线性方程组的符号解2 符号 代数 方程求解3 常微分方程 组 的求解 1 线性方程组的符号解 clc clearall A sym 1 1 1 3 1 6 0 1 3 b sym 1 7 4 x A b 2 符号 代数 方程求解 s solve f v 求方程关于指定自变量的解s solve f 求方程关于默认自变量的解 f是用字符串表示的方程 或符号表达式 eq1 a x 2 b x c d sx solve eq1 sa solve eq1 a eq2 a x 2 b x c d sx solve eq2 sa solve eq2 a A 直接用字符串创建方程 若方程f中不含等号 则表示解方程f 0 symsabcdxeq1 a x 2 b x c d sx solve eq1 sa solve eq1 a B 先定义符号变量 再创建符号表达式 符号表达式不能写成 eq1 a x 2 b x c d 解方程 symsx f x 3 3 x 1 s solve f x s solve x 3 3 x 1 x s solve x 3 3 x 1 0 x s solve f1 f2 fN v1 v2 vN 求解由f1 f2 fN确定的方程组关于v1 v2 vN的解 solve也可以用来解方程组 s是一个架构数组 如果要显示 引用 每个解 使用s v1 s v2 若没有提供v1 v2 vN Matlab会自动确定默认变量 例 解方程组 eq1 x 2 y z 27 eq2 x z 3 eq3 x 2 3 y 2 28 s solve eq1 eq2 eq3 s xs ys z 解方程组 clc clearall symsuvwyzeq1 u y 2 v z w eq2 y z w s solve eq1 eq2 y z 范德瓦尔斯气体的三个临界参量 clc clearall f P a V 2 V b R T D1 diff f V D2 diff D1 V S solve f D1 D2 P T V Pc S PVc S VTc S T clc clearall symsabRTVP R T V b a V 2D1 diff P V D2 diff D1 V S solve D1 D2 V T Vc S VTc S TPc subs P V T S V S T s solve x 2 x 2 solve在得不到解析解时 会给出数值解 3 常微分方程 组 的求解 y dsolve eq1 eq2 cond1 cond2 v y为输出 eq1 eq2 为微分方程 cond1 cond2 为初值条件 v为自变量 只有很少一部分微分方程 组 能求出解析解 大部分微分方程 组 只能利用数值方法求数值解 y1 y2 dsolve x1 x2 xn 返回微分方程的解 dsolve的使用 如果省略初值条件 则表示求通解 如果省略自变量 则默认自变量为t dsolve Dy 2 x x dy dx 2xdsolve Dy 2 x dy dt 2x 若找不到解析解 则返回其积分形式 微分方程中用D表示对自变量的导数 如 Dyy D2yy D3yy 一阶微分方程dsolve Dx y Dy x x 0 0 y 0 1 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 例 y dsolve D2y 2 Dy 2 y 0 y 0 1 Dy 0 0 y exp x cos x exp x sin x ezplot y 方程解y t 的时间曲线图 求该方程的解 例 求微分方程的通解 eq1 Dy 2 x y x exp x 2 y dsolve eq1 x 例 求微分方程在初值条件下的特解 eq1 x Dy y exp x 0 cond1 y 1 2 exp 1 y dsolve eq1 cond1 x 例 求微分方程组在初值条件下的特解 Eq1 Dx 5 x y exp t Eq2 Dy x 3 y 0 Cond1 x 0 1 Cond2 y 0 0 S dsolve Eq1 Eq2 Cond1 Cond2 t S x 查看解函数x t S Y 查看解函数y t 五 绘制符号函数的图形 1 fplot命令2 ezplot命令3 ezpolar命令4 ezplot3命令5 ezmesh命令6 ezsurf命令 1 fplot fplot sin x x 20 20 fplot fun limits 绘制函数y fun x 的图形 limits可以是 xmin xmax 形式或 xmin xmax ymin ymax 形式 ezplot f 2 ezplot ezplot f a b ezplot f x y ezplot f x y a b c d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产开发项目土地使用合同
- 道路工程安全质量问题库及答案解析
- 农业绿色发展领域合作开发协议
- 心理咨询服务的社会价值和意义
- 水利工程资金审批流程指南
- 《生活中的人间烟火情》研究报告
- 健康饮食的重要性及预防措施方案
- 家电维修项目保密规定
- 在线广告数据挖掘手册
- 实验设计合理计划规范
- 无人机飞防应急处置预案
- 四川蜀道养护集团有限公司招聘笔试题库2025
- 高一历史第一次月考卷02(考试版)(新高考适用)
- 2025年家政服务员劳务合同范文
- 2025-2026学年高一数学上学期第一次月考试题(考试版A4)
- 建筑公司法务知识培训课件
- 2025.9.3抗战胜利大阅兵初高中学生征文(高中):观九三阅兵有感
- 电梯维保流程课件
- 报废产品处置合同范本
- 水平定向钻施工专项方案施工技术方案
- 70周岁老人驾考三力测试题库及答案
评论
0/150
提交评论