背景介绍:
Sugar 起初在 MultiMCU EDU 上写的都是有飞控、嵌入式操作系统、控制算法类的推文。
最近推的 Matlab 和 Python 似乎与 MCU 不在一个世界里,其实不然。机器人身上的 MCU 所跑的程序是有运行控制算法的,而控制算法的学习必须有扎实的数学功底。
当代学数学除了 Matlab 工具可用,还有开源的 Python 模块。学数学必须借助好工具,把抽象变具象才能理解。本篇 Sugar 就来说一说 Python 中的符号运算。
sympy
一、安装 sympy 模块
Sugar 使用 Python 3.8.6 安装 sympy 模块,安装命令如下:
pip install sympy
二、sympy 使用
1、symbols() 函数定义符号
import sympy as sy
x,y = sy.symbols("x y")
如上定义 x 和 y 为符号变量,可以用 type() 函数查看变量类型,如下:

2、字符表达式输出方法:
f"...{}"字符串前加f对{}里的内容格式化输出。

3、符号表达式的数值解
subs()函数用于将表达式里的变量替换成数值。
f字符串里凡是要求值的地方都用{}括起来。

4、变量替换(适用于复合函数)
subs()函数可以将表达式里的变量替换成其他符号表达式。

5、算术表达式求值
Rational(a,b)表示分数a/b。
sqrt(a)表示求a的平方根。
evalf()函数用于求算数表达式的数值解。

6、输出更易懂的表达式
先
init_printing()再pprint()就能以更易懂的方式输出符号表达式。

7、输出更专业的表达式
这里要用到
jupyter notebook,关于 jupyter 的安装和使用 Sugar 下面会单独说。

sympy 模块更多强大的功能可以参考简书上的《Python科学计算利器——SymPy库》,以上内容 Sugar 有参照知乎上的《sympy: 符号运算-1》,在知乎专栏《sympy:符号运算》中有更多内容。本篇意在让初学者简单入门,选得都是简单好用的示例,避免初学者看一大篇长文引起畏难情绪。
jupyter
jupyter notebook 是用来学代码的不二之选,相当于一个活的可运行的代码笔记,功能上类似于 Matlab 的实时脚本。
一、安装 jupyter
pip 安装命令 pip install jupyter
二、简单配置和使用
1、换 jupyter notebook 启动目录
(1) 在 D 盘新建文件夹 D:\jupyter_notebook
(2) 生成配置文件,命令是:jupyter notebook --generate-config
(3) 修改配置文件(搜索关键词 c.NotebookApp.notebook_dir),如下图:

2、基本使用:在 jupyter 里用 python3 输出公式。
(1) 在 Windows PowerShell 里输入命令 jupyter notebook 打开 jupyter 网页,然后新建 Python3 文件,如下图:

(2) 自动跳转到 Python3 页面,如下图:

(3) 输入如下代码并运行,结果如代码下面的图:
from IPython.display import display, Latex
import sympy as sy
sy.init_printing()
x,y=sy.symbols("x y")
f=x**2+3*x-5
display(Latex(f"$$f(x)={sy.latex(f)}$$"))
xx=3
sy.pprint(f"f({xx})={f.subs({x:xx})}")
yy=4
f1=sy.sqrt(x**2+y**2)
display(Latex(f"$$f_1(x,y)={sy.latex(f1)}$$"))
sy.pprint(f"f1({xx},{yy})={f1.subs({x:xx, y:yy})}")

三、更多功能

如上图,jupyter 还支持更 MarkDown 等更多功能,使用方法也是动手弄一弄就会。结合这些功能一起,就能理解为什么叫 jupyter notebook 了,这实在是做代码笔记的不二之选。
简书上有一篇《Jupyter Notebook介绍、安装及使用教程》非常详细地讲述了 jupter 从安装到使用以及加入其他功能插件的各种操作。
PS
对于数学工具,Sugar 推荐相似功能先学习 Matlab 再学 Python,Matlab 环境下查看变量和断点调试更方便。
关注作者
欢迎扫码关注我的公众号MultiMCU EDU。

Python中的符号运算:sympy与jupyter实战
本文介绍了Python的符号运算库sympy的安装和使用,包括定义符号、数值解、变量替换等功能,并探讨了jupyter notebook的安装、配置和使用,作为学习代码和数学表达式的强大工具。同时,建议学习者先掌握Matlab再学习Python的符号运算。
501

被折叠的 条评论
为什么被折叠?



