fsolve
을 사용하여 3 차 방정식의 근원을 찾으려고합니다. 이것은 내 코드입니다 :방정식의 근원을 찾아내는 것은 초기 추측을 수치로 반환합니다.
from scipy import *
from scipy.optimize import fsolve
import matplotlib.pyplot as plt
import numpy as np
#These are all parameters
g = 5.61
gamma = 6.45
kappa = 6.45
J = 6.45
rs = 10.0
m = 5.0*10**(-11)
wm = 2*3.14*23.4
r2 = np.linspace(0, 0.02, 1000)
deltaW = 0
A = 1j*g**2*(kappa + 1j*deltaW)*r2*r2/(m*wm**2)
B = J**2 + (1j*deltaW - gamma)*(1j*deltaW + kappa)
C = A + B
D = abs(C)*r2 - J*np.sqrt(2*kappa)*rs
def func(x):
D = abs(C)*r2 - J*np.sqrt(2*kappa)*rs
return D
x0 = fsolve(func, 0.0)
print x0
plt.plot(r2, D)
plt.show()
플롯에서 D를 0으로 만드는 적어도 하나의 r2가 있음을 알 수 있습니다. 그러나 fsolve에서 얻은 반환 값 x0은 항상 내가 설정 한 추측 값입니다. 아무도 왜 이런 일이 일어나고 어떻게 해결할 수 있는지 말해 줄 수 있습니까?
정말 미안 그런 바보 같은 질문에 대해. – epx