Python có thể giải quyết một biến không?

NumPy. Giải hệ phương trình tuyến tính

Đầu tiên chúng ta xem xét một hệ phương trình tuyến tính với hai biến $x$ và $y$

Chúng tôi chọn một ví dụ từ văn bản cổ điển của Hall & Knight Đại số sơ cấp 1

$$ 3x + 7y = 27 \\ 5x + 2y = 16 $$

Điều này có thể được đặt ở dạng sản phẩm chấm ma trận như

$$ \begin{bmatrix} 3 & 7 \\ 5 & 2 \\ \end{bmatrix} \cdot \begin{bmatrix} x \\ y \\ \end{bmatrix} = \begin{bmatrix} 27 \\ 16

Nếu $A$ đại diện cho ma trận các hệ số, $x$ vectơ cột biến và $B$ vectơ cột nghiệm thì phương trình trên có thể rút gọn thành

$$ Trục = B $$

Tích ma trận trên sẽ được xác định khi và chỉ khi số cột trong ma trận hệ số $A$ bằng số hàng trong ma trận biến $x$

Ở trường, hầu hết chúng ta đều quen thuộc với việc giải các tập hợp phương trình tuyến tính như vậy bằng Quy tắc Cramer, liên quan đến các yếu tố quyết định.

Thư viện số của Python NumPy có hàm

				
					[2. 3.]
				
			
82 giải phương trình ma trận tuyến tính hoặc hệ phương trình vô hướng tuyến tính

Ở đây chúng tôi tìm thấy giải pháp cho tập hợp các phương trình trên trong Python bằng cách sử dụng NumPy's numpy. linalg. hàm giải quyết []

				
					import numpy as np

					a = np.array[[[3,7], [5,2]]]
					b = np.array[[27,16]]
					x = np.linalg.solve[a, b]

					print[x]
				
			

Nếu đoạn script Python trên được thực thi, ta sẽ nhận được nghiệm ở dạng ma trận cột như

				
					[2. 3.]
				
			

đại diện cho các giá trị $x$ và $y$ tương ứng. Vì vậy, $x = 2$ và $y = 3$

Ngoài ra bạn có thể dùng hàm

				
					[2. 3.]
				
			
83 để kiểm tra xem lời giải đã đúng chưa. Sau đây sẽ trả về
				
					[2. 3.]
				
			
84

				
					np.allclose[np.dot[a, x], b]
				
			
Phương Trình Đồng Thời Ba Biến

Tiếp theo, chúng tôi xem xét các phương trình đồng thời trong ba ẩn số hoặc biến $x$ , $y$ và $z$. Chúng tôi chọn một ví dụ khác từ cùng một cuốn sách Elementary Algebra2 của Hall & Knight

$$ 6x + 2y - 5z = 13 \\ 3x + 3y - 2z = 13 \\ 7x + 5y - 3z = 26 $$

Ta biểu diễn các phương trình trên dưới dạng ma trận

$$ \begin{bmatrix} 6 & 2 & -5 \\ 3 & 3 & -2 \\ 7 & 5 & -3 \\ \end{bmatrix} \cdot \begin{bmatrix} x \\ y \\ z

Chúng tôi giải quyết nó bằng hàm

				
					[2. 3.]
				
			
82 của NumPy

					
						import numpy as np

						a = np.array[[[6,2,-5], [3,3,-2], [7,5,-3]]]
						b = np.array[[13,13,26]]
						x = np.linalg.solve[a, b]

						print[x]
					
				

Khi thực thi tập lệnh, giải pháp được in dưới dạng ma trận cột, biểu thị các giá trị tương ứng cho $x$ , $y$ và $z$

>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
7 là một hàm tổng quát cũ hơn để giải nhiều loại phương trình.
>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
7 có nhiều tùy chọn và sử dụng các phương pháp khác nhau trong nội bộ để xác định loại phương trình nào bạn vượt qua nó, vì vậy nếu bạn biết loại phương trình bạn đang xử lý, bạn có thể muốn sử dụng
>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
9 mới hơn để giải phương trình một biến,
>>> from sympy import Indexed, IndexedBase, Tuple, sqrt
>>> A = IndexedBase['A']
>>> eqs = Tuple[A[1] + A[2] - 3, A[1] - A[2] + 1]
>>> solve[eqs, eqs.atoms[Indexed]]
{A[1]: 1, A[2]: 2}
0 để giải hệ phương trình tuyến tính.

Phương trình đại số#

Sử dụng

>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
7 để giải các phương trình đại số. Chúng tôi giả sử tất cả các phương trình đều bằng 0, vì vậy việc giải x**2 == 1 chuyển thành mã sau

				
					[2. 3.]
				
			
0

Đối số đầu tiên cho

>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
7 là một phương trình [bằng 0] và đối số thứ hai là ký hiệu mà chúng ta muốn giải phương trình cho

sympy. người giải quyết. người giải quyết. giải quyết[f , *symbols, **flags][source]#

Đại số giải phương trình và hệ phương trình

Thông số .

f

  • một Expr hoặc Poly duy nhất phải bằng không

  • bình đẳng

  • một biểu thức quan hệ

  • một Boolean

  • iterable của một hoặc nhiều ở trên

biểu tượng. [đối tượng để giải quyết] được chỉ định là

  • không đưa ra [các đối tượng không phải là số khác sẽ được sử dụng]

  • biểu tượng duy nhất

  • danh sách dày đặc của các ký hiệu [e. g. ,

    >>> from sympy import Indexed, IndexedBase, Tuple, sqrt
    >>> A = IndexedBase['A']
    >>> eqs = Tuple[A[1] + A[2] - 3, A[1] - A[2] + 1]
    >>> solve[eqs, eqs.atoms[Indexed]]
    {A[1]: 1, A[2]: 2}
    
    4]

  • có thể lặp lại theo thứ tự các ký hiệu [e. g. ,

    >>> from sympy import Indexed, IndexedBase, Tuple, sqrt
    >>> A = IndexedBase['A']
    >>> eqs = Tuple[A[1] + A[2] - 3, A[1] - A[2] + 1]
    >>> solve[eqs, eqs.atoms[Indexed]]
    {A[1]: 1, A[2]: 2}
    
    5]

cờ

dict=True [mặc định là Sai]

Danh sách trả về [có thể trống] của ánh xạ giải pháp

set=True [mặc định là Sai]

Trả về danh sách các ký hiệu và tập hợp [các] bộ của [các] giải pháp

loại trừ=[] [mặc định]

Đừng cố gắng giải quyết bất kỳ biểu tượng miễn phí nào trong số các biểu tượng bị loại trừ;

check=True [mặc định]

Nếu Sai, không thực hiện bất kỳ thử nghiệm nào đối với các giải pháp. Điều này có thể hữu ích nếu bạn muốn bao gồm các giải pháp làm cho mọi mẫu số bằng không

số=True [mặc định]

Thực hiện kiểm tra số nhanh nếu f chỉ có một ký hiệu

tối thiểu=True [mặc định là Sai]

Một thử nghiệm rất nhanh, tối thiểu

cảnh báo=True [mặc định là Sai]

Hiển thị cảnh báo nếu

>>> from sympy import Indexed, IndexedBase, Tuple, sqrt
>>> A = IndexedBase['A']
>>> eqs = Tuple[A[1] + A[2] - 3, A[1] - A[2] + 1]
>>> solve[eqs, eqs.atoms[Indexed]]
{A[1]: 1, A[2]: 2}
6 không thể kết luận

đơn giản hóa=True [mặc định]

Rút gọn tất cả trừ đa thức bậc 3 trở lên trước khi trả về chúng và [nếu kiểm tra không sai] sử dụng hàm đơn giản hóa tổng quát trên các nghiệm và biểu thức thu được khi chúng được thay thế vào hàm phải bằng 0

force=True [mặc định là Sai]

Làm cho tất cả các ký hiệu tích cực mà không có giả định về dấu hiệu

hợp lý=True [mặc định]

Recast Floats như Rational; . Nếu hợp lý=Không, Floats sẽ được viết lại dưới dạng số hữu tỷ nhưng câu trả lời sẽ được viết lại dưới dạng Floats. Nếu cờ là Sai thì sẽ không có gì được thực hiện với Phao

manual=True [mặc định là Sai]

Không sử dụng phương pháp polys/ma trận để giải một hệ phương trình, hãy giải chúng lần lượt như cách bạn có thể “làm thủ công”. ”

ngầm định=True [mặc định là Sai]

Cho phép

>>> from sympy import Indexed, IndexedBase, Tuple, sqrt
>>> A = IndexedBase['A']
>>> eqs = Tuple[A[1] + A[2] - 3, A[1] - A[2] + 1]
>>> solve[eqs, eqs.atoms[Indexed]]
{A[1]: 1, A[2]: 2}
7 trả về giải pháp cho một mẫu theo các chức năng khác có chứa mẫu đó;

cụ thể=True [mặc định là Sai]

Hướng dẫn

>>> from sympy import Indexed, IndexedBase, Tuple, sqrt
>>> A = IndexedBase['A']
>>> eqs = Tuple[A[1] + A[2] - 3, A[1] - A[2] + 1]
>>> solve[eqs, eqs.atoms[Indexed]]
{A[1]: 1, A[2]: 2}
7 cố gắng tìm một giải pháp cụ thể cho một hệ thống tuyến tính có càng nhiều số 0 càng tốt;

quick=True [mặc định là Sai;
>>> from sympy import Indexed, IndexedBase, Tuple, sqrt
>>> A = IndexedBase['A']
>>> eqs = Tuple[A[1] + A[2] - 3, A[1] - A[2] + 1]
>>> solve[eqs, eqs.atoms[Indexed]]
{A[1]: 1, A[2]: 2}
9 phải là Đúng]

Chọn một phương pháp phỏng đoán nhanh để tìm ra giải pháp có nhiều số 0 trong khi giá trị Sai sử dụng phương pháp rất chậm được đảm bảo để tìm ra số không lớn nhất có thể

khối = Đúng [mặc định]

Trả về các giải pháp rõ ràng khi gặp biểu thức bậc ba. Khi Sai, quartics và quintics cũng bị vô hiệu hóa

quartics=True [mặc định]

Trả về các giải pháp rõ ràng khi gặp các biểu thức quartic. Khi Sai, quintics cũng bị vô hiệu hóa

quintics=True [mặc định]

Trả về các giải pháp rõ ràng [nếu có thể] khi gặp các biểu thức tinh túy

Giải trình

Hiện đang được hỗ trợ
  • đa thức

  • siêu việt

  • sự kết hợp từng phần của những điều trên

  • hệ phương trình tuyến tính và đa thức

  • hệ thống chứa các biểu thức quan hệ

ví dụ

Đầu ra thay đổi tùy theo đầu vào và có thể được nhìn thấy bằng ví dụ

				
					[2. 3.]
				
			
8

Boolean hoặc đơn biến Quan hệ

				
					[2. 3.]
				
			
9

Để luôn nhận danh sách ánh xạ giải pháp, hãy sử dụng cờ dict=True

				
					np.allclose[np.dot[a, x], b]
				
			
0

Để có danh sách các ký hiệu và tập hợp [các] giải pháp, hãy sử dụng cờ set=True

				
					np.allclose[np.dot[a, x], b]
				
			
1

Biểu thức đơn và ký hiệu đơn có trong biểu thức

				
					np.allclose[np.dot[a, x], b]
				
			
2

Biểu thức đơn lẻ không có ký hiệu trong biểu thức

				
					np.allclose[np.dot[a, x], b]
				
			
3

Biểu thức đơn không có biểu tượng nào được đưa ra. Trong trường hợp này, tất cả các biểu tượng miễn phí sẽ được chọn làm biểu tượng tiềm năng để giải quyết. Nếu phương trình là đơn biến thì một danh sách các nghiệm được trả về;

				
					np.allclose[np.dot[a, x], b]
				
			
4

