簡體   English   中英

使用 scipy 的牛頓 function 求解方程

[英]Using scipy's newton function to solve an equation

幾個月來,我一直在使用 scipy 的“牛頓”function,遇到了一個相當混亂的情況。 我的情節之一,涉及以下代碼:

#Declaring frequency and wave vector arrays
w_array = np.linspace(0.1,3,1000)*10**15
k_array = np.array([])

#Declaring variables
p = 2.85*10**15
e1=1
c=300000000

def twolayer(k):
    e2 = 3.43-(p**2)/(w**2 - (1j*gamma*w))
    result = ((w/c)*(((e2*e1)/(e2+e1))**0.5))-k
    return result

#Loop that uses secant method for each value of omega to find solutions for k
for w in w_array:
    gamma = 2.23 * 10**14
    k_array = np.append(k_array,newton(twolayer,0))

print(twolayer(0))

#Plotting
plt.figure(dpi=100)
plt.scatter(k_array.real,w_array)
plt.xlabel('Wave vector k')
plt.ylabel('Frequency ω')

輸出下圖:

在此處輸入圖像描述

但我有點困惑'牛頓' function 在這里實際上做了什么。 由於我沒有提供導數,因此它采用 Secant 方法,但是什么過程允許它解決給定 x 值具有多個 y 值的 function?

您只是以錯誤的方式繪制它,在您的計算中, kw的 function 。

嘗試:

#Plotting
plt.figure(dpi=100)
plt.scatter(w_array, k_array.real)
plt.xlabel('Frequency ω')
plt.ylabel('Wave vector k')

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM