Rễ của một con trăn đa thức không có numpy

Theo tôi hiểu vấn đề của bạn, bạn đang tính toán các hệ số của sản phẩm của hai đa thức như trong ví dụ này

$$[ux^2+vx+w] \times [a_0 + a_1 x + a_2 x^2 +. ]=wa_0+[a_0v+a_1w]x+\cdots \tag{1}$$

bằng cách kết hợp các hệ số của chúng

$$[u,v,w] \star [a_0, a_1, a_2, \cdots ]=[wa_0,[a_0v+a_1w],[a_0u+a_1v+a_2w],\cdots]\tag{2}$$

và bạn muốn hiểu nguồn gốc của những bất ổn mà bạn đang tìm kiếm

Tôi sẽ đề xuất bạn viết phép toán tích chập dưới dạng ứng dụng của một ma trận dải nhất định cho một ma trận cột, theo cách này

$$\begin{pmatrix} w&&&&&&&\\ v&w&&&&&&\\ u&v&w&&&&&\\ &u&v&w&&&&\\ &&\ddots&\ddots&\ddots &&&\\ &&&u&v&w&&\\ &&&&u&v&w&\\ &&&&&u&v&w \end{pmatrix}\begin{pmatrix}a_0

Trong phần trình bày này, tích chập của hai chuỗi, vốn là một phép toán đối xứng, đã được thực hiện bất đối xứng. Đó là một cách để chọn ra một trong hai đa thức và hiểu vai trò nội tại của nó, bất kể đa thức kia là gì.

Một cách hay để xem xét [3] là xem chuỗi liên tiếp của các dòng dưới dạng "cửa sổ hệ số di chuyển" trượt trước "bảng giá trị" thứ hai

Xin lưu ý rằng vectơ cột

  • đã bị đảo lộn như là cổ điển cho tích chập

  • có thể được cung cấp "số 0 ở cuối" để có cùng số phần tử với số cột của ma trận. Ngoài ra, kết thúc bằng một số 0 nhất định [ít nhất bằng bậc của đa thức đầu tiên] là thông thường để có được một tích chập chính xác [những cân nhắc này là cổ điển khi kiểm tra kích thước của tích chập của hai dãy]

Nói chung, nếu $d$ là bậc của đa thức bậc nhất thì ma trận dải có dải $d+1$

Bây giờ, một trường hợp rất xấu sẽ là một loại phản ví dụ cho thấy nguồn gốc nội tại của vấn đề bất ổn định mà bạn muốn giải quyết

Hãy xem xét đa thức

$$p[x]=x^5+3x^4+x^3+x^2+x+1\tag{4}$$ có bậc $d=5$, một phiên bản "nhiễu loạn" của đa thức của bạn. Ma trận dải liên quan với các dải $d+1=6$ có định dạng $15 \times 15$ có số điều kiện lớn $c=1. 33 \times 10^7$ [gọi lại. số điều kiện là số mà sai số được nhân lên, ở đây là 10 triệu lần]. Ví dụ: nếu chúng tôi làm việc với các chữ số bị cắt ngắn thành $10^{-8}$, số thập phân xếp hạng thứ hai sẽ bị hỏng. ]

Nếu tôi xem xét trường hợp ma trận $20 \times 20$, với cùng một đa thức, thì nó còn tệ hơn. số điều kiện cao tới $2 \times 10^9$

Hơn nữa, chúng ta vẫn còn xa mục tiêu xét các đa thức có bậc hàng trăm.

Nếu chúng ta lấy đa thức $x^5+2x^4+x^3+x^2+x+1$ với cùng một ma trận $15 \times 15$, chúng ta sẽ có một số điều kiện khác. "chỉ" $10^4$

Kết luận là các dao động quan sát được phụ thuộc rất nhiều vào [các] đa thức liên quan [tôi sử dụng số nhiều ; một phân tích tương tự có thể được thực hiện trên đa thức thứ hai]. Điều này không có nghĩa là sai số làm tròn do hàng nghìn phép nhân/cộng không đóng một vai trò nào, mà là một vai trò thứ yếu.

