Laptop

Thư viện SymPy của Python giúp toán học dễ dàng – Dưới đây là 6 công dụng thực tế

Thu vien SymPy cua Python giup toan hoc de dang Duoi day la 6 cong dung thuc te1

Nếu việc nhắc đến đại số gợi lên những ký ức không vui về các lớp học toán, một thư viện Python có tên là SymPy có thể thay đổi suy nghĩ của bạn về môn học này. Với SymPy, các phép toán đại số trở nên dễ dàng hơn so với việc tính toán thủ công tẻ nhạt và thú vị hơn rất nhiều. Dưới đây là những gì bạn có thể làm với SymPy.

Xem thêm: Hướng dẫn cách nâng cấp Windows 10 (BIOS) lên Windows 11 (UEFI) mà không làm mất dữ liệu

1. SymPy là gì?

SymPy là một thư viện hệ thống đại số máy tính (CAS) dành cho Python. Trong khi một máy tính bỏ túi hoạt động trên các con số, SymPy hoạt động trên các biểu thức ký hiệu. Nó tương tự như Wolfram Alpha, Mathematica và Maple, nhưng hoàn toàn miễn phí và mã nguồn mở.

Các hệ thống đại số máy tính khác sử dụng ngôn ngữ riêng của chúng, nhưng vì SymPy sử dụng Python, nếu bạn biết Python, bạn đã biết phần lớn về SymPy, ngoại trừ các hàm thư viện cụ thể.

Với SymPy, bạn có thể thực hiện các phép tính toán đại số một cách dễ dàng, giải phương trình, và thậm chí cả các phép toán vi tích phân như đạo hàm và tích phân, mà không cần phải thực hiện tất cả các phép tính tay tẻ nhạt đó.

Trước khi tôi bị bất kỳ giáo viên toán nào chú ý, nếu bạn đang học một lớp mà bạn phải trình bày bài làm viết tay của mình, SymPy vẫn là một công cụ giáo dục có giá trị. Bạn có thể kiểm tra đáp án của mình bằng SymPy, và bạn có thể khám phá các khái niệm dễ dàng hơn so với làm bằng tay. Làm việc với phần mềm toán học một cách tương tác khuyến khích một tư duy khám phá, nơi bạn có thể chạy các kịch bản “sẽ ra sao nếu?”, chẳng hạn như thay đổi giá trị của một hàm để xem đồ thị của nó thay đổi như thế nào.

2. Cài đặt SymPy

Để cài đặt SymPy, bạn có thể sử dụng pip tại dòng lệnh:

pip install sympy

Bạn cũng có thể sử dụng một công cụ như Conda hoặc Mamba, nếu bạn có dùng chúng.

Trên Mamba, để cài đặt vào môi trường hiện tại:

mamba install sympy

3. Định nghĩa biến

Trước khi bạn có thể làm việc với các biến, bạn sẽ phải định nghĩa chúng bằng SymPy. Cách tốt nhất để làm việc với SymPy là trong một phiên tương tác, chẳng hạn như trong IPython hoặc Jupyter notebook.

Để nhập tất cả các hàm của SymPy vào một phiên, hãy sử dụng lệnh này:

from sympy import *

Thu vien SymPy cua Python giup toan hoc de dang Duoi day la 6 cong dung thuc te8

Bạn cũng sẽ muốn bật tính năng “pretty-printing” (in đẹp). Điều này sẽ làm cho đầu ra của SymPy trông giống hơn với những gì bạn thấy trong sách giáo khoa toán hoặc khoa học. Trong Jupyter Notebook, SymPy sẽ hiển thị kết quả bằng LaTeX, một ngôn ngữ sắp chữ được sử dụng rộng rãi trong xuất bản STEM.

Chỉ cần sử dụng phương thức init_printing:

init_printing()

Với SymPy đã được tải, chúng ta có thể bắt đầu khám phá các khả năng của nó.

Bạn chỉ cần gõ một con số, chẳng hạn như 2, tại dấu nhắc:

2

SymPy sẽ in ra 2, được hiển thị đẹp mắt. Sự khác biệt chính giữa các phép toán số học mà bạn có thể đã quen thuộc trên máy tính khoa học và một hệ thống đại số máy tính như SymPy là bạn đang làm việc với các giá trị xấp xỉ dấu phẩy động trong khi SymPy xử lý các số và ký hiệu chính xác.

