これが事です。Python で fsolve 関数を使用して、3 次関数のルートを見つけようとしています。この 3 次関数には、パラメーター がありますdeltaW
。私がしていることは、このパラメータdeltaW
を から-50
に変更50
し、同時に 3 次関数の根を見つけることです。以下は私のスクリプトです:
from scipy.optimize import fsolve
import matplotlib.pyplot as plt
import numpy as np
import pylab
g = 5.61
gamma = 6.45
kappa = 6.45
J = 6.45
rs = 1.0 #There are just parameters
m = 5.0*10**(-11)
wm = 2*3.14*23.4
X = []
X1 = []
def func(x): #Define the cubic function I need to solve
A = 1j*g**2*(kappa + 1j*deltaW)*x*x/(m*wm**2)
B = J**2 + (1j*deltaW - gamma)*(1j*deltaW + kappa)
C = A + B
D = abs(C)*x - J*np.sqrt(2*kappa)*rs
return D
for deltaW in np.linspace(-50, 50, 1000):
x0 = fsolve(func, 0.0001)
X.append(x0)
deltaW = np.linspace(-50, 50, 1000)
plt.plot(deltaW, X)
plt.show()
このスクリプトを実行すると、次の 2 つのメッセージが表示されます。
RuntimeWarning: The iteration is not making good progress, as measured by the
improvement from the last five Jacobian evaluations.
warnings.warn(msg, RuntimeWarning)
/usr/lib/python2.7/dist-packages/scipy/optimize/minpack.py:152: RuntimeWarning: The iteration is not making good progress, as measured by the
improvement from the last ten iterations.
warnings.warn(msg, RuntimeWarning)
申し訳ありませんが、このスクリプトの筋書きをここに載せるほどの評判はありません。私の質問は、なぜこのメッセージが表示されるのか、なぜ私のプロットが左の部分で奇妙に見えるのかということです.
私のコードが間違っているためですか?