我有下面的複變函數:存儲複雜功能的根在一個陣列中SciPy的
import numpy as np
import scipy as sp
from scipy.special import jv, hankel1, jvp, h1vp, h2vp, gamma
nr = 2
m = 20
def Dm(x):
return nr * jvp(m,nr*x,1) * hankel1(m,x) - jv(m,nr*x) * h1vp(m,x,1)
我希望找到DM的許多複雜的根(x)中位於第4象限複雜的平面,因爲我可以從scipy.optimize使用newton(),然後將它們存儲到一維數組中。我可以想到的最好方法是在第四象限的有限部分上以規則間隔使用newton()來強制它,檢查根是否是前一個根的副本,檢查根是否確實是根,然後將其存儲到數組中。一旦算法完成,我想通過增加真實的組件來對數組進行排序。我的問題是:
(i)我可以創建一個未定義長度的數組,我可以繼續添加值,因爲我發現他們? (ii)我可以用這樣一種方式繪製函數,以便我可以查看根源嗎?數學說,他們都在複雜的飛機上。 (iii)是否有更好的方法來尋找根源?我覺得我會用我的方法錯過許多領域的根源。
快速提問:在這個過程中,牛頓的方法必然會失敗無數次。有沒有辦法忽略錯誤並繼續運行腳本?一旦出現收斂失敗錯誤,我的程序就會停止。 – PeteyCoco
當然,如果您遇到異常,請使用python的try/except子句。 (谷歌搜索或在這個網站上搜索將給你很多例子。) – DrV