Việc lấy căn bậc hai bằng thư viện số so với trong SymPy sẽ thể hiện rõ sự khác biệt này.

Trước tiên, hãy lấy căn bậc hai bằng NumPy:

import numpy as np
np.sqrt(2)

Bạn sẽ nhận được một giá trị xấp xỉ số học, vì 2 không phải là một số chính phương.

So sánh điều này với kết quả của SymPy:

sqrt(2)

Vì đây không phải là một số chính phương, SymPy sẽ chỉ để nguyên không đánh giá. Bạn có thể nhận được một giá trị xấp xỉ số học nếu bạn muốn bằng hàm N.

N(sqrt(2))

Ngoài ra, bạn có thể thêm .evalf() vào một phép toán chính xác mà bạn muốn có giá trị xấp xỉ số học.

sqrt(2).evalf()

Tôi thích cách trước hơn vì “N” (viết tắt của “numeric” – số học) dường như dễ nhớ hơn đối với tôi. Nó cũng tương tự như cách các chương trình toán học khác như Mathematica hoạt động.

Điều thú vị hơn là cách SymPy xử lý căn bậc hai có chứa các số chính phương:

sqrt(56)

Thu vien SymPy cua Python giup toan hoc de dang Duoi day la 6 cong dung thuc te7

SymPy sẽ tự động phân tích nhân tử các số chính phương ra khỏi căn bậc hai.

Để thực hiện các phép toán đại số, bạn phải khai báo các biến ký hiệu. Hãy lấy cảm hứng từ René Descartes và định nghĩa các biến cổ điển xy bằng hàm symbols:

x,y = symbols('x y')

Lưu ý rằng giữa các biến trong hàm symbols, bạn không gõ dấu phẩy mà là một dấu cách.

Nếu chúng ta chỉ gõ chúng tại dấu nhắc, chúng sẽ được in ra riêng lẻ.

x
y
sqrt(x)

4. Các phép toán đại số cơ bản

Thu vien SymPy cua Python giup toan hoc de dang Duoi day la 6 cong dung thuc te6

Với các biến đã được định nghĩa, chúng ta có thể thực hiện các phép toán với chúng. Nếu bạn lấy căn bậc hai của , nó sẽ hiển thị căn bậc hai chưa được tính dưới ký hiệu căn, giống như chúng ta đã làm với số trước đó:

sqrt(x)

Chúng ta cũng có thể định nghĩa các phép toán khác, chẳng hạn như cộng, nhân và chia các biến:

x*2
x*y
2*x * y
2*x + 3*y
x / y
(2*x) / y

Khi viết các biểu thức đại số bằng tay, bạn có thể bỏ qua dấu nhân, nhưng bạn sẽ cần phải làm cho phép nhân rõ ràng bằng cách sử dụng toán tử * của Python. Dấu ngoặc đơn có tác dụng nhóm phép toán , để SymPy không nghĩ rằng chúng ta đang cố gắng chia cho rồi nhân kết quả đó với .

Bạn cũng có thể thay thế các biến trong các biểu thức đại số với SymPy. Hãy định nghĩa một biểu thức:

expr = 2*x + 3*y

Chúng ta có thể sử dụng phương thức subs của một biểu thức để thay thế một biến bằng một giá trị bằng cách cung cấp biến và giá trị bạn muốn thay thế nó: Ví dụ, để thay cho :

expr.subs(x,2)

Bạn cũng có thể thay thế bằng các biểu thức khác:

expr.subs(x,2*x)

5. Khai triển và phân tích thành nhân tử

Thu vien SymPy cua Python giup toan hoc de dang Duoi day la 6 cong dung thuc te5

Mặc dù bạn có thể thực hiện các phép toán số học cơ bản trong SymPy, nhưng nó sẽ không tự động nhân các đa thức với nhau trừ khi bạn yêu cầu. Một biểu thức nhị thức như thế này sẽ giữ nguyên không được tính toán:

(2*x + 3*y) * (5*x**2 - 4*y)

Để có được kết quả nhân các đa thức này, hãy sử dụng hàm expand:

expand((2*x + 3*y) * (5*x**2 - 4*y))

