第5章 matlab符号运算 5.1 符号运算简介 5.2 符号表达式的化简与替换 5.3 符号微积分 5.4 符号线性代数

Slides:



Advertisements
Similar presentations
第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
Advertisements

第二章 导数与微分 习题课 主要内容 典型例题 测验题. 求 导 法 则求 导 法 则 求 导 法 则求 导 法 则 基本公式 导 数 导 数 微 分微 分 微 分微 分 高阶导数 高阶微分 一、主要内容.
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
常系数线性微分方程组 §5.3 常系数线性方程组. 常系数线性微分方程组 一阶常系数线性微分方程组 : 本节主要讨论 (5.33) 的基解矩阵的求法.
高等数学一 主讲 杨俊 演示文稿制作 杨俊. 高等数学一 第 3 章 一元函数微分学的应用 第 4 章 一元函数 积分学及应用 第 1 章 函数、极限与连续 第 2 章 导数与微分.
2.5 函数的微分 一、问题的提出 二、微分的定义 三、可微的条件 四、微分的几何意义 五、微分的求法 六、小结.
第二章 导数与微分 一. 内 容 要 点 二. 重 点 难 点 三. 主 要 内 容 四. 例 题与习题.
第二章 导数与微分. 二、 微分的几何意义 三、微分在近似计算中的应用 一、 微分的定义 2.3 微 分.
全微分 教学目的:全微分的有关概念和意义 教学重点:全微分的计算和应用 教学难点:全微分应用于近似计算.
第五章 二次型. 第五章 二次型 知识点1---二次型及其矩阵表示 二次型的基本概念 1. 线性变换与合同矩阵 2.
一、二阶行列式的引入 用消元法解二元线性方程组. 一、二阶行列式的引入 用消元法解二元线性方程组.
第三章 函数逼近 — 最佳平方逼近.
第一章 行列式 第五节 Cramer定理 设含有n 个未知量的n个方程构成的线性方程组为 (Ⅰ) 由未知数的系数组成的n阶行列式
恰当方程(全微分方程) 一、概念 二、全微分方程的解法.
第二部分 微积分问题的计算机求解 《数学分析》实验课.
一、原函数与不定积分 二、不定积分的几何意义 三、基本积分公式及积分法则 四、牛顿—莱布尼兹公式 五、小结
第四章 定积分及其应用 4.3 定积分的概念与性质 微积分基本公式 定积分的换元积分法与分部积分法 4.5 广义积分
第四章 函数的积分学 第六节 微积分的基本公式 一、变上限定积分 二、微积分的基本公式.
定积分的换元法 和分部积分法 换元公式 分部积分公式 小结 1/24.
§5.3 定积分的换元法 和分部积分法 一、 定积分的换元法 二、 定积分的分部积分法 三、 小结、作业.
第四章 一元函数的积分 §4.1 不定积分的概念与性质 §4.2 换元积分法 §4.3 分部积分法 §4.4 有理函数的积分
第5章 定积分及其应用 基本要求 5.1 定积分的概念与性质 5.2 微积分基本公式 5.3 定积分的换元积分法与分部积分法
第四节 一阶线性微分方程 线性微分方程 伯努利方程 小结、作业 1/17.
全 微 分 欧阳顺湘 北京师范大学珠海分校
第三章 导数与微分 习 题 课 主要内容 典型例题.
第三讲 MATLAB的符号运算 科学与工程技术中的数值运算固然重要,但自然科学理论分析中各种各样的公式、关系式及其推导就是符号运算要解决的问题。 在Matlab7.0中,符号计算虽以数值运算的补充身份出现,但它们都是科学计算研究的重要内容。 Matlab开发了实现符号计算的工具包Symbolic Math.
第5章 §5.3 定积分的积分法 换元积分法 不定积分 分部积分法 换元积分法 定积分 分部积分法.
第七讲 MATLAB的符号计算.
第二章 矩阵(matrix) 第8次课.
线性代数机算与应用 李仁先 2018/11/24.
—— matlab 不仅具有数值运算功能,还开发了在matlab环境下实现符号计算的工具包Symbolic Math Toolbox
元素替换法 ——行列式按行(列)展开(推论)
数学软件 Matlab —— Matlab 符号运算.
导数的基本运算.
计算机数学基础 主讲老师: 邓辉文.
1.2 MATLAB变量表达式与数据格式 MATLAB变量与表达式 MATLAB的数据显示格式
§2 求导法则 2.1 求导数的四则运算法则 下面分三部分加以证明, 并同时给出相应的推论和例题 .
第一章 函数 函数 — 研究对象—第一章 分析基础 极限 — 研究方法—第二章 连续 — 研究桥梁—第二章.
若2002年我国国民生产总值为 亿元,如果 ,那么经过多少年国民生产总值 每年平均增长 是2002年时的2倍? 解:设经过 年国民生产总值为2002年时的2倍, 根据题意有 , 即.
第一章 函数与极限.
第5章 线性代数 矩阵分析 矩阵分解 线性方程组的求解 符号矩阵.
用数学软件解决高等代数问题 主讲 张力宏、张洪刚
Partial Differential Equations §2 Separation of variables
第6章 MATLAB符号计算 6.1 符号计算基础 6.2 符号导数及其应用 6.3 符号积分 6.4 级数 6.5 代数方程的符号求解
线性代数 第二章 矩阵 §1 矩阵的定义 定义:m×n个数排成的数表 3) 零矩阵: 4) n阶方阵:An=[aij]n×n
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
实验一 计算复变函数极限、微分、积分、 留数、泰勒级数展开式 (一) 实验类型:验证性 (二) 实验类别:基础实验
MATLAB求Fourier变换及逆变换
第4章 Excel电子表格制作软件 4.4 函数(一).
第九节 赋值运算符和赋值表达式.
第16讲 相似矩阵与方阵的对角化 主要内容: 1.相似矩阵 2. 方阵的对角化.
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
第一节 不定积分的概念与性质 一、原函数与不定积分的概念 二、不定积分的几何意义 三、基本积分表 四、不定积分的性质 五、小结 思考题.
4) 若A可逆,则 也可逆, 证明: 所以.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
学习任务三 偏导数 结合一元函数的导数学习二元函数的偏导数是非常有用的. 要求了解二元函数的偏导数的定义, 掌握二元函数偏导数的计算.
一 般 的 代 数 方 程 函数solve用于求解一般代数方程的根,假定S为符号表达式,命令solve (S)求解表达式等于0的根,也可以再输入一个参数指定未知数。例: syms a b c x S=a*x^2+b*x+c; solve(S) ans = [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
建模常见问题MATLAB求解  .
2.2矩阵的代数运算.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
线 性 代 数 厦门大学线性代数教学组 2019年5月12日4时19分 / 45.
第二节 函数的极限 一、函数极限的定义 二、函数极限的性质 三、小结 思考题.
§2 方阵的特征值与特征向量.
第5章 MATLAB符号运算 编者.
2.3.运用公式法 1 —平方差公式.
§ 9.1常用数学软件简介及MATLAB基础知识
西南科技大学网络教育系列课程 数学软件 数学软件 第7讲 MATLAB符号计算二 主讲教师: 鲜大权 副教授 西南科技大学理学院数学系.
§4.5 最大公因式的矩阵求法( Ⅱ ).
一元一次方程的解法(-).
§2 自由代数 定义19.7:设X是集合,G是一个T-代数,为X到G的函数,若对每个T-代数A和X到A的函数,都存在唯一的G到A的同态映射,使得=,则称G(更严格的说是(G,))是生成集X上的自由T-代数。X中的元素称为生成元。 A变, 变 变, 也变 对给定的 和A,是唯一的.
Presentation transcript:

第5章 matlab符号运算 5.1 符号运算简介 5.2 符号表达式的化简与替换 5.3 符号微积分 5.4 符号线性代数 5.1 符号运算简介 5.2 符号表达式的化简与替换 5.3 符号微积分 5.4 符号线性代数 5.5 符号方程的求解

5.1 符号运算简介 5.1.1 符号变量、表达式的生成 1.sym函数 sym函数可以用于生成单个的符号变量。该函数的调用格式为: s=sym(A) 如果参数A为字符串,则返回的结果为一个符号变量或者一个符号数值;如果A是一个数字或矩阵,则返回结果为该参数的符号表示。 x=sym('x')

2.syms函数 函数sym一次只能定义一个符号变量,使用不方便。MATLAB提供了另一个函数syms,一次可以定义多个符号变量。syms函数的一般调用格式为: syms 符号变量名1符号变量名2…符号变量名n 不要在变量名上加字符串分界符(‘),变量分隔用空格而不要用逗号分隔。 注意: (1)  syms一次可以定义多个符号变量; (2)  syms命令sym函数的缩写形式;syms x y real 等价于x=sym(‘x’,‘real’);y=sym(‘y’,‘real’); (3)  MatLab提倡使用syms命令,因为书写更方便、清楚。

【例5-1】以下是sym命令与syms命令的区别。 >> y=sym a >> y=sym b >> y=a*b >> f=y^3-y^2-y f = a^3*b^3 - a^2*b^2 - a*b (2)  syms命令。 >> syms a b >> y=a*b >> f=y^3-y^2-y

3.建立符号表达式 含有符号对象的表达式称为符号表达式。建立符号表达式有以下2种方法。 1) 用sym函数建立符号表达式 【例5-2】用sym建立符号表达式和。 (1)  。 第一步:在matlab命令窗口中输入如下命令。 y=sym('a*x^2+b*x') %括号的内容必须是字符串 第二步:按“enter”键,得到的结果如下。 y =a*x^2 + b*x

