MATLAB程序设计教程(9)——MATLAB符号计算

第9章MATLAB符号计算

9.1  符号对象

9.2  符号微积分

9.3  级  数

9.4  符号方程求解

9.1符号对象

9.1.1  建立符号对象

1.建立符号变量和符号常量

MATLAB提供了两个建立符号对象的函数:sym和syms,两个函数的用法不同。

(1) sym函数

sym函数用来建立单个符号量,一般调用格式为:

符号量名=sym(‘符号字符串’)

该函数可以建立一个符号量,符号字符串可以是常量、变量、函数或表达式。

应用sym函数还可以定义符号常量,使用符号常量进行代数运算时和数值常量进行的运算不同。下面的命令用于比较符号常量与数值常量在代数运算时的差别。

(2) syms函数

函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。syms函数的一般调用格式为:

syms  符号变量名1 符号变量名2 … 符号变量名n

用这种格式定义符号变量时不要在变量名上加字符串分界符(‘),变量间用空格而不要用逗号分隔。

2.建立符号表达式

含有符号对象的表达式称为符号表达式。建立符号表达式有以下3种方法:

(1)利用单引号来生成符号表达式。

(2)用sym函数建立符号表达式。

(3) 使用已经定义的符号变量组成符号表达式。

9.1.2  符号表达式运算

1.符号表达式的四则运算

符号表达式的加、减、乘、除运算可分别由函数symadd、symsub、symmul和symdiv来实现,幂运算可以由sympow来实现。

2.符号表达式的提取分子和分母运算

如果符号表达式是一个有理分式或可以展开为有理分式,可利用numden函数来提取符号表达式中的分子或分母。其一般调用格式为:

[n,d]=numden(s)

该函数提取符号表达式s的分子和分母,分别将它们存放在n与d中。

3.符号表达式的因式分解与展开

MATLAB提供了符号表达式的因式分解与展开的函数,函数的调用格式为:

factor(s):对符号表达式s分解因式。

expand(s):对符号表达式s进行展开。

collect(s):对符号表达式s合并同类项。

collect(s,v):对符号表达式s按变量v合并同类项。

4.符号表达式的化简

MATLAB提供的对符号表达式化简的函数有:

simplify(s):应用函数规则对s进行化简。

simple(s):调用MATLAB的其他函数对表达式进行综合化简,并显示化简过程。

5.符号表达式与数值表达式之间的转换

利用函数sym可以将数值表达式变换成它的符号表达式。

函数numeric或eval可以将符号表达式变换成数值表达式。

9.1.3  符号表达式中变量的确定

MATLAB中的符号可以表示符号变量和符号常量。findsym可以帮助用户查找一个符号表达式中的的符号变量。该函数的调用格式为:

findsym(s,n)

函数返回符号表达式s中的n个符号变量,若没有指定n,则返回s中的全部符号变量。

9.1.4  符号矩阵

符号矩阵也是一种符号表达式,所以前面介绍的符号表达式运算都可以在矩阵意义下进行。但应注意这些函数作用于符号矩阵时,是分别作用于矩阵的每一个元素。

由于符号矩阵是一个矩阵,所以符号矩阵还能进行有关矩阵的运算。MATLAB还有一些专用于符号矩阵的函数,这些函数作用于单个的数据无意义。例如

transpose(s):返回s矩阵的转置矩阵。

determ(s):返回s矩阵的行列式值。

其实,曾介绍过的许多应用于数值矩阵的函数,如diag、triu、tril、inv、det、rank、eig等,也可直接应用于符号矩阵。

9.2符号微积分

9.2.1  符号极限

limit函数的调用格式为:

(1) limit(f,x,a):求符号函数f(x)的极限值。即计算当变量x趋近于常数a时,f(x)函数的极限值。

(2) limit(f,a):求符号函数f(x)的极限值。由于没有指定符号函数f(x)的自变量,则使用该格式时,符号函数f(x)的变量为函数findsym(f)确定的默认自变量,即变量x趋近于a。

(3) limit(f):求符号函数f(x)的极限值。符号函数f(x)的变量为函数findsym(f)确定的默认变量;没有指定变量的目标值时,系统默认变量趋近于0,即a=0的情况。

(4) limit(f,x,a,’right’):求符号函数f的极限值。’right’表示变量x从右边趋近于a。

(5) limit(f,x,a,‘left’):求符号函数f的极限值。‘left’表示变量x从左边趋近于a。

例9-1  求下列极限。

极限1:

syms a m x;

f=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/(x+a);

limit(f,x,a)

ans =

(1/2*a*exp(sin(a))+1/2*a-exp(tan(a))+1)/a

极限2:

syms x t;

limit((1+2*t/x)^(3*x),x,inf)

ans =

exp(6*t)

极限3:

syms x;

f=x*(sqrt(x^2+1)-x);

limit(f,x,inf,’left’)

ans =

1/2

极限4:

syms x;

f=(sqrt(x)-sqrt(2)-sqrt(x-2))/sqrt(x*x-4);

