Tôi sẽ khuyên bạn không nên sử dụng các giải pháp dạng đóng vì chúng có xu hướng rất không ổn định. Bạn cần hết sức cẩn thận trong cách thức và thứ tự các đánh giá của bạn về phân biệt đối xử và các thông số khác.
Ví dụ cổ điển là một ví dụ cho phương trình bậc hai . Tính toán gốc là sẽ khiến bạn gặp rắc rối với đa thức trong đó kể từ đó bạn bị hủy trong tử số. Bạn cần tính .x 1 , 2 = - b ± √một x2+ b x + c = 0 b»4mộtcx1=-(b+sign(b) √
x1 , 2= - b ± b2- 4 a c-------√2 a
b » 4 một cx1= - ( b + s i gn ( b ) b2- 4 a c-------√)2 a; x2= cmột1x1
Higham trong kiệt tác "Độ chính xác và ổn định của thuật toán số" (tái bản lần 2, SIAM) sử dụng phương pháp tìm kiếm trực tiếp để tìm các hệ số của một đa thức bậc ba mà giải pháp khối phân tích cổ điển cho kết quả rất không chính xác. Ví dụ anh ta đưa ra là . Đối với đa thức này, các rễ được phân tách tốt và do đó vấn đề không phải là điều hòa. Tuy nhiên, nếu anh ta tính toán các gốc bằng cách sử dụng phương pháp phân tích và đánh giá đa thức trong các gốc này, anh ta thu được phần dư của trong khi sử dụng phương pháp chuẩn ổn định (phương pháp ma trận đồng hành) , phần dư là thứ tựO ( 10 - 2 ) O ( 10 - 15 ) O ( 10 - 11 )[ a , b , c ] = [ 1.732 , 1 , 1.2704 ]Ôi ( 10- 2)Ôi ( 10- 15). Anh ta đề xuất một sửa đổi nhỏ cho thuật toán, nhưng ngay cả khi đó, anh ta có thể tìm thấy một tập hợp các hệ số dẫn đến dư lượng của , điều này chắc chắn không tốt. Xem p480-481 của cuốn sách được đề cập ở trên.Ôi ( 10- 11)
Trong trường hợp của bạn, tôi sẽ áp dụng phương pháp của Bairstow . Nó sử dụng một sự kết hợp lặp lại của phép lặp Newton trên các hình thức bậc hai (và sau đó các gốc của phương trình bậc hai được giải quyết) và giảm phát. Nó dễ dàng thực hiện và thậm chí có một số triển khai có sẵn trên web.