(2)   第一步:在matlab命令窗口中输入如下命令。 y=sym('exp(x+3)-sqrt(x)') 第二步:按“enter”键,得到的结果如下。 y =exp(x + 3) - x^(1/2)

【例5-3】建立表达式y=sin(xy)。 方法一: syms x y y=sym(sin(x*y)) y = sin(x*y) 方法二: y=sin(x*y)

4.符号矩阵 符号矩阵也是一种符号表达式。符号表达式运算都可以在矩阵意义下进行。 符号矩阵的创建方法: >> syms a b c d >> A=[a b;c d] >> B=[a c;b d]; >> A*B ans = [ a^2+b^2, a*c+b*d] [ a*c+b*d, c^2+d^2]

MATLAB还有一些专用于符号矩阵的函数,这些函数作用于单个的数据无意义。例如 transpose(A):返回A矩阵的转置矩阵 det (A):返回A矩阵的行列式值 其实,许多应用于数值矩阵的函数,如diag、triu、tril、inv、rank、eig等,也可直接应用于符号矩阵。

【例5-4】求矩阵转置矩阵和行列式值。 解: 第一步:在matlab命令窗口中输入如下命令。 >> A=[11 -1 0;9 3 5;-4 2 8] >> t=transpose(A) >> d=det(A) 第二步:按“enter”键,得到的结果如下。 t= 11 9 -4 -1 3 2 0 5 8 d = 246.0000