limit(f,x,2,’right’)

ans =

-1/2

9.2.2  符号导数

diff函数用于对符号表达式求导数。该函数的一般调用格式为:

diff(s):没有指定变量和导数阶数,则系统按findsym函数指示的默认变量对符号表达式s求一阶导数。

diff(s,’v’):以v为自变量,对符号表达式s求一阶导数。

diff(s,n):按findsym函数指示的默认变量对符号表达式s求n阶导数,n为正整数。

diff(s,’v’,n):以v为自变量,对符号表达式s求n阶导数。

例9-2  求下列函数的导数。

9.2.3  符号积分

符号积分由函数int来实现。该函数的一般调用格式为:

int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表达式s求不定积分。

int(s,v):以v为自变量,对被积函数或符号表达式s求不定积分。

int(s,v,a,b):求定积分运算。a,b分别表示定积分的下限和上限。该函数求被积函数在区间[a,b]上的定积分。a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf)。当函数f关于变量x在闭区间[a,b]上可积时,函数返回一个定积分结果。当a,b中有一个是inf时,函数返回一个广义积分。当a,b中有一个符号表达式时,函数返回一个符号函数。

例9-3  求下列积分。

9.2.4  积分变换

常见的积分变换有傅立叶变换、拉普拉斯变换和Z变换。

1.傅立叶(Fourier)变换

在MATLAB中,进行傅立叶变换的函数是:

fourier(f,x,t):求函数f(x)的傅立叶像函数F(t)。

ifourier(F,t,x):求傅立叶像函数F(t)的原函数f(x)。

例9-4  求函数y=的傅立叶变换及其逆变换。

2.拉普拉斯(Laplace)变换

在MATLAB中,进行拉普拉斯变换的函数是:

laplace(fx,x,t):求函数f(x)的拉普拉斯像函数F(t)。

ilaplace(Fw,t,x):求拉普拉斯像函数F(t)的原函数f(x)。

例9-5  计算y=x3的拉普拉斯变换及其逆变换。

3.Z变换

当函数f(x)呈现为一个离散的数列f(n)时,对数列f(n)进行z变换的MATLAB函数是:

ztrans(fn,n,z):求fn的Z变换像函数F(z)。

iztrans(Fz,z,n):求Fz的z变换原函数f(n)。

例9-6  求数列 fn=e-2n的Z变换及其逆变换。

9.3级数

9.3.1  级数符号求和

求无穷级数的和需要符号表达式求和函数symsum,其调用格式为:

symsum(s,v,n,m)

其中s表示一个级数的通项,是一个符号表达式。v是求和变量,v省略时使用系统的默认变量。n和m是求和的开始项和末项。

例9-7  求下列级数之和。

9.3.2  函数的泰勒级数

MATLAB提供了taylor函数将函数展开为幂级数,其调用格式为:

taylor(f,v,n,a)

该函数将函数f按变量v展开为泰勒级数,展开到第n项(即变量v的n-1次幂)为止,n的缺省值为6。v的缺省值与diff函数相同。参数a指定将函数f在自变量v=a处展开,a的缺省值是0。

例9-8  求函数在指定点的泰勒级数展开式。

9.4符号方程求解

9.4.1  符号代数方程求解

在MATLAB中,求解用符号表达式表示的代数方程可由函数solve实现,其调用格式为:

solve(s):求解符号表达式s的代数方程,求解变量为默认变量。

solve(s,v):求解符号表达式s的代数方程,求解变量为v。

solve(s1,s2,…,sn,v1,v2,…,vn):求解符号表达式s1,s2,…,sn组成的代数方程组,求解变量分别v1,v2,…,vn。

例9-9  解下列方程。

9.4.2  符号常微分方程求解

在MATLAB中,用大写字母D表示导数。例如,Dy表示y’,D2y表示y”,Dy(0)=5表示y'(0)=5。D3y+D2y+Dy-x+5=0表示微分方程y”’+y”+y’-x+5=0。符号常微分方程求解可以通过函数dsolve来实现,其调用格式为:

dsolve(e,c,v)

该函数求解常微分方程e在初值条件c下的特解。参数v描述方程中的自变量,省略时按缺省原则处理,若没有给出初值条件c,则求方程的通解。

dsolve在求常微分方程组时的调用格式为:

dsolve(e1,e2,…,en,c1,…,cn,v1,…,vn)

该函数求解常微分方程组e1,…,en在初值条件c1,…,cn下的特解,若不给出初值条件,则求方程组的通解,v1,…,vn给出求解变量。

例9-10  求下列微分方程的解。

喜欢 (0)or分享 (0)