Khi một đối tượng không phải là Ký hiệu được đưa ra làm ký hiệu, nó được cô lập về mặt đại số và có thể thu được nghiệm ẩn. Điều này chủ yếu được cung cấp như một sự tiện lợi để giúp bạn không phải thay thế đối tượng bằng một Biểu tượng và giải quyết Biểu tượng đó. Nó sẽ chỉ hoạt động nếu đối tượng được chỉ định có thể được thay thế bằng Biểu tượng bằng phương thức phụ

>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]

>>> from sympy import Indexed, IndexedBase, Tuple, sqrt
>>> A = IndexedBase['A']
>>> eqs = Tuple[A[1] + A[2] - 3, A[1] - A[2] + 1]
>>> solve[eqs, eqs.atoms[Indexed]]
{A[1]: 1, A[2]: 2}

  • Để giải quyết một biểu tượng hoàn toàn, hãy sử dụng implicit=True

    				
    					[2. 3.]
    				
    			
    80

  • Có thể giải quyết bất cứ điều gì có thể được nhắm mục tiêu với người đăng ký

    				
    					[2. 3.]
    				
    			
    81

  • Không có gì anh hùng được thực hiện trong giải pháp ngầm này, vì vậy bạn có thể kết thúc với một biểu tượng vẫn còn trong giải pháp

    				
    					[2. 3.]
    				
    			
    82

  • Nếu bạn cố gắng giải một số, hãy nhớ rằng số bạn nhận được không nhất thiết có nghĩa là giá trị tương đương với biểu thức thu được

    				
    					[2. 3.]
    				
    			
    83

  • Để giải một hàm trong một đạo hàm, hãy sử dụng

    				
    					[2. 3.]
    				
    			
    800

Một biểu thức và nhiều hơn một ký hiệu

  • Khi có nghiệm tuyến tính

    				
    					[2. 3.]
    				
    			
    84

  • Khi các hệ số không xác định được xác định

    • đó là tuyến tính

      				
      					[2. 3.]
      				
      			
      85

    • Đó là phi tuyến tính

      				
      					[2. 3.]
      				
      			
      86

  • Nếu không có giải pháp tuyến tính, thì lần thử thành công đầu tiên cho giải pháp phi tuyến tính sẽ được trả về

    				
    					[2. 3.]
    				
    			
    87

Có thể lặp lại một hoặc nhiều điều trên

  • Liên quan đến quan hệ hoặc bool

    				
    					[2. 3.]
    				
    			
    88

  • Khi hệ thống tuyến tính

    • Với một giải pháp

      				
      					[2. 3.]
      				
      			
      89

    • Không có giải pháp

      				
      					[2. 3.]
      				
      			
      90

  • Khi hệ thống không tuyến tính

    				
    					[2. 3.]
    				
    			
    91

  • Nếu không có biểu tượng nào được cung cấp, tất cả các biểu tượng miễn phí sẽ được chọn và một danh sách ánh xạ được trả về

    				
    					[2. 3.]
    				
    			
    92

  • Nếu bất kỳ phương trình nào không phụ thuộc vào [các] ký hiệu đã cho, nó sẽ bị loại khỏi tập phương trình và một câu trả lời có thể được đưa ra một cách ngầm định dưới dạng các biến không được quan tâm

    				
    					[2. 3.]
    				
    			
    93

Ví dụ bổ sung

>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
7 với check=True [mặc định] sẽ chạy qua các thẻ biểu tượng để loại bỏ các giải pháp không mong muốn. Nếu không có giả định nào được đưa vào, tất cả các giải pháp khả thi sẽ được trả về

				
					[2. 3.]
				
			
94

Bằng cách sử dụng thẻ tích cực, chỉ một giải pháp sẽ được trả về

				
					[2. 3.]
				
			
95

Giả định không được kiểm tra khi đầu vào

>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
7 liên quan đến quan hệ hoặc bool

Khi các giải pháp được kiểm tra, những giải pháp làm cho bất kỳ mẫu số nào bằng 0 sẽ tự động bị loại trừ. Nếu bạn không muốn loại trừ các giải pháp như vậy, thì hãy sử dụng tùy chọn check=False

				
					[2. 3.]
				
			
96

Nếu check=False thì tìm được nghiệm cho tử số bằng 0. x = 0. Trong trường hợp này, đây là nghiệm giả vì \[\sin[x]/x\] có giới hạn đã biết [không gián đoạn] là 1 .

				
					[2. 3.]
				
			
97

Tuy nhiên, trong trường hợp sau, giới hạn tồn tại và bằng giá trị của x = 0 bị loại trừ khi check=True

				
					[2. 3.]
				
			
98

Vô hiệu hóa các giải pháp rõ ràng bậc cao

Khi giải các biểu thức đa thức, bạn có thể không muốn các giải pháp rõ ràng [có thể khá dài]. Nếu biểu thức là đơn biến, thay vào đó, các phiên bản

				
					[2. 3.]
				
			
803 sẽ được trả về

				
					[2. 3.]
				
			
99

Nếu biểu thức là đa biến, không có giải pháp nào có thể được trả về

				
					np.allclose[np.dot[a, x], b]
				
			
00

Đôi khi các giải pháp sẽ thu được ngay cả khi cờ là Sai vì biểu thức có thể được đưa vào hệ số. Trong ví dụ sau, phương trình có thể được phân tích thành nhân tử là tích của một thừa số tuyến tính và bậc hai để thu được các nghiệm rõ ràng [không yêu cầu giải biểu thức bậc ba]

				
					np.allclose[np.dot[a, x], b]
				
			
01

Giải phương trình liên quan đến căn

Do SymPy sử dụng nghiệm nguyên tắc, một số nghiệm của phương trình nghiệm căn sẽ bị bỏ sót trừ khi check=False

				
					np.allclose[np.dot[a, x], b]
				
			
02

Trong ví dụ trên, chỉ có một nghiệm duy nhất cho phương trình. Các biểu thức khác sẽ tạo ra các gốc giả phải được kiểm tra thủ công;

				
					np.allclose[np.dot[a, x], b]
				
			
03

Nghiệm đầu tiên là âm nên phải dùng

				
					[2. 3.]
				
			
804 để thấy rằng nó thỏa mãn biểu thức

				
					np.allclose[np.dot[a, x], b]
				
			