5.1.2 findsym函数和subs函数 1.findsym函数 MATLAB中的符号可以表示符号变量和符号常量。findsym可以帮助用户查找一个符号表达式中的的符号变量(自变量)。该函数的调用格式为: findsym(s,n)

findsym函数通常由系统自动调用,在进行符号运算时,系统调用该函数确定表达式中的符号变量,执行相应的操作。函数返回符号表达式s中的n个符号变量,若没有指定n,则返回s中的全部符号变量。优先选择靠近x的小写字母和x后面的字母。

【例5-5】求符号变量。 >> syms x y z >> f=z^x+x^y+y^z >> findsym(f,1) ans = X >> findsym(f,2) x,y >> findsym(f) x,y,z

2.subs函数 subs是单词substitution的缩写,意思就是“替代”。函数subs可以用指定符号替换表达式中的某一个特定符号。该函数的调用格式为: R=subs(S) 对于S中出现的全部符号变量,如果在调用函数或工作区间中存在相应值,则将值代入,如果没有相应值,则对应的变量保持不变; R=subs(S,new)

   用新的符号变量替换S中的默认变量,即有findsym函数返回的变量; R=subs(S,old,new) 用新的符号变量替换S中的变量,被替换的变量由old指定,如果new是数字形式的符号,则数值代替原来的符号计算表达式的值,所得结果仍是字符串形式;如果new是矩阵,则将S中的所有old替换为new,并将S中的常数项扩充为与new维数相同的常数矩阵。

【例5-6】 解: 第一步:在matlab命令窗口中输入如下命令。 >> syms a b c x >> f=a*x^2+b*x+c >> y=subs(f,2) >> z=subs(f,a,3) >> s=subs(f,[a,b,c],[3,4,5])

第二步:按“enter”键,得到的结果如下。 y = 4*a + 2*b + c z = 3*x^2 + b*x + c s = 3*x^2 + 4*x + 5

5.1.3 符号和数值之间的转化 在符号变量生成一节中已经介绍了sym函数,该函数用于生成符号变量,也可以将数值转化为符号变量。格式为: s=sym(A,flag)

转化的方式由参数“flag”确定,它也可以为’r’、’f’、’e’、’d’,默认的为’r’。’r’代表有理数格式,’f’代表浮点数格式,’e’代表有理误差格式,’d’代表十进制格式。 sym的另一个重要作用是将数值矩阵转化为符号矩阵,而eval可以将符号表达式变换成数值表达式。

【例5-7】 解: >> y=sqrt(3) (1) 浮点格式。 >> sym(y,'f') ans = 3900231685776981/2251799813685248

(2) 有理格式。 >> sym(y,'r') ans = 3^(1/2) (3) 有理误差格式。 >> sym(y,'e') 3^(1/2) - (268*eps)/593

(4) 十进制格式。 >> sym(y,'d') ans = 1.7320508075688771931766041234368

5.1.4 任意精度的计算 符号计算的一个非常显著的特点是:在计算过程中不会出现舍入误差,从而可以得到任意精度的数值解。如果希望计算结果精确,可以用符号计算来获得足够高的计算精度。符号计算相对于数值计算而言,需要更多的计算时间和存储空间。 MATLAB工具箱中有3种不同类型的算术运算: 数值型:MATLAB的浮点数运算; 有理数类型:Maple的精确符号运算; VPA类型:Maple的任意精度算术运算。

在3种运算中,浮点运算速度最快,所需的内存空间小,但是其结果精确度最低。双精度数据的输出位数由format命令控制,但是在内部运算时采用的是计算机硬件所提供的八位浮点运算。而且,在浮点运算的每一步,都存在一个舍入误差,如上面的运算中存在三步舍入误差:计算1/3的舍入误差,计算1/2+1/3的舍入误差,以及将最后结果转化为十进制输出时的舍入误差。 符号运算中的有理数运算,其时间复杂度和空间复杂度都是最大的,但是,只要时间和空间允许,都能够得到任意精度的结果。 可变精度的运算运算速度和精确度均位于上面两种运算之间。其具体精度由参数指定,参数越大,精确度越高,运行越慢。

5.1.5 创建符号方程 1.创建抽象方程 MATLAB中可以创建抽象方程,即只有方程符号,没有具体表达式的方程。若要创建方程,并计算其一阶微分的方法如下。 >> f=sym('f(x)'); >> syms x h; >> df = (subs(f,x,x+h)-f)/h df = (f(x+h)-f(x))/h 抽象方程在积分变换中有着很多的应用。

2.创建符号方程 创建符号方程的方法有两种:利用符号表达式创建和创建M文件。 利用符号表达式创建的步骤就是,先创建符号变量,通过符号变量的运算生成符号函数直接生成符号表达式。而利用M文件创建符号方程的步骤就是先利用 M 文件创建的函数,可以接受任何符号变量作为输入,作为生成函数的自变量。

5.2 符号表达式的化简与替换 5.2.1 符号表达式的化简 MATLAB中可以实现符号表达式化简的函数有collect、expand、horner、factor、simplify、simple。 1.collect 该函数用于合并同类项,具体调用格式为: R=collect(S) 合并同类项。其中S可以是数组,数组的每个元素为符号表达式。该命令将S中的每个元素进行合并同类项。 R=collect(S,v) 对指定的变量v进行合并,如果不指定,则默认为对x进行合并,或者由findsym函数返回的结果进行合并。

【例5-8】对函数进行合并。 解: 第一步:在matlab命令窗口中输入如下命令。 >> syms x y >> z=collect(x^2*y+x*y^2-2*x-3*y) 第二步:按“enter”键,得到的结果如下。 z =y*x^2 + (y^2 - 2)*x - 3*y

2.expand expand函数用于符号表达式的展开。其操作对象可以是多种类型,如多项式、三角函数、指数函数等。用户可以利用expand函数对任意的符号表达式进行展开。

【例5-9】展开表达式。 解: 第一步:在matlab命令窗口中输入如下命令。 >> syms x >> y=exp(x+1) >> expand(y) 第二步:按“enter”键,得到的结果如下。 ans = exp(1)*exp(x)

3.horner horner函数将函数转化为嵌套格式。嵌套格式在多项式求值中可以降低计的时间复杂度。该函数的调用格式为: R=horner(P) 其中P为由符号表达式组成的矩阵,该命令将P中的所有元素转化为相应的嵌套形式。

【例5-10】对进行化解。 解: 第一步:在matlab命令窗口中输入如下命令。 >> syms x >> y=horner(x^3-6*x^2-11*x-6) 第二步:按“enter”键,得到的结果如下。 y =x*(x*(x - 6) - 11) - 6

4.factor和simplify factor函数实现因式分解功能,如果输入的参数为正整数,则返回此数的素数因数。 函数simplify(s):应用函数规则对s进行化简。表达式中可以包含和式、方根、分数乘方、指数函数、对数函数、三角函数、bessel函数、超越函数等。

【例5-11】对表达式进行因式分解。 解: 第一步:在matlab命令窗口中输入如下命令。 >> syms x >>factor(x^3-x^2-10*x-8) 第二步:按“enter”键,得到的结果如下。 ans = (x - 4)*(x + 2)*(x + 1)

【例5-12】对表达式进行因式分解。 解: 第一步:在matlab命令窗口中输入如下命令。 >> syms s >> y=s^2+4*s+4 >> simplify(y) 第二步:按“enter”键,得到的结果如下。 ans =(s + 2)^2

5.simple 该函数同样实现表达式的化简,并且该函数可以自动选择化简所选择的方法,最后返回表达式的最简单的形式。函数的化简方法包括:simplify、combine(trig)、radsimp、convert(exp)、collect、factor、expand 等。该函数的调用格式为: r=simple(S) 该命令尝试多种化简方法,显示全部化简结果,并且返回最简单的结果;如果S为矩阵,则返回使矩阵最简单的结果,但是对于每个元素而言,则并不一定是最简单的。 [r,how]=simple(S) 该命令在返回化简结果的同时返回化简所使用的方法。

5.2.2 符号表达式的替换 在MATLAB中,可以通过符号替换使表达式的形式简化。符号工具箱中提供了两个函数用于表达式的替换:subexpr和subs。subs在前面的章节已经介绍过了,这里不再具体讲解。下面只介绍一下subexpr。 subexpr函数自动将表达式中重复出现的字符串用变量替换,该函数的调用格式为: [Y,SIGMA]=subexpr(X,SIGMA)

指定用符号变量SIGMA来代替符号表达式(可以是矩阵)中重复出现的字符串。替换后的结果由Y返回,被替换的字符串由SIGMA返回; [Y,SIGMA]=subexpr(X,'SIGMA') 该命令与上面的命令不同之处在于第二个参数为字符串,该命令用来替换表达式中重复出现的字符串。

5.3 符号微积分 5.3.1 符号表达式求极限 极限是微积分的基础,微分和积分都是“无穷逼近”时的结果。在MATLAB中函数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。

【例5-13】求的极限。 解: 第一步:在matlab命令窗口中输入如下命令。 >> syms x y f1=sin(x)/x; f2=sin(x+2*y); f=limit(f1) g=limit(f2,y,0) 第二步:按“enter”键,得到的结果如下。 f =1 g =sin(x)

【例5-14】求下列极限。 解: (1) 第一步:在命令窗口输入如下程序。 >> sym x >> y=(1-cos(x))/x^2 >> f=limit(y) 第二步:按“enter”键,得到的结果如下。 f=1/2

(2) 第一步:求当x趋于时y函数的极限。 >> sym x >> y=(exp(x)-exp(-x))/(exp(x)+exp(-x)) >> f1=limit(y,x,Inf) 结果为: f1=1 第二步:求当x趋于时y函数的极限。 >> f2=limit(y,x,-Inf) f2 =-1 因为f1不等于f2所以极限不存在。

5.3.2 符号微分 MATLAB中函数diff实现函数求导和求微分,可以实现一元函数求导和多元函数求偏导。该函数在前面的MATLAB的数学功能一章已有介绍,用于计算向量或矩阵的差分。当输入参数为符号表达式时,该函数实现符号微分,其调用格式为: diff(S)

实现表达式S的求导,没有指定变量和微分阶数,则系统按findsym函数指示的默认变量对符号表达式S求一阶微分; diff(S,'v') 实现表达式对指定变量v的求导,以v为自变量,求一阶微分,该语句还可以写为diff(S,sym('v')); diff(S,n)

按findsym函数指示的默认变量求S的n阶微分,n为正整数。 diff(S,'v',n) 求S对v的n阶导,该表达式还可以写为diff(S,n,'v')。 上述为利用diff函数计算符号函数的微分,另外,微积分中一个非常的重要概念为Jacobian矩阵,计算函数向量的微分。在MATLAB中,函数jacobian用于计算Jacobian矩阵。该函数的调用格式为: R=jacobian(f,v)

如果f是函数向量,v为自变量向量,则计算f的Jacobian矩阵;如果f是标量,则计算f的梯度;如果v也是标量,则其结果与diff函数相同。

【例5-15】求下列函数的微分。 (1)  y=sin x; (2)  y=arctan (ax); (3)  y=log10求二阶导, 在matlab中以10为底的对数需要用log10函数,以2为底的对数需要用log2函数,log是e为底的对数。

解: (1) 第一步:在命令窗口输入如下程序。 >> sym x >> y=sin x >> f=diff(y) 第二步:按“enter”键,得到的结果如下。 f=cos(x)

(2) 第一步:在命令窗口输入如下程序。 >> syms a x >> y=atan(a*x) >> f=diff(y) 第二步:按“enter”键,得到的结果如下。 f=a/(a^2*x^2 + 1) 注意:arctan(x)在matlab中输入形式为atan(x)。

(3) 第一步:在命令窗口输入如下程序。 >> sym x >> y=log10(x^2) >> f=diff(y,x,2) 第二步:按“enter”键,得到的结果如下。 f=-2/(x^2*log(10)) 注意:在matlab中以10为底的对数写为log10,以2为底的对数写为log2,而log则是默认是以e为底的对数函数。

5.3.3 符号积分 与微分对应的是积分,在MATLAB中,函数int用于实现符号微分运算。该函数的调用格式为: R=int(S) 求表达式S的不定积分,未指定积分变量和阶数,按findsym函数指示的默认变量对被积函数或符号表达式求不定积分,也就是说,自变量由findsym函数确定; R=int(S,v)

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

(1) 第一步:在命令窗口输入如下程序。 >> sym x >> y=(x^4+1)/(x^2+1) >> f=int(y) 第二步:按“enter”键,得到的结果如下。 f=2*atan(x) - x + x^3/3

(2) 第一步:在命令窗口输入如下程序。 >> sym x >> y=1/(1+x+x^2) >> f=int(y) 第二步:按“enter”键,得到的结果如下。 f=(2*3^(1/2)*atan((2*3^(1/2)*x)/3 + 3^(1/2)/3))/3

(3) 第一步:在命令窗口输入如下程序。 >> syms a x >> y=a*x^3 >> f=int(y,0,2) 第二步:按“enter”键,得到的结果如下。 f=4*a

(4) 第一步:在命令窗口输入如下程序。 >> syms x >> y=sqrt(x+1)/(sqrt(x+1)+sqrt(3-x)) >> f=int(y,x,0,2) 第二步:按“enter”键,得到的结果如下。 y =(x + 1)^(1/2)/((x + 1)^(1/2) + (3 - x)^(1/2))

5.3.4 级数求和 symsum函数用于级数的求和。该函数的调用格式为: r=symsum(s) 自变量为findsym函数所确定的符号变量,设其为k,则该表达式计算 s从0到k-1的和; r=symsum(s,v) 计算表达式s从0到v-1的和;

r=symsum(s,a,b) 计算自变量从a到b之间s的和; r=symsum(s,v,a,b) 计算v从a到b之间的s的和。其中s表示一个级数的通项,是一个符号表达式。v是求和变量,v省略时使用系统的默认变量。a和b是求和的开始项和末项。

【例5-17】求级数前6项的部分和s。 解: 第一步:在命令窗口输入如下程序。 >> syms x >> s=symsum(1/(1+x^2),1,6) 第二步:按“enter”键,得到的结果如下。 s =75581/81770

MATLAB提供了taylor函数将函数展开为幂级数,所以函数 taylor 可以用于实现 Taylor级数的计算。该函数的调用格式为: r=taylor(f) 计算表达式f的Taylor级数,自变量由findsym函数确定,计算f的在0的6阶Taylor级数;

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