Thao tác này sẽ nhân hai đa thức này với nhau bằng cách sử dụng tính chất phân phối. Điều tương tự cũng hoạt động với các biểu thức lớn hơn, chẳng hạn như một nhị thức nhân với một tam thức:

expand((2*x + 3*y) * (5*x**2 - 4*y))

Bạn cũng có thể phân tích thành nhân tử (factor) các biểu thức để làm điều ngược lại, để đưa một phép toán đã được khai triển về dạng ban đầu của nó:

factor(10*x**3 + 15*x**2*y - 8*x*y - 12*y**2)

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

Thu vien SymPy cua Python giup toan hoc de dang Duoi day la 6 cong dung thuc te4

Bạn có thể dành cả ngày để khai triển và phân tích các biểu thức, nhưng điều mà SymPy thực sự hữu ích là giải các phương trình. Các phương trình đơn giản nhất để giải là phương trình tuyến tính, chẳng hạn như . Bạn có thể giải bất kỳ phương trình nào bằng bằng hàm solve:

solve(5*x - 3,x)

Biểu thức là đối số đầu tiên, theo sau là biến bạn muốn giải.

Nếu bạn có một phương trình như , bạn có thể sắp xếp lại phương trình để nó bằng hoặc sử dụng đối tượng Eq. Đối với phương pháp đầu tiên, bạn sẽ trừ từ cả hai vế và giải cho :

solve(2*x + 3 - 30,x)

Một đối tượng bình đẳng (Eq) sẽ cho phép bạn biểu diễn các phương trình dưới dạng quen thuộc hơn. Bạn gọi hàm Eqvà cung cấp một bộ giá trị (tuple) với cả hai vế của phương trình.

eq = Eq(2*x + 3,30)

Bạn có thể giải nó bằng hàm solve như trước.

solve(eq,x)

Dù bằng cách nào, bạn sẽ nhận được kết quả trong một danh sách. Để truy cập vào các giá trị, chẳng hạn như để sử dụng chúng trong một hàm khác, bạn có thể lưu chúng vào một mảng:

solutions = solve(eq,x)

Trong khi các phương trình tuyến tính đơn giản rất dễ giải bằng tay, các phương trình bậc hai thì khó hơn. Chúng cũng dễ dàng giải quyết với SymPy:

solve(x**2 + 2*x + 3,x)

Bạn thậm chí có thể giải hệ phương trình:

eqn1 = Eq(3*x + 4*y,15)
eqn2 = Eq(5*x - 3*y,30)
solve([eqn1,eqn2],[x,y])

Các dấu ngoặc vuông cho biết rằng đây là các danh sách. Bạn cũng có thể sử dụng ma trận để giải hệ phương trình tuyến tính một cách gọn gàng hơn, điều mà tôi sẽ trình bày sau.

7. Vẽ đồ thị (Making Plots)

Thu vien SymPy cua Python giup toan hoc de dang Duoi day la 6 cong dung thuc te3

SymPy cho phép bạn thay thế máy tính bỏ túi vẽ đồ thị của mình bằng cách tạo ra các biểu đồ hàm số. Bạn có thể sử dụng hàm plot được tích hợp sẵn. Hãy vẽ một phương trình tuyến tính đơn giản:

plot(2*x + 3)

Định dạng cho các phương trình tuyến tính nên ở dạng hệ số góc-hệ số chặn quen thuộc, , trong đó là hệ số góc. Theo mặc định, hàm plot sẽ vẽ các giá trị hoặc bất kỳ giá trị nào trong phương trình từ -10 đến 10. Điều này cũng áp dụng cho bất kỳ biến nào bạn đặt vào đó.

Bạn có thể thay đổi điều này bằng cách cung cấp một bộ giá trị (tuple) gồm biến, giới hạn dưới và giới hạn trên. Để xem đồ thị của nằm giữa :

plot(2*x + 3,(x,2,5))

Điều tương tự cũng áp dụng cho các đa thức, chẳng hạn như phương trình bậc hai mà chúng ta đã giải trước đó:

plot(x**2 + 2*x + 3)

8. Vi tích phân và đại số tuyến tính

Thu vien SymPy cua Python giup toan hoc de dang Duoi day la 6 cong dung thuc te2

