Python 符号运算
背景介紹:
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
參考《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})}")三、更多功能
如上圖,jupyter 還支持更 MarkDown 等更多功能,使用方法也是動手弄一弄就會。結合這些功能一起,就能理解為什么叫 jupyter notebook 了,這實在是做代碼筆記的不二之選。
簡書上有一篇《Jupyter Notebook介紹、安裝及使用教程》非常詳細地講述了 jupter 從安裝到使用以及加入其他功能插件的各種操作。
PS
對于數學工具,Sugar 推薦相似功能先學習 Matlab 再學 Python,Matlab 環境下查看變量和斷點調試更方便。
關注作者
歡迎掃碼關注我的公眾號MultiMCU EDU。
提示:在公眾號“關于我”頁面可加作者微信好友。
喜歡本文求點贊,有打賞我會更有動力。
總結
以上是生活随笔為你收集整理的Python 符号运算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: baseresponse响应类_Spri
- 下一篇: python做什么模型_用python做