【例5-18】求函数的泰勒级数展开式。 (1) 求y=sin(sinx)的三阶泰勒级数展开式。 (2) 求y=tan(x)的2阶泰勒级数展开式。

(1) 第一步:在命令窗口输入如下程序。 >> syms x >> y=sin(sin(x)) >> f=taylor(y,x,4) 第二步:按“enter”键,得到的结果如下。 f=x - x^3/3

(2) 第一步:在命令窗口输入如下程序。 >> syms x >> y=tan(x) >> f=taylor(y,x,3) 第二步:按“enter”键,得到的结果如下。 f=x

5.4 符号线性代数 5.4.1 基本符号运算 在Matlab数学运算中,基本符号运算符包括+、-、*、.*、\、.\、/、^、.^。 5.4 符号线性代数 5.4.1 基本符号运算 在Matlab数学运算中,基本符号运算符包括+、-、*、.*、\、.\、/、^、.^。 (1) 加减运算。 A+B,A-B。如果A、B为同类型的矩阵时,A+B,A-B分别对对应分量进行加减。 (2)  A*B符号矩阵乘法。 A*B为线性代数中定义的矩阵乘法。按乘法定义要求必须有矩阵A的列数等于矩阵B的行数,否则该函数返回错误信息。 (3)  A.*B符号数组的乘法。 A.*B为按参量A与B对应的分量进行相乘。A与B必须为同型阵列,或至少有一个为标量。

(4)  A\B矩阵的左除法。 X=A\B为符号线性方程组A*X=B的解。我们指出的是,A\B近似地等于inv(A)*B。若X不存在或者不唯一,则产生一警告信息。矩阵A可以是矩形矩阵(即非正方形矩阵),但此时要求方程组必须是相容的。 (5)  A.\B数组的左除法。 A.\B为按对应的分量进行相除。若A与B为同型阵列时。若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作。 (6)  B/A矩阵的右除法。 X=B/A为符号线性方程组X*A=B的解。需要指出的是,B/A粗略地等于B*inv(A)。若X不存在或者不唯一,则产生一警告信息。矩阵A可以是矩形矩阵(即非正方形矩阵),但此时要求方程组必须是相容的。

(7)  A./B数组的右除法。 A./B为按对应的分量进行相除。若A与B为同型阵列时。若A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作。 (8)  A^B矩阵的方幂。 计算矩阵A的整数B次方幂。若A为标量而B为方阵,A^B用方阵B的特征值与特征向量计算数值。若A与B同时为矩阵,则返回一错误信息。 (9)  A.^B数组的方幂。 A.^B为按A与B对应的分量进行方幂计算。若A与B为同型阵列时,A与B中至少有一个为标量,则把标量扩大为与另外一个同型的阵列,再按对应的分量进行操作。

5.4.2 矩阵的特征值分解 在MATLAB中,矩阵的特征值和特征向量由函数eig计算。该函数的主要用法为: E=eig(A) 计算符号矩阵A的符号特征值,返回结果为一个向量,向量的元素为矩阵A的特征值; [V,E]=eig(A) 计算符号矩阵A的符号特征值和符号特征向量,返回结果为两个矩阵:V和E,V是矩阵A的特征向量组成的矩阵,E为A的特征值组成的对角矩阵,得到的结果满足。

【例5-19】求矩阵的特征值。 解: 第一步:在命令窗口输入如下程序。 >> A=[2 -1 5;3 0 1;6 7 3] >> e=eig(A) 第二步:按“enter”键,得到的结果如下。 e = 9.1708 -2.0854 + 2.4292i -2.0854 - 2.4292i

5.4.3 Jordon 标准型 当利用相似变换将矩阵对角化时会产生Jordon标准型。对于给定的矩阵,如果存在非奇异矩阵,使得矩阵最接近对角形,则矩阵称为的Jordon标准型。MATLAB中函数jordan用于计算矩阵的Jordon标准型。该函数的调用格式如下: J=jordan(A) 计算矩阵的 Jordon 标准型; [V,J]=jordan(A) 返回矩阵的 Jordon 标准型,同时返回相应的变换矩阵。

【例5-20】将矩阵化为Jordon标准型。 第一步:在命令窗口输入如下程序。 >> A=[2 -1 5;3 0 1;6 7 3] >> J = jordan(A) 第二步:按“enter”键,得到的结果如下。 J = -2.0854 + 2.4292i 0 0 0 9.1708 0 0 0 -2.0854 - 2.4292i

5.4.4 奇异值分解 奇异值分解是矩阵分析中的一个重要内容,在理论分析和实践计算中都有着广泛的应用。在MATLAB中,完全的奇异值分解只对可变精度的矩阵可行。进行奇异值分解的函数为svd,该函数的调用格式为: sigma = svd(A),计算矩阵的奇异值; sigma = svd(vpa(A)),采用可变精度计算矩阵的奇异值; [U,S,V] = svd(A),矩阵奇异值分解,返回矩阵的奇异向量矩阵和奇异值所构成的对角矩阵。 [U,S,V] = svd(vpa(A)),采用可变精度计算对矩阵进行奇异值分解。