Mặc dù chúng dễ dàng xử lý đại số sơ cấp, nhưng các hệ thống đại số máy tính như Mathematica và Maple được sử dụng rộng rãi trong khoa học vì chúng làm cho vi tích phân (calculus) và đại số tuyến tính (linear algebra), cả hai đều phổ biến trong STEM nhưng tẻ nhạt khi thực hiện bằng tay, trở nên dễ quản lý hơn. Những phép tính này thậm chí còn xuất hiện trong các ngành khoa học xã hội như kinh tế học.

Tôi sẽ không giải thích nhiều về lý thuyết, nhưng nếu bạn quan tâm đến việc tìm hiểu thêm về vi tích phân và đại số tuyến tính, có rất nhiều tài nguyên trực tuyến và ngoại tuyến có sẵn, chẳng hạn như Khan Academy và sách giáo khoa miễn phí của OpenStax. Sách giáo khoa đại số đại học của họ cũng mô tả việc giải hệ phương trình tuyến tính bằng ma trận. Khan Academy cũng có một loạt bài về đại số tuyến tính.

Để tính đạo hàm đối với một biến, hãy sử dụng hàm diff:

diff(x**2 + 2*x + 3,x)

Tích phân hoạt động theo cách tương tự với hàm integrate:

integrate(x**2 + 2*x + 3,x)

Tuy nhiên, đầu ra không bao gồm hằng số tích phân.

Bạn có thể tính tích phân xác định trên một khoảng với một phương pháp tương tự như hàm plot đã được hiển thị trước đó. Ví dụ, để tính diện tích dưới đường cong cho hàm trước đó với các giá trị nằm giữa :

integrate(x**2 + 2*x + 3,(x,0,2))

Giải hệ phương trình tuyến tính cũng dễ dàng với SymPy. Chúng ta có thể tạo một ma trận vuông 3×3 ngẫu nhiênvới hàm randMatrix và sau đó xem nó:

A = randMatrix(3)
A

Chúng ta có thể tạo vector cột các biến mà chúng ta muốn giải một cách tương tự, tạo một cột đơn với ba hàng, hay một ma trận 3×1:

b = randMatrix(3,1)

Hãy lấy định thức để chúng ta có thể chắc chắn rằng hệ thống này có một nghiệm duy nhất:

det(A)

Vì định thức khác 0, chúng ta có thể tiếp tục giải hệ phương trình này. Ma trận hệ số mà chúng ta đã tạo có một phương thức solve mà chúng ta có thể sử dụng với vector cột làm đối số:

A.solve(b)

Trong thực tế, việc sử dụng NumPy cho một giải pháp số học có thể nhanh hơn.

Với SymPy, bạn có thể loại bỏ sự khó khăn của toán học ký hiệu bằng cách biến Python thành một siêu máy tính. Nếu bạn chưa bao giờ nghĩ mình là một “người giỏi toán,” việc sử dụng SymPy có thể biến bạn thành một người như vậy.

9. Kết luận

Thư viện SymPy của Python thực sự là một công cụ mạnh mẽ, biến các bài toán toán học phức tạp trở nên dễ dàng và trực quan hơn bao giờ hết. Từ giải phương trình, tính đạo hàm, tích phân, đến xử lý đại số tuyến tính và vẽ đồ thị, sáu công dụng thực tế mà chúng tôi đã chia sẻ chỉ là khởi đầu để bạn khám phá tiềm năng của SymPy. Dù bạn là sinh viên, nhà nghiên cứu hay lập trình viên, SymPy sẽ là người bạn đồng hành lý tưởng giúp tiết kiệm thời gian và nâng cao hiệu quả trong công việc toán học.

Xem thêm: Hướng dẫn cách bật TPM 2.0 trên BIOS bo mạch chủ AMD và Intel cho Windows 11

Nếu bạn cần các công cụ lập trình, phần cứng mạnh mẽ hoặc giải pháp công nghệ để hỗ trợ các dự án Python của mình, hãy ghé thăm COHOTECH – cửa hàng cung cấp sản phẩm và dịch vụ công nghệ chất lượng, luôn sẵn sàng đồng hành cùng bạn trên hành trình khám phá công nghệ!

Hãy chia sẻ trải nghiệm của bạn khi sử dụng SymPy hoặc bất kỳ ứng dụng thú vị nào của thư viện này trong phần bình luận bên dưới. Đừng quên chia sẻ bài viết này với bạn bè và cộng đồng lập trình để cùng nhau làm chủ toán học với Python nhé!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *