SymPy - Bộ giải

Vì các ký hiệu = và == được định nghĩa là các toán tử gán và bình đẳng trong Python, chúng không thể được sử dụng để lập phương trình ký hiệu. SymPy cung cấp hàm Eq () để thiết lập một phương trình.

>>> from sympy import * 
>>> x,y=symbols('x y') 
>>> Eq(x,y)

Đoạn mã trên cho kết quả tương đương với biểu thức bên dưới:

x = y

Vì x = y khả thi nếu và chỉ khi xy = 0, phương trình trên có thể được viết dưới dạng:

>>> Eq(x-y,0)

Đoạn mã trên cho kết quả tương đương với biểu thức bên dưới:

x − y = 0

Mô-đun bộ giải trong SymPy cung cấp hàm soveset () có nguyên mẫu như sau:

solveset(equation, variable, domain)

Miền theo mặc định là S.Complexes. Sử dụng hàm solveset (), chúng ta có thể giải một phương trình đại số như sau:

>>> solveset(Eq(x**2-9,0), x)

Kết quả sau thu được:

{−3, 3}

>>> solveset(Eq(x**2-3*x, -2),x)

Kết quả sau nhận được sau khi thực thi đoạn mã trên:

{1,2}

Đầu ra của tập giải là một Tập hữu hạn của các giải pháp. Nếu không có giải pháp nào, EmptySet được trả về

>>> solveset(exp(x),x)

Kết quả sau nhận được sau khi thực thi đoạn mã trên:

$\varnothing$

Phương trình đường thẳng

Chúng ta phải sử dụng hàm linsolve () để giải các phương trình tuyến tính.

Ví dụ, các phương trình như sau:

xy = 4

x + y = 1

>>> from sympy import * 
>>> x,y=symbols('x y') 
>>> linsolve([Eq(x-y,4),Eq( x + y ,1) ], (x, y))

Kết quả sau nhận được sau khi thực thi đoạn mã trên:

$\lbrace(\frac{5}{2},-\frac{3}{2})\rbrace$

Hàm linsolve () cũng có thể giải các phương trình tuyến tính được biểu diễn dưới dạng ma trận.

>>> a,b=symbols('a b') 
>>> a=Matrix([[1,-1],[1,1]]) 
>>> b=Matrix([4,1]) 
>>> linsolve([a,b], (x,y))

Chúng tôi nhận được kết quả sau nếu chúng tôi thực thi đoạn mã trên -

$\lbrace(\frac{5}{2},-\frac{3}{2})\rbrace$

Phương trình phi tuyến tính

Với mục đích này, chúng tôi sử dụng hàm nonlinsolve (). Phương trình cho ví dụ này -

a 2 + a = 0 ab = 0

>>> a,b=symbols('a b') 
>>> nonlinsolve([a**2 + a, a - b], [a, b])

Chúng tôi nhận được kết quả sau nếu chúng tôi thực thi đoạn mã trên -

$\lbrace(-1, -1),(0,0)\rbrace$

phương trình vi phân

Đầu tiên, tạo một hàm không xác định bằng cách chuyển hàm cls = Hàm cho hàm ký hiệu. Để giải phương trình vi phân, hãy sử dụng dsolve.

>>> x=Symbol('x') 
>>> f=symbols('f', cls=Function) 
>>> f(x)

Kết quả sau nhận được sau khi thực thi đoạn mã trên:

f(x)

Ở đây f (x) là một hàm vô nghiệm. Đạo hàm của nó như sau:

>>> f(x).diff(x)

Đoạn mã trên cho kết quả tương đương với biểu thức bên dưới:

$\frac{d}{dx}f(x)$

Đầu tiên chúng ta tạo đối tượng Eq tương ứng với phương trình vi phân sau

>>> eqn=Eq(f(x).diff(x)-f(x), sin(x)) 
>>> eqn

Đoạn mã trên cho kết quả tương đương với biểu thức bên dưới:

$-f(x) + \frac{d}{dx}f(x)= \sin(x)$

>>> dsolve(eqn, f(x))

Đoạn mã trên cho kết quả tương đương với biểu thức bên dưới:

$f(x)=(c^1-\frac{e^-xsin(x)}{2}-\frac{e^-xcos(x)}{2})e^x$