【例5-21】计算矩阵的奇异值。 解: 第一步:在命令窗口输入如下程序。 >> A=[10 1 9;3 7 1;5 -3 6] >> sigma = svd(A) 第二步:按“enter”键,得到的结果如下。 sigma = 15.8056 7.8148 0.3319

5.5 符号方程的求解 5.5.1 代数方程的求解 代数方程包括线性方程、非线性方程和超越方程等。在 MATLAB 中函数 solve 用于求解代数方程和方程组,其调用格式如下: g=solve(eq) 求解方程eq的解,对默认自变量求解,输入的参数 eq 可以是符号表达式或字符串; g=solve(eq,var) 求解方程eq的解,对指定自变量求解;

在上面的语句中,如果输入的表达式中不包含等号,则 MATLAB 求解其等于 0 时的解。例如,g=solve(sym('x^2-1'))的结果与g=solve(sym('x^2-1=0'))相同。 对于单个方程的情况,返回结果为一个符号表达式,或是一个符号表达式组成的数组;对于方程组的情况,返回结果为一个结构体,结构体的元素为每个变量对应的表达式,各个变量按照字母顺序排列。

【例5-22】求解方程。 解: 第一步:在命令窗口输入如下程序。 >> syms x >> g=solve('x^3-8*x^2+17*x-10') 第二步:按“enter”键,得到的结果如下。 g=1、2、5(3个解)

5.5.2 求解代数方程组 代数方程组同样由函数 solve 函数进行,其格式为: g=solve(eq1,eq2,...,eqn) 求由方程eq1、eq2、…、eqn等组成的系统,自变量为默认自变量; g=solve(eq1,eq2,...,eqn,var1,var2,...,varn) 求由方程eq1、eq2、…、eqn 等组成的系统,自变量为指定的自变量:var1、var2、…、varn。

解: 第一步:在命令窗口输入如下程序。 >> syms x1 x2 x3 x4 >> L1=x1-2*x2+3*x3-4*x4-4; >> L2=x2-x3+x4+3; >> L3=-x1-x2+2*x4+4; >> [x1,x2,x3,x4]=solve(L1,L2,L3,x1,x2,x3,x4) 第二步:按“enter”键,得到的结果如下。 x1 =- z - 20; x2 =z + 6; x3 =z; x4 =-9

5.5.3 微分方程的求解 MATLAB中微分方程的求解通过函数dsolve进行,该函数用于求解常微分方程。 dsolve函数该函数的具体调用格式为 r = dsolve(‘eq1,eq2,...’, ‘cond1,cond2,...’, ‘v’) r = dsolve('eq1','eq2',...,'cond1','cond2',...,'v') 其中,eq1、eq2等表示待求解的方程,默认的自变量为x。方程中用D表示微分,如Dy表示;如果在D后面带有数字,则表示多阶导数,如D2y表示。cond1、cond2等

表示初始值,通常表示为y(a)=b或者Dy(a)=b。如果不指定初始值,或者初始值方程的个数少于因变量的个数,则最后得到的结果中会包含常数项,表示为C1、C2等。dsolve函数最多接受12个输入参数。

【例5-24】求 解: 第一步:在命令窗口输入如下程序。 >> syms x y >> r=dsolve('D2y+y=0','x') 第二步:按“enter”键,得到的结果如下。 r =C2*cos(x) + C3*sin(x)

5.5.4 微分方程组的求解 求解微分方程组通过 dsolve 进行,格式为: r = dsolve('eq1,eq2,...', 'cond1,cond2,...', 'v')。 该语句求解由参数eq1、eq2等指定的方程组成的系统,初值条件为cond1、cond2等,v为自变量。

【例5-25】求微分方程组的解。 (1) (2)

解: (1) 第一步:在命令窗口输入如下程序。 >> syms x y z >> f=dsolve('Dy-z','Dz-y','x') 第二步:按“enter”键,得到的结果如下。 f = y: [1x1 sym] z: [1x1 sym]

(2) 第一步:在命令窗口输入如下程序。 >> syms x y t >> f=dsolve('D2x=y','D2y=x','t') 第二步:按“enter”键,得到的结果如下。 f = x: [1x1 sym] y: [1x1 sym]

5.5.5 复合方程 复合方程通过函数 compose 进行,该函数的调用格式为: compose(f,g) 返回函数f(g(y)),其中f=f(x),g=g(y),x是f的默认自变量,y是g的默认自变量; compose(f,g,z)

返回函数f(g(z)),自变量为z; compose(f,g,x,z) 返回函数f(g(z)),指定f的自变量为x; compose(f,g,x,y,z) 返回函数f(g(z)),f和g的自变量分别指定为x和y。

5.5.6 反方程 反方程通过函数finverse求得,该函数的调用格式为: g=finverse(f) 在函数f的反函数存在的情况下,返回函数f的反函数,自变量为默认自变量; g=finverse(f,v) 在函数f的反函数存在的情况下,返回函数f的反函数,自变量为v。

