我正在使用 fsolve 来求解非线性方程。我的问题是,根据起点,解决方案会发生变化,我不确定我发现的那些是最合理的。这是代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import fsolve, brentq,newton
A = np.arange(0.05,0.95,0.01)
PHI = np.deg2rad(np.arange(0,90,1))
def f(b):
return np.angle((1+3*a**4-3*a**2)+(a**4-a**6)*(np.exp(2j*b)+2*np.exp(-1j*b))+(a**2-2*a**4+a**6)*(np.exp(-2j*b)+2*np.exp(1j*b)))-Phi
B = np.zeros((len(A),len(PHI)))
for i in range(len(A)):
for j in range(len(PHI)):
a = A[i]
Phi = PHI[j]
b = fsolve(f, 1)
B[i,j]= b
我固定 x0 = 1 因为它似乎给出了更合理的值。但有时,我认为该方法不会收敛,并且结果值太大。
我该怎么做才能找到最佳解决方案?
非常感谢!