04

Nếu nghiệm của phương trình không có thực thì cần phải cẩn thận hơn để tìm nghiệm, đặc biệt đối với phương trình bậc cao. Xét biểu thức sau

				
					np.allclose[np.dot[a, x], b]
				
			
05

Chúng ta sẽ xây dựng một giá trị đã biết cho biểu thức này tại x = 3 bằng cách chọn căn bậc 1 cho mỗi căn

				
					np.allclose[np.dot[a, x], b]
				
			
06

Hàm

>>> from sympy import Indexed, IndexedBase, Tuple, sqrt
>>> A = IndexedBase['A']
>>> eqs = Tuple[A[1] + A[2] - 3, A[1] - A[2] + 1]
>>> solve[eqs, eqs.atoms[Indexed]]
{A[1]: 1, A[2]: 2}
7 không thể tìm thấy bất kỳ gốc chính xác nào của phương trình này

				
					np.allclose[np.dot[a, x], b]
				
			
07

Tuy nhiên, hàm

				
					[2. 3.]
				
			
806 có thể được sử dụng để lấy dạng phương trình có thể tìm được các nghiệm số

				
					np.allclose[np.dot[a, x], b]
				
			
08

Mặc dù có thể sử dụng

				
					[2. 3.]
				
			
807 hoặc
				
					[2. 3.]
				
			
808 để tìm
				
					[2. 3.]
				
			
809, giải pháp chỉ có thể được xác minh bằng
				
					[2. 3.]
				
			
810

				
					np.allclose[np.dot[a, x], b]
				
			
09

Xem thêm

				
					[2. 3.]
				
			
811

Để giải quyết các mối quan hệ lặp lại

				
					[2. 3.]
				
			
800

Để giải phương trình vi phân

sympy. người giải quyết. người giải quyết. solve_linear[lhs , rhs=0, symbols=[], exclude=[]][source]#

Trả về một tuple có nguồn gốc từ

				
					[2. 3.]
				
			
813 là một trong những điều sau đây.
				
					[2. 3.]
				
			
814,
				
					[2. 3.]
				
			
815,
				
					[2. 3.]
				
			
816,
				
					[2. 3.]
				
			
817

Giải trình

				
					[2. 3.]
				
			
814 có nghĩa là
				
					[2. 3.]
				
			
819 độc lập với các ký hiệu trong các ký hiệu không bị loại trừ

				
					[2. 3.]
				
			
815 có nghĩa là không có giải pháp cho phương trình trong số các ký hiệu đã cho. Nếu phần tử đầu tiên của bộ dữ liệu khác không, thì hàm được đảm bảo phụ thuộc vào một ký hiệu trong các ký hiệu

				
					[2. 3.]
				
			
816 trong đó ký hiệu xuất hiện tuyến tính trong tử số của
				
					[2. 3.]
				
			
819, nằm trong ký hiệu [nếu được cung cấp] và không bị loại trừ [nếu được cung cấp]. Không đơn giản hóa nào được thực hiện cho
				
					[2. 3.]
				
			
819 ngoài việc mở rộng
				
					[2. 3.]
				
			
824, vì vậy giải pháp sẽ hoàn toàn tương ứng với một giải pháp duy nhất

				
					[2. 3.]
				
			
817 trong đó
				
					[2. 3.]
				
			
826 và
				
					[2. 3.]
				
			
827 là tử số và mẫu số của
				
					[2. 3.]
				
			
819 khi tử số không tuyến tính trong bất kỳ biểu tượng quan tâm nào;

ví dụ

				
					np.allclose[np.dot[a, x], b]
				
			
10

				
					[2. 3.]
				
			
819 độc lập với các ký hiệu trong các ký hiệu không bị loại trừ

				
					np.allclose[np.dot[a, x], b]
				
			
11

Biến

				
					[2. 3.]
				
			
831 xuất hiện dưới dạng biến tuyến tính trong mỗi trường hợp sau

				
					np.allclose[np.dot[a, x], b]
				
			
12

Khi không tuyến tính trong

				
					[2. 3.]
				
			
831 hoặc
				
					[2. 3.]
				
			
833 thì tử số và mẫu số được trả về

				
					np.allclose[np.dot[a, x], b]
				
			
13

Nếu tử số của biểu thức là một ký hiệu, thì _____1815 được trả về nếu giải pháp cho ký hiệu đó sẽ đặt bất kỳ mẫu số nào thành 0

				
					np.allclose[np.dot[a, x], b]
				
			
14

Nhưng việc viết lại tự động có thể khiến một ký hiệu ở mẫu số xuất hiện ở tử số nên sẽ trả về đáp án

				
					np.allclose[np.dot[a, x], b]
				
			
15

Sử dụng một biểu thức chưa được đánh giá để tránh điều này

				
					np.allclose[np.dot[a, x], b]
				
			
16

Nếu

				
					[2. 3.]
				
			
831 được phép triệt tiêu trong biểu thức sau, thì nó có vẻ là tuyến tính trong
				
					[2. 3.]
				
			
831, nhưng loại hủy bỏ này không được thực hiện bởi
				
					[2. 3.]
				
			
837, vì vậy giải pháp sẽ luôn thỏa mãn biểu thức ban đầu mà không gây ra lỗi chia cho 0

				
					np.allclose[np.dot[a, x], b]
				
			
17

Có thể đưa ra danh sách các biểu tượng mà giải pháp mong muốn

				
					np.allclose[np.dot[a, x], b]
				
			
18

Một danh sách các biểu tượng để bỏ qua cũng có thể được đưa ra

				
					np.allclose[np.dot[a, x], b]
				
			
19

[Nhận được giải pháp cho

				
					[2. 3.]
				
			
833 vì đây là biến đầu tiên từ danh sách các ký hiệu được sắp xếp theo quy tắc có giải pháp tuyến tính. ]

sympy. người giải quyết. người giải quyết. solve_linear_system[hệ thống , *symbols, **flags][source]#

Giải hệ phương trình tuyến tính \[N\] với \[M\] variables, which means both under- and overdetermined systems are supported.

