2022年 11月 3日

Python 符号运算

背景介绍:
Sugar 起初在 MultiMCU EDU 上写的都是有飞控、嵌入式操作系统、控制算法类的推文。
最近推的 Matlab 和 Python 似乎与 MCU 不在一个世界里,其实不然。机器人身上的 MCU 所跑的程序是有运行控制算法的,而控制算法的学习必须有扎实的数学功底。
当代学数学除了 Matlab 工具可用,还有开源的 Python 模块。学数学必须借助好工具,把抽象变具象才能理解。本篇 Sugar 就来说一说 Python 中的符号运算。

sympy

一、安装 sympy 模块

Sugar 使用 Python 3.8.6 安装 sympy 模块,安装命令如下:

pip install sympy
  • 1

二、sympy 使用

1、symbols() 函数定义符号

import sympy as sy
x,y = sy.symbols("x y")
  • 1
  • 2

如上定义 xy 为符号变量,可以用 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

参考《Python安装Jupyter Notebook配置使用教程》

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})}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

三、更多功能

如上图,jupyter 还支持更 MarkDown 等更多功能,使用方法也是动手弄一弄就会。结合这些功能一起,就能理解为什么叫 jupyter notebook 了,这实在是做代码笔记的不二之选。

简书上有一篇《Jupyter Notebook介绍、安装及使用教程》非常详细地讲述了 jupter 从安装使用以及加入其他功能插件的各种操作。

PS

对于数学工具,Sugar 推荐相似功能先学习 Matlab 再学 Python,Matlab 环境下查看变量和断点调试更方便。

关注作者

欢迎扫码关注我的公众号MultiMCU EDU

提示:在公众号“关于我”页面可加作者微信好友。

喜欢本文求点赞,有打赏我会更有动力。