Hướng dẫn python symbolic expression - biểu thức tượng trưng python

I. SymPy là gì?

Chỉ cần nhìn qua vào cái tên SymPy, chúng ta cũng có thể mù mờ đoán ra mục đích của nó để làm gì. Sym là Symbol; Py là Python; vậy có thể đoán ra SymPy làm gì đó với symbol trên ngôn ngữ Python.hỉ cần nhìn qua vào cái tên SymPy, chúng ta cũng có thể mù mờ đoán ra mục đích của nó để làm gì. Sym là Symbol; Py là Python; vậy có thể đoán ra SymPy làm gì đó với symbol trên ngôn ngữ Python.

Trên trang chủ của mình, SymPy được mô tả như sau “a Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS)”.

II. Các tính năng nổi bật của Sympy

  1. Biểu diễn các biến của các biểu thức trong toán học:
In [1]: from sympy import Symbol, symbolsIn [3]: x = Symbol('x')In [4]: x + 1Out[4]: x + 1In [5]: x + 1 + x**2Out[5]: x**2 + x + 1In [7]: x, y, z = symbols('x y z')In [22]: expression = x + 10In [23]: expression.subs({x: 1})

2. Phân tích, khai triển các biểu thức:

Function factor và expand có hai nhiệm vụ trái ngược nhau: hàm expand dùng để khai triển biểu thức, còn factor dùng để phân tích phân tử.

In [10]: from sympy import factor, expandIn [11]: expression1 = (x + 1) ** 4In [14]: expand(expression1)Out[14]: x**4 + 4*x**3 + 6*x**2 + 4*x + 1In [16]: expression2 = x**2 + 2 * x + 1In [17]: factor(expression2)Out[17]: (x + 1)**2

3. Tính đạo hàm:

Function diff nằm trong thư viện SymPy có nhiệm vụ tính đạo hàm của biểu thức. Function này gồm 3 agruments theo thứ tự sau:

  • Biểu thức cần đạo hàm (VD: x ** 4 + 2)
  • Biến cần đạo hàm.
  • Số bậc cần đạo hàm (default = 1)
In [18]: from sympy import diff
In [19]: diff(x ** 2 + 1, x)Out[19]: 2*x
In [20]: diff(x ** 4 + 1, x, 2)
Out[20]: 12*x**2

4. Giải phương trình

Hàm solve sẽ giải input expression = 0 và return lại 1 list gồm các nghiệm. Có thể dùng thêm option dict=True nếu muốn return về 1 list của các dictionaries.

In [26]: from sympy import solve
In [29]: expression = x**2 + 2 * x + 1
In [30]: solve(expression)Out[30]: [-1]
In [31]: solve(expression, dict=True)Out[31]: [{x: -1}]
In [32]: expression = x**2 + 2 * x + 1 + y
In [33]: solve(expression, x,dict=True)Out[33]: [{x: -sqrt(-y) - 1}, {x: sqrt(-y) - 1}]

5. Giải hệ phương trình:

Với hàm solve, ta cũng có thể giải 1 hệ phương trình. Lưu ý, khi không dùng option dict=True hàm sẽ return lại 1 dictionary, nếu muốn nhét cái dict này vào list thì ta phải dùng dict=True.không dùng option dict=True hàm sẽ return lại 1 dictionary, nếu muốn nhét cái dict này vào list thì ta phải dùng dict=True.

In [36]: solve((expr1, expr2))Out[36]: {x: 24/5, y: -6/5}In [37]: solve((expr1, expr2))Out[37]: {x: 24/5, y: -6/5}
In [39]: solve((expr1, expr2), dict=True)
Out[39]: [{x: 24/5, y: -6/5}]

III. Bonus ví dụ vui;

  • Tính kết quả của 1 chuỗi:
In [45]: series = xIn [46]: for i in range(1, 10):...:     series += (x**i) / (2 * i)...:In [47]: seriesOut[47]: x**9/18 + x**8/16 + x**7/14 + x**6/12 + x**5/10 + x**4/8 + x**3/6 + x**2/4 + 3*x/2In [48]: from sympy import pprintIn [49]: pprint(series)

IV. Tổng kết

SymPy là một thư viện khá mạnh trong việc xử lí toán học trong Python. Ngoài các tính năng nổi bật trên, thư viện này còn có các tính năng khác như plot các hàm, biểu diễn matrices, …. nhưng không quá nổi bật nên mình không đề cập trong bài này. Nếu các bạn muốn tìm hiểu thêm đọc tại:

Thanks for reading ❤️