Điều đầu tiên cần lưu ý là sự tương ứng giữa tìm gốc rễ của một đa thức ( bất kỳ đa thức) và tìm kiếm các giá trị riêng của một ma trận tùy ý thực sự trực tiếp, và đó là một chủ đề phong phú, thấy Pseudozeros của đa thức và pseudospectra của ma trận đồng bằng Toh và Trefethen và các tài liệu tham khảo ở đó.
Về cơ bản, trường hợp 2 × 2 là tầm thường và công thức chuẩn,
là số lượng ổn định và chính xác, miễn là yếu tố quyết định
được đánh giá một cách chính xác-công thức trực tiếp sẽ không chính xác khi , nhưng có một công thức chính xác do Kahan sử dụng FMA ( https://hal.inria.fr/ensl-00649347v1/document ).
x1=−b−sign(b)Δ−−√2a,x2=c/(ax1),Δ=det(b2c2ab)
Δb2≈4ac
Không có tương đương trực tiếp như vậy ngay cả đối với đa thức bậc ba. ( Chỉnh sửa: xem liên kết đến phương pháp của Kahan bên dưới trong nhận xét của CADJunkie. Điều này có thể sai. ) Công thức trực tiếp không phải lúc nào cũng ổn định về số lượng (trái với giả định của bạn, tôi nghĩ vậy) và nó không thể được ổn định về mặt số như cũ cách như công thức bậc hai bằng cách chèn các dấu hiệu đúng ở đâu đó. Bạn có thể thử đánh giá nó với độ chính xác cao hơn, ví dụ với số học bản địa kép. Nhưng các cách tiếp cận làm việc trực tiếp trên đa thức là khá phức tạp. Ví dụ: ( https://doi.org/10.1145/2699468 , cũng hoạt động trên đa thức bậc bốn), bạn có thể sử dụng phương pháp của Newton với một phỏng đoán đầu tiên được tính toán trước, nhưng nó thực sự khá phức tạp và tốc độ thậm chí không lớn lắm .
Các công thức rõ ràng cho đa thức bậc 4 cũng không phải lúc nào cũng ổn định về số. Các đa thức là khó nhất có nguồn gốc không phổ biến (nhỏ hoặc gần nhau, khác nhau về độ lớn), nhưng thậm chí kiểm tra mã của bạn trên một vài tỷ đa thức hoàn toàn ngẫu nhiên thường có thể phát hiện ra các lỗi số.
Một điều gây tò mò liên quan đến điều này là Jenkins-Traub, một cách phổ biến tốt để tìm ra các gốc đa thức, thực sự là một thuật toán eigenvalue (lặp đi lặp lại) được ngụy trang.
Tôi có thể nói rằng bằng chứng của các công thức, theo một cách nào đó, là sai lệch: nó lừa bạn nghĩ rằng bởi vì công thức có dạng đóng có nghĩa là nó rẻ hơn / dễ dàng hơn. Tôi thực sự khuyên bạn nên thực sự kiểm tra / điểm chuẩn này trên một số dữ liệu thử nghiệm. Điều đó không phải là sự thật: việc xác định gốc của các đa thức bậc nằm trong một yếu tố số nguyên nhỏ gây khó khăn cho toàn bộ vấn đề xác định giá trị riêng của một ma trận nhỏ và các thói quen thư viện chuẩn cho các giá trị riêng mạnh hơn nhiều và được thử nghiệm tốt. Vì vậy, bằng cách giảm vấn đề eigenvalue nhỏ thành vấn đề gốc đa thức mức độ thấp, bạn không nhất thiết phải đơn giản hóa nó.≥3
Những ưu và nhược điểm của việc sử dụng đa thức đặc trưng để có được giá trị riêng cho trường hợp này là gì?
Tôi nghĩ rằng con lừa chính là giả định này mà bạn thực hiện:
Mặt khác, phương trình chỉ là bậc bốn và chúng ta có các công thức phân tích cho các gốc đa thức vì vậy chúng ta không nên đi quá xa.
bởi vì một công thức ở dạng đóng và phân tích, điều đó có nghĩa là nó dễ / rẻ / chính xác, không nhất thiết phải đúng. Nó có thể đúng với dữ liệu cụ thể mà bạn có thể có, nhưng theo như tôi biết thì nó không đúng.
PS Toàn bộ sự khác biệt giữa dạng đóng và dạng không đóng thực sự rất khó hiểu với số học máy tính: bạn có thể nghĩ rằng trong một công thức khối là một dạng đóng, nhưng theo như số học máy tính có liên quan, đó chỉ là một hàm hợp lý gần đúng khác, nó có thể nhanh hơn, nhưng không khác biệt cơ bản, với hàm hợp lý gần đúng xác định kết quả của thuật toán eigenvalue.cos(⋯)