Giải trình

Số lượng giải pháp có thể là không, một hoặc vô hạn. Tương ứng, quy trình này sẽ trả về Không có hoặc một từ điển có giải pháp. Trong trường hợp hệ thống chưa được xác định, tất cả các tham số tùy ý đều bị bỏ qua. Điều này có thể gây ra tình huống trong đó một từ điển trống được trả về. Trong trường hợp đó, tất cả các ký hiệu có thể được gán giá trị tùy ý

Đầu vào của hàm này là ma trận \[N\times M + 1\] , có nghĩa là nó phải ở dạng tăng cường. Nếu bạn muốn nhập phương trình \[N\]\[M\] unknowns then use

				
					[2. 3.]
				
			
839 instead. Note: a local copy of the matrix is made by this routine so the matrix that is passed will not be modified.

Thuật toán được sử dụng ở đây là loại bỏ Gaussian không có phân số, kết quả là, sau khi loại bỏ, trong một ma trận tam giác trên. Sau đó, các giải pháp được tìm thấy bằng cách thay thế ngược. Cách tiếp cận này hiệu quả và nhỏ gọn hơn so với phương pháp Gauss-Jordan

ví dụ

				
					np.allclose[np.dot[a, x], b]
				
			
20

Giải hệ phương trình sau

				
					np.allclose[np.dot[a, x], b]
				
			
21

				
					np.allclose[np.dot[a, x], b]
				
			
22

Một hệ thống suy biến trả về một từ điển trống

				
					np.allclose[np.dot[a, x], b]
				
			
23

sympy. người giải quyết. người giải quyết. solve_linear_system_LU[ma trận , biểu tượng][source]#

Giải hệ thống ma trận tăng cường bằng cách sử dụng

				
					[2. 3.]
				
			
840 và trả về một từ điển trong đó các giải pháp được khóa vào các ký hiệu của sym theo thứ tự

Giải trình

Ma trận phải khả nghịch

ví dụ

				
					np.allclose[np.dot[a, x], b]
				
			
24

				
					np.allclose[np.dot[a, x], b]
				
			
25

Xem thêm

				
					[2. 3.]
				
			
840

sympy. người giải quyết. người giải quyết. solve_untermined_coeffs[equ , coeffs, sym, **flags][source]#

Giải phương trình loại \[p[x; a_1, \ldots, a_k] = q[x]\] trong đó cả hai . \[p\] and \[q\] are univariate polynomials that depend on \[k\] parameters.

Giải trình

Kết quả của hàm này là một từ điển với các giá trị tượng trưng của các tham số đó đối với các hệ số trong \[q\] .

Hàm này chấp nhận cả các thể hiện của lớp phương trình và các biểu thức SymPy thông thường. Đặc điểm kỹ thuật của các tham số và biến là bắt buộc vì lý do hiệu quả và đơn giản

ví dụ

				
					np.allclose[np.dot[a, x], b]
				
			
26

				
					np.allclose[np.dot[a, x], b]
				
			
27

				
					np.allclose[np.dot[a, x], b]
				
			
28

sympy. người giải quyết. người giải quyết. nsolve[*args , dict=False, **kwargs][source]#

Giải hệ phương trình phi tuyến bằng số.

				
					[2. 3.]
				
			
842

Giải trình

				
					[2. 3.]
				
			
819 là một hàm vectơ của các biểu thức ký hiệu đại diện cho hệ thống. args là các biến. Nếu chỉ có một biến, đối số này có thể được bỏ qua.
				
					[2. 3.]
				
			
844 là véc tơ xuất phát gần nghiệm

Sử dụng từ khóa mô-đun để chỉ định mô-đun nào sẽ được sử dụng để đánh giá chức năng và ma trận Jacobian. Đảm bảo sử dụng mô-đun hỗ trợ ma trận. Để biết thêm thông tin về cú pháp, vui lòng xem chuỗi tài liệu của

				
					[2. 3.]
				
			
845

Nếu các đối số từ khóa chứa

				
					[2. 3.]
				
			
846 [mặc định là Sai] thì
				
					[2. 3.]
				
			
847 sẽ trả về một danh sách [có thể trống] các ánh xạ giải pháp. Điều này có thể đặc biệt hữu ích nếu bạn muốn sử dụng
				
					[2. 3.]
				
			
847 làm dự phòng để giải quyết vì sử dụng đối số dict cho cả hai phương thức sẽ tạo ra các giá trị trả về có cấu trúc kiểu nhất quán. Xin lưu ý. để giữ điều này nhất quán với
>>> from sympy import Indexed, IndexedBase, Tuple, sqrt
>>> A = IndexedBase['A']
>>> eqs = Tuple[A[1] + A[2] - 3, A[1] - A[2] + 1]
>>> solve[eqs, eqs.atoms[Indexed]]
{A[1]: 1, A[2]: 2}
7, giải pháp sẽ được trả về trong một danh sách mặc dù
				
					[2. 3.]
				
			
847 [ít nhất hiện tại] chỉ tìm thấy một giải pháp tại một thời điểm

Hệ thống xác định quá mức được hỗ trợ

ví dụ

				
					np.allclose[np.dot[a, x], b]
				
			
29

Đối với các hàm một chiều, cú pháp được đơn giản hóa

				
					np.allclose[np.dot[a, x], b]
				
			
30

Để giải quyết với độ chính xác cao hơn mặc định, hãy sử dụng đối số prec

				
					np.allclose[np.dot[a, x], b]
				
			
31

Để giải quyết các nghiệm phức của các hàm thực, một điểm ban đầu không thực phải được chỉ định

				
					np.allclose[np.dot[a, x], b]
				
			
32

				
					[2. 3.]
				
			
851 được sử dụng và bạn có thể tìm tài liệu mở rộng hơn của họ, đặc biệt liên quan đến tham số từ khóa và bộ giải có sẵn. Tuy nhiên, lưu ý rằng các chức năng rất dốc gần gốc, việc xác minh giải pháp có thể thất bại. Trong trường hợp này, bạn nên sử dụng cờ
				
					[2. 3.]
				
			
