Khi nào thì Newton-Krylov không phải là người giải thích hợp?


16

Gần đây tôi đã so sánh các bộ giải phi tuyến tính khác nhau từ scipy và đặc biệt ấn tượng với ví dụ Newton-Krylov trong Scipy Cookbook trong đó chúng giải phương trình phương trình vi phân bậc hai với thuật ngữ phản ứng phi tuyến tính trong khoảng 20 dòng mã.

Tôi đã sửa đổi mã ví dụ để giải phương trình Poisson phi tuyến tính ( còn được gọi là phương trình Poisson-Boltzmann , xem trang 17 trong các ghi chú này) cho các cấu trúc dị vòng bán dẫn, có dạng,

d2φdx2-k(x)(p(x,φ)-n(x,φ)+N+(x))= =0

(Đây là hàm dư được truyền cho người giải.)

Đây là một vấn đề tĩnh điện trong đó và là các hàm phi tuyến cho dạng . Các chi tiết ở đây không quan trọng, nhưng điểm quan trọng là hàm phi tuyến tính thay đổi theo cấp số nhân với nên hàm dư có thể thay đổi trong phạm vi rất lớn ( với một chút thay đổi trong .n(x,φ)p(x,φ)nTôi(x)e-(ETôi(x,φ)-Ef)φ10-6-1016)φ

Tôi giải quyết một cách số lượng phương trình này với Newton-Krylov của scipy, nhưng nó sẽ không bao giờ hội tụ (thực tế là nó sẽ luôn báo cáo lỗi khi tính toán Jacobian). Tôi đã chuyển từ một bộ giải Newton-Krylov sang fsolve (dựa trên phép lai MINPACK) và nó hoạt động lần đầu tiên!

Có những lý do chung tại sao Newton-Krylov không phù hợp với một số vấn đề nhất định? Các phương trình đầu vào cần phải được điều hòa bằng cách nào đó?

Có thể cần thêm thông tin để bình luận, nhưng tại sao bạn nghĩ fsolve hoạt động trong trường hợp này?


Tôi gặp vấn đề tương tự với Newton-Krylov khi thất bại với Jacobian và thấy rằng việc thay đổi phương pháp từ "lgmres" thành "gmres" ( sol = newton_krylov(func, guess, method='gmres')) đã khắc phục vấn đề. Không chắc chắn chính xác tại sao, nhưng bất cứ ai khác có vấn đề này có thể xem xét làm tương tự.
Arthur Dent

Câu trả lời:


18

Có hai vấn đề mà bạn có thể gặp phải.

Điều hòa

Đầu tiên, vấn đề là điều hòa, nhưng nếu bạn chỉ cung cấp số dư, Newton-Krylov sẽ loại bỏ một nửa chữ số có nghĩa của bạn bằng cách phân biệt phần dư để có được hành động của Jacobian:

J[x]yF(x+εy)-F(x)ε

1016

Lưu ý rằng các vấn đề tương tự áp dụng cho các phương pháp quasi-Newton, mặc dù không có sự khác biệt hữu hạn. Tất cả các phương pháp có thể mở rộng cho các vấn đề với toán tử không nén (ví dụ: phương trình vi phân) phải sử dụng thông tin Jacobian để tiền điều kiện.

Có khả năng fsolvelà họ đã không sử dụng thông tin Jacobian hoặc nó đã sử dụng phương pháp dogleg hoặc dịch chuyển để tiến bộ với phương pháp "giảm dần độ dốc", mặc dù một Jacobian đơn lẻ (nghĩa là khác biệt hữu hạn sẽ có nhiều "nhiễu" từ số học chính xác hữu hạn). Điều này không thể mở rộng và fsolvecó thể trở nên chậm hơn khi bạn tăng kích thước vấn đề.

Toàn cầu hóa

Nếu các vấn đề tuyến tính được giải quyết chính xác, chúng ta có thể loại trừ các vấn đề liên quan đến vấn đề tuyến tính (Krylov) và tập trung vào các vấn đề do tính phi tuyến. Các cực tiểu và nonsmooth cục bộ có tốc độ hội tụ chậm hoặc gây trì trệ. Poisson-Boltzmann là một mô hình trơn tru, vì vậy nếu bạn bắt đầu với một dự đoán ban đầu đủ tốt, Newton sẽ hội tụ theo phương trình bậc hai. Hầu hết các chiến lược toàn cầu hóa liên quan đến một số loại tiếp tục để đưa ra dự đoán ban đầu chất lượng cao cho các lần lặp lại cuối cùng. Các ví dụ bao gồm tiếp tục lưới (ví dụ, Full Multigrid), tiếp tục tham số và tiếp tục giả ngẫu nhiên. Loại thứ hai thường - áp dụng cho các vấn đề ở trạng thái ổn định và đưa ra một số lý thuyết hội tụ toàn cầu, xem Coffey, Kelley và Keyes (2003) . Một tìm kiếm xuất hiện bài báo này, có thể hữu ích cho bạn:Giải pháp của Shestakov, Milovich và Noy (2002) của phương trình Poisson-Boltzmann phi tuyến bằng cách sử dụng tiếp tục giả ngẫu nhiên và phương pháp phần tử hữu hạn . Tiếp tục giả ngẫu nhiên có liên quan chặt chẽ với thuật toán Levenberg - Marquest.

đọc thêm

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.