python复杂非线性方程_非线性方程python入门——屠龙刀
感謝師兄提供的題圖。(這圖應(yīng)該是p的,我找電視劇,沒謝三哥這三個字。)
早些年做科研的時候,其實(shí)就用倚天屠龍走天下,一個矩陣對角化,一個非線性方程求解。當(dāng)時是研究的冷原子,算是比較新的方向,量子光學(xué)的新時代吧。研究冷原子做自洽平均場,做計算會用到非線性方程,還記得是由自由能極值條件得出的一個粒子數(shù)方程,一個能隙方程,聯(lián)立求解。我當(dāng)年用的c語言的科學(xué)計算庫,師兄用的fortran。我們組是非線性方程求解做的,還記得隔壁組用的是非線性最優(yōu)化。
python提供了非線性方程組的求解fsolve函數(shù),具體可以查閱文檔,下面給出簡單使用的舉例。
基本需要一個接受數(shù)組返回同樣長度數(shù)組的函數(shù),隨后調(diào)用即可,參數(shù)可以放在args用元組傳遞。
然而,這個函數(shù)只能解決實(shí)數(shù)的,我自己寫了個復(fù)數(shù)版本的。我不知道有沒有對應(yīng)的庫,是不是重復(fù)造輪子的行為。利用實(shí)部和虛部分離的方法,在內(nèi)部調(diào)用fsolve解決。參數(shù)接口只用了最簡單的部分,可以自己酌情加上去。
先寫測試函數(shù)
函數(shù)和測試
值得一提的是,非線性方程求解一般不會是單解,而且依賴初值。所以,實(shí)際中,會選好的初值(你預(yù)估的結(jié)果)。特別在掃場(參數(shù)連續(xù)變化)時,會用前一個結(jié)果做后一個的初值,保持結(jié)果的連續(xù)性。
完。
總結(jié)
以上是生活随笔為你收集整理的python复杂非线性方程_非线性方程python入门——屠龙刀的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++学习之路 | PTA(甲级)——
- 下一篇: websocket python爬虫_p