852 và xác minh độc lập giải pháp

				
					np.allclose[np.dot[a, x], b]
				
			
33

Người ta có thể bỏ qua xác minh một cách an toàn nếu biết giới hạn của gốc và sử dụng phương pháp chia đôi

				
					np.allclose[np.dot[a, x], b]
				
			
34

Ngoài ra, một chức năng có thể hoạt động tốt hơn khi bỏ qua mẫu số. Tuy nhiên, vì điều này không phải lúc nào cũng đúng, nên việc quyết định sử dụng chức năng nào là do người dùng quyết định

				
					np.allclose[np.dot[a, x], b]
				
			
35

sympy. người giải quyết. người giải quyết. checksol[f , ký hiệu, sol=None, **flags][source]#

Kiểm tra xem sol có phải là nghiệm của phương trình f == 0

Giải trình

Đầu vào có thể là một ký hiệu và giá trị tương ứng hoặc một từ điển các ký hiệu và giá trị. Khi được cung cấp dưới dạng từ điển và gắn cờ

				
					[2. 3.]
				
			
853, các giá trị trong từ điển sẽ được đơn giản hóa. f có thể là một phương trình duy nhất hoặc một phương trình lặp lại. Một giải pháp phải đáp ứng tất cả các phương trình trong f để được coi là hợp lệ;

ví dụ

				
					np.allclose[np.dot[a, x], b]
				
			
36

Để kiểm tra xem một biểu thức có bằng 0 hay không bằng cách sử dụng

>>> from sympy import Indexed, IndexedBase, Tuple, sqrt
>>> A = IndexedBase['A']
>>> eqs = Tuple[A[1] + A[2] - 3, A[1] - A[2] + 1]
>>> solve[eqs, eqs.atoms[Indexed]]
{A[1]: 1, A[2]: 2}
6, hãy chuyển nó thành f và gửi một từ điển trống cho biểu tượng

				
					np.allclose[np.dot[a, x], b]
				
			
37

Không có gì được trả lại nếu

>>> from sympy import Indexed, IndexedBase, Tuple, sqrt
>>> A = IndexedBase['A']
>>> eqs = Tuple[A[1] + A[2] - 3, A[1] - A[2] + 1]
>>> solve[eqs, eqs.atoms[Indexed]]
{A[1]: 1, A[2]: 2}
6 không thể kết luận

cờ. 'số=True [mặc định]'

kiểm tra số nhanh nếu

				
					[2. 3.]
				
			
819 chỉ có một ký hiệu

'tối thiểu=True [mặc định là Sai]'

một thử nghiệm rất nhanh, tối thiểu

'cảnh báo = Đúng [mặc định là Sai]'

hiển thị cảnh báo nếu checksol[] không thể kết luận

'đơn giản hóa=True [mặc định]'

đơn giản hóa giải pháp trước khi thay thế vào chức năng và đơn giản hóa chức năng trước khi thử đơn giản hóa cụ thể

'lực lượng = Đúng [mặc định là Sai]'

làm cho tất cả các ký hiệu tích cực mà không có giả định về dấu hiệu

sympy. người giải quyết. người giải quyết. unrad[eq , *syms, **flags][source]#

Loại bỏ các gốc bằng các đối số tượng trưng và trả về [eq, cov], Không có hoặc đưa ra lỗi

Giải trình

Không có gì được trả lại nếu không có gốc để loại bỏ

NotImplementedError được nâng lên nếu có các gốc và chúng không thể bị loại bỏ hoặc nếu mối quan hệ giữa các ký hiệu ban đầu và sự thay đổi của biến cần thiết để viết lại hệ thống dưới dạng đa thức không thể giải được

Mặt khác, bộ dữ liệu,

				
					[2. 3.]
				
			
857, được trả về ở đâu

eq,
				
					[2. 3.]
				
			
858

eq là một phương trình không có căn [trong [các] ký hiệu quan tâm] có các nghiệm là tập hợp lớn nhất của các nghiệm của biểu thức ban đầu. eq có thể được viết lại theo một biến mới; . Ví dụ: đối với sqrt[2 - x], bộ giá trị sẽ là

				
					[2. 3.]
				
			
864. Các nghiệm của eq sẽ chứa nghiệm của phương trình ban đầu [nếu có]

ký hiệu

Một biểu tượng có thể lặp lại, nếu được cung cấp, sẽ hạn chế trọng tâm của việc loại bỏ triệt để. chỉ những gốc có một hoặc nhiều biểu tượng quan tâm mới bị xóa. Tất cả các biểu tượng miễn phí được sử dụng nếu syms không được đặt

cờ được sử dụng nội bộ để liên lạc trong các cuộc gọi đệ quy. Hai tùy chọn cũng được công nhận

				
					[2. 3.]
				
			
865, khi được xác định, được hiểu là hàm một đối số trả về True nếu xử lý một Pow nhất định

Các gốc có thể được loại bỏ khỏi một biểu thức nếu

  • Tất cả các cơ sở của các gốc là như nhau;

  • Nếu tất cả các gốc xuất hiện trong một thuật ngữ của biểu thức

  • Chỉ có bốn số hạng có thừa số sqrt[] hoặc có ít hơn bốn số hạng có thừa số sqrt[]

  • Chỉ có hai thuật ngữ với gốc tự do

ví dụ

				
					np.allclose[np.dot[a, x], b]
				
			
38

				
					np.allclose[np.dot[a, x], b]
				
			
39

Phương trình vi phân thông thường [ODE]#

Xem ODE .

Phương trình đạo hàm riêng [PDE]#

Xem PDE .

Deutils [Tiện ích giải ODE và PDE]#

sympy. người giải quyết. deutils. ode_order[expr , func][source]#

Trả về thứ tự của một phương trình vi phân đã cho đối với hàm

Chức năng này được thực hiện đệ quy

ví dụ

				
					np.allclose[np.dot[a, x], b]
				
			
40

Phương trình truy hồi #

sympy. người giải quyết. tái phát. rsolve[f , y, init=None][source]#

Giải bài toán truy hồi đơn biến với hệ số hữu tỉ

