MATLAB使用速成 第六章(符号计算)

一、符号运算介绍

1、符号运算的特点

(1)符号运算以推理方式进行,不受计算误差累积所带来的困扰。

(2)符号计算可以给出完全正确的封闭解,或任意精度的数值解(封闭解不存在时)。

(3)符号计算指令的调用比较简单,与教科书上的公式相近。

(4)符号计算所需的运行时间相对较长。

2、MATLAB中的符号运算

(1)MATLAB的符号数学工具箱可以完成几乎所有得符号运算功能,如符号表达式的运算、符号矩阵的运算、符号微积分、符号作图、符号代数方程求解、符号微分方程求解等,此外,该工具箱还支持可变精度运算,即支持以指定的精度返回结果。

(2)符号运算举例:

①求一元二次方程ax^{2} + bx + c = 0的根:

②求函数f(x) = (cos x)^{2}的一次导数:

③计算f(x) = x^{2}在区间[a, b]上的定积分:

二、符号对象与基本符号运算

1、符号对象与符号表达式

(1)在进行符号运算时,必须先定义基本的符号对象,符号对象可以是符号变量、符号表达式等,其中符号表达式是含有符号对象的表达式,符号矩阵/数组是元素为符号表达式的矩阵/数组。

(2)符号对象使用sym、syms进行定义/声明。

①sym用来建立单个符号对象,一般调用格式为“<符号变量> = sym(x)”,参数x可以是一个数或数值矩阵,也可以是字符串。

②syms用来声明多个符号变量,一般调用格式为“syms <符号变量1> <符号变量2> ... <符号变量n>”。

(3)建立符号表达式通常有以下2种方法:

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

②用sym函数直接建立符号表达式。

(4)符号矩阵(包括矢量):

①符号矩阵可使用sym函数直接生成,也可将数值矩阵转化成符号矩阵。

②符号矩阵中元素的引用和修改操作与数值矩阵相似,这里不再赘述。

2、基本符号运算

(1)MATLAB符号运算采用的运算符和基本函数,在形状、名称和使用上都与数值计算中的运算符和基本函数完全相同。

(2)基本运算符:

(3)基本数学函数:三角函数与反三角函数、指数函数、对数函数等。

三、symvar、subs和vpa

1、symvar

(1)语句“symvar(s)”的作用是按字母顺序列出符号表达式s中的所有符号变量。

(2)语句“symvar(s, N)”的作用是列出符号表达式s中离x最近的N个符号变量(这个距离指的是两个符号变量对应的ASCII码的差距),若有两个符号变量与x的距离相等,则ASCII码大者优先。

2、subs

        语句“subs(s,x,a)”的作用是用a替换符号表达式s中的符号变量x,这里的a可以是数值表达式或符号表达式(符号变量若没有声明则需要加上单引号)。

3、vpa

        语句“vpa(s,n)”的作用是计算表达式s的值,保留n位有效数字,返回值是符号对象。

四、常见的符号计算

1、因式分解

(1)使用语句“factor(f)”可对符号表达式f进行因式分解。

(2)factor实际上也可用于正整数的分解,但对大整数进行因式分解前需要将其转化成符号常量,否则会报错。

2、函数展开

        使用语句“expand(f)”可将符号表达式对应的函数展开。

3、合并同类项

(1)使用语句“collect(f,v)”可对符号表达式f按指定变量v进行合并。

(2)使用语句“collect(f)”可对符号表达式f按默认变量进行合并,此时等效于使用语句“collect(f,1)”。

4、函数简化

(1)使用语句“simplify(f)”可对符号表达式f对应的函数进行化简。

(2)使用语句“y=simple(f)”也可对符号表达式对应的函数进行化简,不过它会对f尝试多种不同的方法(包括simplify)进行简化,以寻求其最简短形式。

(3)使用语句“[N,D]=numden(f)”可对符号表达式f对应的函数进行通分,分子存放在N中,分母存放在D中。