5.5 符号方程的求解 5.6.1 傅里叶(Fourier)变换及其逆变换 傅里叶变换由函数fourier实现,该函数的调用格式为: 5.5 符号方程的求解 5.6.1 傅里叶(Fourier)变换及其逆变换 傅里叶变换由函数fourier实现,该函数的调用格式为: F=fourier(f),实现函数f的傅里叶变换,如果f的默认自变量为x,则返回f的傅里叶变换结果,默认自变量为w;如果f的默认自变量为w,则返回结果的默认自变量为t; F=fourier(f,v),返回结果为v的函数; F=fourier(f,u,v),f的自变量为u,返回结果为v的函数。 傅里叶逆变换

傅里叶逆变换由函数ifourier实现,该函数的调用格式为: f=ifourier(F),实现函数F的傅里叶逆变换,如果F的默认自变量为w,则返回结果f的默认自变量为x,如果F的自变量为x,则返回结果f的自变量为t; f=ifourier(F,u),实现函数F的傅里叶逆变换,返回结果f为u的函数; f=ifourier(F,v,u),实现函数F的傅里叶逆变换,F的自变量为v,返回结果f为u的函数。

【例5-26】已知某函数的fourier变换为,求该函数f(t)。 解: 第一步:在命令窗口输入如下程序。 >> syms t >> F=sin()/ >> f = ifourier(F,,t) 第二步:按“enter”键,得到的结果如下。 f=fourier(sin()/, , t)/(2*pi)

【例5-27】求一下函数的傅里叶逆变换。 (1) =costsint (2)

解: (1) 第一步:在命令窗口输入如下程序。 >> syms t >> f=cos(t)*sin(t) >> F=fourier(f) 第二步:按“enter”键,得到的结果如下。 F=fourier(cos(t)*sin(t), t, -)

(2) 第一步:在命令窗口输入如下程序。 >> syms t >> f=(sin(t))^3 >> F=fourier(f) 第二步:按“enter”键,得到的结果如下。 F =fourier(sin(t)^3, t, -w)

5.6.2 符号拉普拉斯(Laplace)变换及其逆变换 laplace(F),实现函数F的拉普拉斯变换,如果F的默认自变量为t,返回结果的默认自变量为s;如果F的默认自变量为s,则返回结果为t的函数; laplace(F,t),返回函数的自变量为t; laplace(F,w,z),指定F的自变量为w,返回结果为z的函数;

拉普拉斯逆变换由函数ilaplace实现,该函数的调用格式为: F=ilaplace(L),实现函数L的拉普拉斯逆变换,如果L的自变量为s,则返回结果为t的函数;如果L的自变量为t,则返回结果为x的函数; F=ilaplace(L,y),返回结果为y的函数; F=ilaplace(L,y,x),指定L的自变量为y,返回结果为x的函数。

(1) 第一步:在命令窗口输入如下程序。 >> syms t s >> y=sin(t/2) >> f=laplace(y,t,s) %返回结果为s的函数 第二步:按“enter”键,得到的结果如下。 f=1/(2*(s^2 + 1/4))

(2) 第一步:在命令窗口输入如下程序。 >> syms t s >> y=t^2 >> f=laplace(y,t,s) 第二步:按“enter”键,得到的结果如下。 f=2/s^3

(3) 第一步:在命令窗口输入如下程序。 >> syms t s >> y=cos(t)*sin(t) >> f=laplace(y,t,s) 第二步:按“enter”键,得到的结果如下。 f= - ((s - i)*i)/(2*((s - i)^2 + 1)) + ((s + i)*i)/(2*((s + i)^2 + 1))

【例5-29】求的原函数f(t). 解: 第一步:在命令窗口输入如下程序。 >> syms s t y=(s+2)/(s^2+4*s+3) f=ilaplace(y,s,t) 第二步:按“enter”键,得到的结果如下。 f=1/(2*exp(t)) + 1/(2*exp(3*t))

5.6.3 符号Z变换及其逆变换 Z变换由函数ztrans完成,该函数的用法为: F=ztrans(f),如果f的默认自变量为n,则返回结果为z的函数;如果f为函数z的函数,则返回结果为w的函数; F=ztrans(f,w),返回结果为w的函数; F=ztrans(f,k,w),f的自变量为k,返回结果为w的函数。 Z逆变换由函数iztrans完成,其调用格式为: f=iztrans(F),若F的默认自变量为z,则返回结果为n的函数;如果F是n的函数,则返回结果为k的函数; f=iztrans(F,k),指定返回结果为k的函数; f=iztrans(F,w,k),指定F的自变量为w,返回结果为k的函数。

【例5-30】求下列函数的Z变换。 (1) (2)  f=tan(x+2) 解: (1) 第一步:在命令窗口输入如下程序。 >> syms n >> f=n^2 >> F=ztrans(f) 第二步:按“enter”键,得到的结果如下。 F=(z^2 + z)/(z - 1)^3

(2) 第一步:在命令窗口输入如下程序。 >>syms n >>f=tan(x+2) >>F=ztrans(f) 第二步:按“enter”键,得到的结果如下。 F =z^2*ztrans(tan(x), x, z) - z*tan(1)

【例5-31】求的Z反变换。 解: 第一步:在命令窗口输入如下程序。 >> syms x z >> F=2*z/(z-2)^2 >> f=iztrans(F,z,x) 第二步:按“enter”键,得到的结果如下。 f=2^x*(x - 1) + 2^x