Cho trước \[k\] truy hồi tuyến tính bậc thứ \[\operatorname{L} . , or equivalently:

\[a_{k}[n] y[n+k] + a_{k-1}[n] y[n+k-1] + \cdots + a_{0}[n] y[n] = f

ở đâu \[a_{i}[n]\] , cho \[i= . , are polynomials or rational functions in \[n\], and \[f\] is a hypergeometric function or a sum of a fixed number of pairwise dissimilar hypergeometric terms in \[n\], finds all solutions or returns

				
					[2. 3.]
				
			
866, if none were found.

Các điều kiện ban đầu có thể được đưa ra dưới dạng từ điển ở hai dạng

  1. 				
    					[2. 3.]
    				
    			
    867

  2. 				
    					[2. 3.]
    				
    			
    868

hoặc dưới dạng danh sách

				
					[2. 3.]
				
			
869 giá trị

				
					[2. 3.]
				
			
870

ở đâu

				
					[2. 3.]
				
			
871, cho \[i=0, \ldots, m\] , ánh xạ tới \[y[n_i]\].

ví dụ

Hãy xem xét sự lặp lại sau đây

\[[n - 1] y[n + 2] - [n^2 + 3 n - 2] y[n + 1] + 2 n [n + 1] y[n] = 0\]

				
					np.allclose[np.dot[a, x], b]
				
			
41

				
					np.allclose[np.dot[a, x], b]
				
			
42

				
					np.allclose[np.dot[a, x], b]
				
			
43

				
					np.allclose[np.dot[a, x], b]
				
			
44

Xem thêm

				
					[2. 3.]
				
			
872,
				
					[2. 3.]
				
			
873,
				
					[2. 3.]
				
			
874

sympy. người giải quyết. tái diễn. rsolve_poly[coeffs , f, n, shift=0, **hints][source]#

Cho toán tử truy hồi tuyến tính \[\operatorname{L}\] có thứ tự \[k . with polynomial coefficients and inhomogeneous equation \[\operatorname{L} y = f\], where \[f\] is a polynomial, we seek for all polynomial solutions over field \[K\] of characteristic zero.

Thuật toán thực hiện hai bước cơ bản

  1. Tính độ \[N\] của nghiệm đa thức tổng quát.

  2. Tìm tất cả các đa thức bậc \[N\] hoặc nhỏ hơn của \[\operatorname{ . .

Có hai phương pháp tính nghiệm của đa thức. Nếu mức độ ràng buộc là tương đối nhỏ, tôi. e. nó nhỏ hơn hoặc bằng bậc của phép truy hồi, thì phương pháp ngây thơ của các hệ số không xác định đang được sử dụng. Điều này cho hệ phương trình đại số với \[N+1\] ẩn số.

Trường hợp còn lại, thuật toán thực hiện biến đổi phương trình ban đầu thành phương trình tương đương mà hệ phương trình đại số chỉ có \[r\] indeterminates. This method is quite sophisticated [in comparison with the naive one] and was invented together by Abramov, Bronstein and Petkovsek.

Có thể khái quát thuật toán được triển khai ở đây cho trường hợp phương trình vi phân và vi phân q tuyến tính

Giả sử chúng ta muốn tính \[m\] -th đa thức Bernoulli đến một hằng số. Đối với điều này, chúng ta có thể sử dụng \[b[n+1] - b[n] = m n^{m-1}\] lặp lại, có . Ví dụ. \[b[n] = B_m + C\]. For example:

				
					np.allclose[np.dot[a, x], b]
				
			
45

				
					np.allclose[np.dot[a, x], b]
				
			
46

Người giới thiệu

[ R797 ]

S. Một. Abramov, M. Bronstein và M. Petkovsek, Về nghiệm đa thức của phương trình toán tử tuyến tính, trong. t. Cấp độ, biên tập. , Proc. ISSAC '95, ACM Press, New York, 1995, 290-296

[ R798 ]

M. Petkovsek, Các giải pháp siêu hình học của các phép truy hồi tuyến tính với các hệ số đa thức, J. Tính toán tượng trưng, ​​14 [1992], 243-264

[ R799 ]

  1. Petkovsek, H. S. Wilf, Đ. Zeilberger, A = B, 1996

sympy. người giải quyết. tái phát. rsolve_ratio[coeffs , f, n, **hints][source]#

Cho toán tử truy hồi tuyến tính \[\operatorname{L}\] có thứ tự \[k . with polynomial coefficients and inhomogeneous equation \[\operatorname{L} y = f\], where \[f\] is a polynomial, we seek for all rational solutions over field \[K\] of characteristic zero.

Quy trình này chỉ chấp nhận các đa thức, tuy nhiên, nếu bạn quan tâm đến việc giải quyết truy hồi với các hệ số hữu tỷ thì hãy sử dụng

				
					[2. 3.]
				
			
811 sẽ xử lý trước phương trình đã cho và chạy quy trình này với các đối số đa thức

Thuật toán thực hiện hai bước cơ bản

  1. Tính đa thức \[v[n]\] có thể dùng làm mẫu số chung của bất kỳ nghiệm hữu tỉ nào của phương trình \[\operatorname{L} y = f\].

  2. Dựng phương trình sai phân tuyến tính mới bằng phép thế \[y[n] = u[n]/v[n]\] và giải . Trả lại

    				
    					[2. 3.]
    				
    			
    866 nếu không tìm thấy. \[u[n]\] finding all its polynomial solutions. Return
    				
    					[2. 3.]
    				
    			
    866 if none were found.

Thuật toán được triển khai ở đây là phiên bản sửa đổi của thuật toán Abramov ban đầu, được phát triển vào năm 1989. Cách tiếp cận mới đơn giản hơn nhiều để thực hiện và có hiệu quả tổng thể tốt hơn. Phương pháp này có thể dễ dàng áp dụng cho trường hợp phương trình sai phân q

Bên cạnh việc tìm kiếm các giải pháp hợp lý một mình, các chức năng này là một phần quan trọng của thuật toán Hyper vì nó được sử dụng để tìm giải pháp cụ thể cho phần không thuần nhất của một sự lặp lại

ví dụ

				
					np.allclose[np.dot[a, x], b]
				
			
47

Xem thêm

				
					[2. 3.]
				
			
874

Người giới thiệu

[ R800 ]

S. Một. Abramov, Nghiệm hợp lý của sai phân tuyến tính và phương trình sai phân q với các hệ số đa thức, trong. t. Cấp độ, biên tập. , Proc. ISSAC '95, ACM Press, New York, 1995, 285-289

sympy. người giải quyết. tái diễn. rsolve_hyper[coeffs , f, n, **hints][source]#

Cho toán tử truy hồi tuyến tính \[\operatorname{L}\] có thứ tự \[k . with polynomial coefficients and inhomogeneous equation \[\operatorname{L} y = f\] we seek for all hypergeometric solutions over field \[K\] of characteristic zero.

Phần không đồng nhất có thể là siêu hình học hoặc tổng của một số cố định các thuật ngữ siêu hình học khác nhau theo cặp

Thuật toán thực hiện ba bước cơ bản

  1. Nhóm các thuật ngữ siêu hình học tương tự trong phần không thuần nhất của \[\operatorname{L} y = f\] và tìm nghiệm cụ thể .

  2. Tính toán tập hợp tạo của \[\operatorname{L}\] và tìm cơ sở trong đó để tất cả các nghiệm đều độc lập tuyến tính.

  3. Tạo thành giải pháp cuối cùng với số lượng hằng số tùy ý bằng thứ nguyên của cơ sở của \[\operatorname{L}\] .

Số hạng \[a[n]\] là siêu hình học nếu nó bị triệt tiêu bởi các phương trình sai phân tuyến tính bậc nhất với các hệ số đa thức hoặc, trong .

Đầu ra của thủ tục này là một sự kết hợp tuyến tính của một số thuật ngữ siêu hình học cố định. Tuy nhiên, phương pháp cơ bản có thể tạo ra lớp giải pháp lớn hơn - thuật ngữ D'Alembertian

Cũng lưu ý rằng phương pháp này không chỉ tính toán hạt nhân của phương trình không thuần nhất, mà còn rút gọn thành cơ sở sao cho các nghiệm được tạo bởi quy trình này là độc lập tuyến tính

ví dụ

				
					np.allclose[np.dot[a, x], b]
				
			
48

				
					np.allclose[np.dot[a, x], b]
				
			
49

>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
0

Người giới thiệu

[ R801 ]

M. Petkovsek, Các giải pháp siêu hình học của các phép truy hồi tuyến tính với các hệ số đa thức, J. Tính toán tượng trưng, ​​14 [1992], 243-264

[ R802 ]

  1. Petkovsek, H. S. Wilf, Đ. Zeilberger, A = B, 1996

Hệ phương trình đa thức#

sympy. người giải quyết. polysys. solve_poly_system[seq , *gens, strict=False, **args][source]#

Giải hệ phương trình đa thức

Thông số .

tiếp theo. một danh sách/bộ/bộ

Liệt kê tất cả các phương trình cần giải

thị tộc. máy phát điện

trình tạo các phương trình trong seq mà chúng tôi muốn các giải pháp

nghiêm khắc. một boolean [mặc định là Sai]

nếu nghiêm ngặt là Đúng, NotImplementedError sẽ được nêu ra nếu giải pháp được biết là không đầy đủ [điều này có thể xảy ra nếu không phải tất cả các giải pháp đều có thể biểu thị được ở gốc]

tranh luận. Đối số từ khóa

Các tùy chọn đặc biệt để giải các phương trình

Trả về .

Danh sách [Tuple]

Một danh sách các bộ dữ liệu. Giải pháp cho các ký hiệu thỏa mãn các phương trình được liệt kê trong seq

ví dụ

>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
1

>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
2

>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
3

sympy. người giải quyết. polysys. solve_triangulated[polys , *gens, **args][source]#

Giải hệ đa thức bằng thuật toán Gianni-Kalkbrenner

Thuật toán tiến hành bằng cách tính toán một cơ sở Groebner trong miền cơ sở và sau đó bằng cách tính toán lặp lại các thừa số đa thức trong các phần mở rộng đại số được xây dựng phù hợp của miền cơ sở

Thông số .

polys. một danh sách/bộ/bộ

Liệt kê tất cả các phương trình cần giải

thị tộc. máy phát điện

trình tạo các phương trình trong polys mà chúng tôi muốn các giải pháp

tranh luận. Đối số từ khóa

Các tùy chọn đặc biệt để giải các phương trình

Trả về .

Danh sách [Tuple]

Một danh sách các bộ dữ liệu. Giải pháp cho các ký hiệu thỏa mãn các phương trình được liệt kê trong polys

ví dụ

>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
4

>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
5

>>> solve[f[x] - x, f[x]]
[x]
>>> solve[f[x].diff[x] - f[x] - x, f[x].diff[x]]
[x + f[x]]
>>> solve[f[x].diff[x] - f[x] - x, f[x]]
[-x + Derivative[f[x], x]]
>>> solve[x + exp[x]**2, exp[x], set=True]
[[exp[x]], {[-sqrt[-x],], [sqrt[-x],]}]
6

Người giới thiệu

1. Patrizia Gianni, Teo Mora, Algebraic Solution of System of Polynomial Equations using Groebner Bases, AAECC-5 on Applied Algebra, Algebraic Algorithms and Error-Correcting Codes, LNCS 356 247–257, 1989

Bạn có thể sử dụng Python để giải phương trình không?

Trong Python, Các thư viện NumPy [Numerical Python], SciPy [Scientific Python] và SymPy [Symbolic Python] có thể được sử dụng để giải các hệ phương trình tuyến tính.

Python có thể giải các phương trình tuyến tính không?

Mặc dù chúng ta đã thảo luận về nhiều phương pháp khác nhau để giải hệ phương trình tuyến tính, nhưng thực ra rất dễ thực hiện bằng Python . Trong phần này, chúng ta sẽ sử dụng Python để giải các hệ phương trình. Cách dễ nhất để có được giải pháp là thông qua hàm giải quyết trong Numpy.

Chủ Đề