Đây là cách chúng ta có thể lấy số điều kiện bằng Matlab [xin lưu ý rằng Matlab thực hiện hầu hết mọi công việc. việc xây dựng ma trận chập dải được xử lý bởi một chức năng cụ thể "convmtx"]

Trong bài viết này, hãy thảo luận về cách tìm nghiệm của đa thức của mảng NumPy. Nó có thể được tìm thấy bằng nhiều phương pháp khác nhau, hãy xem chúng một cách chi tiết

Phương pháp 1. sử dụng np. rễ[]

Hàm này trả về nghiệm của một đa thức với các hệ số được cho trong p. Các hệ số của đa thức sẽ được đặt trong một mảng theo thứ tự tương ứng.  

Ví dụ: nếu đa thức là x2 +3x + 1 thì mảng sẽ là [1, 3, 1]

cú pháp. cục mịch. rễ[p]

Thông số
P. [array_like] Mảng hệ số đa thức hạng 1

Trở lại. [ndarray] Một mảng chứa nghiệm của đa thức

Hãy xem một số ví dụ

ví dụ 1. Tìm nghiệm của đa thức x2 +2x + 1

Python3




# import numpy library

import numpy as np

 

 

# Enter the coefficients of the poly in the array

coeff=

[-1. -1.]
0
[-1. -1.]
1
[-1. -1.]
2
[-1. -1.]
3
[-1. -1.]
2
[-1. -1.]
1
[-1. -1.]
6

[-1. -1.]
7
[-1. -1.]
8

đầu ra

[-1. -1.]

ví dụ 2. Tìm nghiệm của đa thức x3 +3 x2   + 2x +1

Python3




# import numpy library

import numpy as np

 

 

# import numpy library4

# import numpy library5

coeff33_______

[-1. -1.]
0
[-1. -1.]
1
[-1. -1.]
2import1
[-1. -1.]
2
[-1. -1.]
3
[-1. -1.]
2
[-1. -1.]
1
[-1. -1.]
6

[-1. -1.]
7
[-1. -1.]
8

đầu ra

[-2. 32471796+0. j         -0. 33764102+0. 56227951j -0. 33764102-0. 56227951j]

Phương pháp 2. sử dụng np. poly1D[]

Hàm này giúp xác định hàm đa thức. Nó giúp dễ dàng áp dụng “các phép toán tự nhiên” trên đa thức. Các hệ số của đa thức sẽ được đặt trong một mảng theo thứ tự tương ứng

Ví dụ, đối với đa thức x2 +3x + 1, mảng sẽ là [1, 3, 1]

Tiếp cận

  • Áp dụng chức năng np. poly1D[] trên mảng và lưu trữ nó trong một biến
  • Tìm nghiệm bằng cách nhân biến với nghiệm hoặc r[từ khóa có sẵn] và in kết quả để lấy nghiệm của đa thức đã cho

cú pháp. cục mịch. poly1d[mảng, gốc, var]

Hãy xem một số ví dụ

ví dụ 1. Tìm nghiệm của đa thức x2 +2x + 1

Python3




# import numpy library

import numpy as np

 

 

numpy as np4

# import numpy library5

numpy as np6= numpy as np8

[-1. -1.]
1_______0_______2import1
[-1. -1.]
2
[-1. -1.]
3_______0_______2
[-1. -1.]
1 4

Có thể tạo đa thức từ gốc trong Python không?

Khoa học dữ liệu thực tế sử dụng Python . use the polynomial. phương thức polyfromroots[] trong Python Numpy . Phương thức trả về mảng 1-D của các hệ số của đa thức Nếu tất cả các nghiệm là thực thì out cũng là thực, ngược lại thì phức.

Python có thể giải phương trình đa thức không?

Đây là Chương trình Python để tính phương trình đa thức với điều kiện là các hệ số của đa thức được lưu trữ trong danh sách. Chương trình lấy các hệ số của phương trình đa thức và giá trị của x rồi cho giá trị của đa thức .

Chủ Đề