matlab中符号函数教程,MATLAB程序设计教程(9)——MATLAB符号计算相关推荐

  1. matlab中pdf函数使用,matlab2c使用c++实现matlab函数系列教程-poisspdf函数

    全栈工程师开发手册 (作者:栾鹏) matlab2c调用方法: 1.下载matlab2c动态链接库 2.将matlab2c.dll.matlab2c.lib和matlab2c.h放到项目头文件目录下 ...

  2. matlab中boxplot函数的参数设置_用matlab画boxplot中的一些应用说明

    由于matlab具有强大的计算功能,用其统计数据功能优点显而易见,这里分享使用matlab中的boxplot的一些技巧,供大家参考. Matlab boxplot命令 格式如下boxplot(X):产 ...

  3. matlab中符号函数sgn,编程里的函数符号都是什么意思?

    满意答案 qudong1116 2013.08.24 采纳率:59%    等级:12 已帮助:7005人 编程里的函数符号有的是相通的 sin cos tan sqrt exp log log10 ...

  4. matlab中unifrnd函数用法,概率和统计的MATLAB指令

    1.描述性统计分析 描述性统计分析函数标准用法都是对列状数据进行操作. meam(X):当X为向量,返回向量的均值:当X为矩阵,返回矩阵的每列元素均值构成的行向量.min,max,sort,mean, ...

  5. matlab中megn函数,直接序列扩频完整系统matlab仿真

    <直接序列扩频完整系统matlab仿真>由会员分享,可在线阅读,更多相关<直接序列扩频完整系统matlab仿真(9页珍藏版)>请在人人文库网上搜索. 1.直接序列扩频通信系统仿 ...

  6. matlab数组求一阶导数,用matlab求符号函数数组或函数矩阵的导数实例教程

    用matlab求符号函数数组或函数矩阵的导数实例教程 在符号矩阵中,矩阵的每个元素都可以存放符号函数,这是对符号函数数组的求到运算是对数组元素逐个进行的.接下来就以实例向大家介绍一下用matlab对符 ...

  7. matlab 中zeros,Matlab中zeros函数怎么操作?zeros函数使用教程分享

    有的网友表示自己对于Matlab中zeros函数使用还不是非常了解,而本节就介绍了Matlab中zeros函数使用操作教程,还不会操作的朋友就跟着小编学习一下吧,希望对你们有所帮助. Matlab中z ...

  8. 在matlab中real函数,matlab2c使用c++实现matlab函数系列教程-real函数

    全栈工程师开发手册 (作者:栾鹏) matlab2c调用方法: 1.下载动态链接库 2.将Matlab2c.dll拷贝到exe同目录下 3.将Matlab2c.h.Matlab2c.lib放到项目头文 ...

  9. matlab中sign函数的使用(提取符号)

    仅用于记录自己学习过程中遇到的函数 matlab中sign函数的使用,提取符号 一.语法 Y = sign(x) 返回与 x 大小相同的数组 Y,其中 Y 的每个元素是: 1,前提是 x 的对应元素大 ...

  10. matlab实验函数编写与程序设计,matlab实验四函数编写与程序设计

    <matlab实验四函数编写与程序设计>由会员分享,可在线阅读,更多相关<matlab实验四函数编写与程序设计(8页珍藏版)>请在金锄头文库上搜索. 1.实验四:函数编写与程序 ...

最新文章

  1. C# 视频多人脸识别的实现过程
  2. SQLyog普通版与SQLyog企业版对比分析
  3. 《JavaScript应用程序设计》一一3.2 流式JavaScript
  4. 题目1132:与7无关的数
  5. 在Object-C中学习数据结构与算法之排序算法
  6. 【Spring Boot】集成Netty Socket.IO通讯框架
  7. 学习笔记900天总结
  8. SAP 电商云 Spartacus Maintenance branch
  9. c语言变量相等问题穷举法,C语言穷举法经典例题.ppt
  10. 有两个python怎么停用其中一_如何在python中停止另一个已经运行的脚本?
  11. LFS-构建自己的linux
  12. 计算机专业最新研究领,「金仕教育」打码秃头?CS计算机专业研究方向与研究领域介绍...
  13. [FreeProxy]FreeProxy代理服务器端软件介绍 之一
  14. java集合框架源代码_面试必备——Java集合框架
  15. AngularJ控制器
  16. Linux下通过ssh上传、下载文件或者文件夹
  17. matlab 调速系统试验,实验三-双闭环直流调速系统MATLAB仿真.doc
  18. 博科BROCADE交换机开启snmp服务
  19. 第一天Java学习笔记
  20. 在网页中显示PPT、Word、Excel

热门文章

  1. 使用jQuery播放/暂停 HTML5视频
  2. 小米com android phone,小米电视助手(com.xiaomi.mitv.phone.tvassistant) - 2.5.7 - 应用 - 酷安...
  3. 用微课学计算机应用基础--PPT制作
  4. 使用ffmpeg将ASS字幕打进视频流中
  5. 射极跟随器实验报告数据处理_射极跟随器实验报告 -
  6. 太爽了!javaweb教程百度云盘
  7. mysql如何导出数据脚本_MySQL 导出数据
  8. linux mysql 集群搭建_MySQL分布式集群搭建
  9. 在web项目中使用MarkDown组件
  10. 写给后端程序员的前端开发流程与正确姿势.