(4)使用语句“horner(f)”可将符号表达式f对应的函数转化为horner多项式。

5、计算极限

        极限的计算可使用命令limit,如下所示,其中f为符号表达式,x为符号变量。

6、计算导数

        导数的计算可使用命令diff,如下所示,其中f为符号表达式,v为符号变量。

7、计算积分

        积分的计算可使用命令int,如下所示,其中f为符号表达式,v为符号变量。

8、级数求和

        级数的计算可使用命令symsum,如下所示,其中f为符号表达式,v为符号变量,另外b可以取Inf(无穷大),这样就可以计算无穷级数。

9、反函数

        反函数的计算可使用命令symsum,如下所示,其中f为符号表达式,v为符号变量。

10、代数方程求解

(1)solve:

①语句“solve(f,v)”可对方程f = 0以v为求解变量进行求解,如果省略v则是对默认变量进行求解。

②solve也可以用来解方程组,具体语句为“solve(f1,f2, ...,fn, v1,v2, ...,vn)”,其中f为方程组中各方程对应的符号表达式,v为需要求解的变量。

(2)dsolve:

①dsolve可用于求解微分方程,具体语句为“dsolve('eq1','eq2', ... ,'cond1','cond2', ... ,'v')”,其中y为输出的解,eq1、eq2、... 为微分方程,cond1、cond2、... 为初值条件(如果省略初值条件,则表示求通解),v为自变量(如果省略自变量,则默认自变量为t)。

②微分方程中用D表示对自变量的导数,如Dy表示y对自变量的一阶导数,D2y表示y对自变量的二阶导数。

③若dsolve找不到解析解,则返回其积分形式。只有很少一部分微分方程(组)能求出解析解,大部分微分方程(组)只能利用数值方法求数值解。

④dsolve的输出个数只能为一个或与方程个数相等,如果所给的输出个数与方程个数相同,则方程组的解按词典顺序输出,如果只给一个输出,则输出的是一个包含解的结构类型的数据。

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用Matlab符号计算功能可以方便地进行极限、积分、微分等运算,下面分别介绍如何使用Matlab进行这些计算。 1. 极限计算 Matlab中可以使用 `limit` 函数来计算极限。该函数的语法格式如下: ``` L = limit(f,x,a) ``` 其中,`f` 表示函数表达式,`x` 表示自变量,`a` 表示自变量趋近的值。最终的结果 `L` 表示当自变量趋近于 `a` 时,函数 `f` 的极限值。 例如,计算函数 $\displaystyle\lim_{x\to 0}\frac{\sin x}{x}$ 的极限,可以使用以下代码实现: ``` syms x; f = sin(x)/x; L = limit(f,x,0); ``` 运行结果 `L` 即为极限值。 2. 积分计算 Matlab中可以使用 `int` 函数来计算定积分。该函数的语法格式如下: ``` I = int(f,x,a,b) ``` 其中,`f` 表示被积函数,`x` 表示积分变量,`a` 和 `b` 分别表示积分区间的下限和上限。最终的结果 `I` 表示被积函数在 `[a,b]` 区间上的定积分值。 例如,计算函数 $f(x)=\sin x$ 在区间 $[0,\pi]$ 上的定积分,可以使用以下代码实现: ``` syms x; f = sin(x); I = int(f,x,0,pi); ``` 运行结果 `I` 即为定积分值。 3. 微分计算 Matlab中可以使用 `diff` 函数来计算函数的导数。该函数的语法格式如下: ``` df = diff(f,x) ``` 其中,`f` 表示函数表达式,`x` 表示自变量。最终的结果 `df` 表示函数 `f` 在 `x` 处的导数值。 例如,计算函数 $f(x)=x^2$ 在 $x=1$ 处的导数,可以使用以下代码实现: ``` syms x; f = x^2; df = diff(f,x); df_value = subs(df,x,1); ``` 运行结果 `df_value` 即为导数值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值