背景介绍:
由于 MATLAB 自身的语法调整,关于 MATLAB 符号运算网上不少教程中的内容在 MATLAB 2019a 以及更高版本上要稍做改动才能调通。
但往往去找教程的都是初学者,不知道怎么做这个“稍微的改动”。
Sugar 下面就给出几个简单的例子,一学就会的那种。看到的就省了再去网上海量搜索的时间了。
本文使用 MATLAB 2020a
syms
定义符号
symbol
是符号
的意思。在 MATLAB 里定义符号变量的函数用这个单词的前三个字母来命名,即:sym()
。使用方法如下图:
用 sym()
函数定义符号变量要多敲好几下键盘,更简单的办法是用 syms
来定义变量,方法如下:
符号表达式
大多数时候对数学的理论研究是对符号表达式展开的,比如抛物线的三种形式:
在《MATLAB 动画没有密秘》一文中绘制图像是通过把数据给各种函数来实现的。绘图可以直观地看出函数的图像,但没法研究上图中抛物线表达式的变化问题。因为同一个抛物线可以对应不同的表达式,反之不同的表达式产生的数据可能是同一个抛物线。
当研究表达式变化的时候,就需要用到 MATLAB 的“符号表达式”,如下图:
注意:在 MATLAB 里的乘号不能省略。
符号表达式的数值解
eval()
函数用于:获得符号表达式的数值解。
当使用 plot()
等函数来画图的时候需要的是数值,通过“符号表达式”来获取数值的函数是 eval()
函数。例如在上面的两点式抛物线表达式y=(x-1)*(x-3)
中,我们可以在指定 x 的数值后用y=eval(y)
来获得该符号表达式作用下相当的 y 值,如下图:
符号表达式的展开
expand()
函数用于:将带括号的符号表达式展开成一般式。
符号表达式的因式分解
factor()
函数用于:将一般式分解成带括号的各因式乘积的形式。
方程的符号解
solve()
函数用于:求符号表达式对应方程的符号解。
以一元二次方程的求解为例,如果忘记了求根公式,solve()
一下就想起来了,如下图:
solve()
函数默认以 x
为自变量,可以显示指明其他符号变量为自变量,如下图:
PS
MATLAB 的语法正在变得越来越方便,在数学表达式的写法上越来越靠近 Python、C 这样的编程语言。
Python 的 SymPy
与 MATLAB 的符号运算功能一样,但 Sugar 还是推荐有 MATLAB 就用 MATLAB,因为与 Python 相比同样的功能按键次数更少,而且工作空间内随时可以查看变量值。
关注作者
欢迎扫码关注我的公众号MultiMCU EDU
。