Son zamanlarda scipy'den farklı lineer olmayan çözücüleri karşılaştırdım ve özellikle 20 kod satırında lineer olmayan reaksiyon terimi ile ikinci dereceden diferansiyel denklem denklemini çözdükleri Scipy Yemek Kitabı'ndaki Newton-Krylov örneğinden özellikle etkilendim .
Formdaki yarı iletken heterostrüktürler için doğrusal olmayan Poisson denklemini ( Poisson-Boltzmann denklemi de denir, bu notlarda sayfa 17'ye bakınız) çözmek için örnek kodu değiştirdim ,
(Bu, çözücüye iletilen artık işlevdir.)
Bu ve formu için doğrusal olmayan fonksiyonlar olan elektrostatik bir sorundur . Buradaki ayrıntılar önemli değildir, ancak nokta, doğrusal olmayan fonksiyonun ile katlanarak değişmesidir, bu nedenle kalan fonksiyon küçük bir değişiklikle büyük bir aralıkta ( değişebilir içinde .
Bu denklemi scipy'nin Newton-Krylov ile çözdüm, ama asla yakınsama olmaz (aslında her zaman Jacobian'ın hesaplanmasında bir hata rapor eder). Bir geçilmiştir Newton Krylov için çözücü fsolve (MINPACK hybrd üzerine dayandığı) ve ilk kez çalıştı!
Newton-Krylov'un belirli sorunlara iyi uymamasının genel nedenleri var mı? Giriş denklemlerinin bir şekilde koşullandırılması gerekiyor mu?
Yorum yapmak için daha fazla bilgiye ihtiyaç vardır, ama neden bu durumda fsolve'un işe yaradığını düşünüyorsunuz?
sol = newton_krylov(func, guess, method='gmres')
) olarak değiştirmenin sorunu çözdüğünü buldum . Nedenini tam olarak bilmiyorum, ancak bu sorunu yaşayan herkes aynı şeyi yapmayı düşünebilir.