我使用python的fsolve使用下面的脚本找到一组方程的根:
from scipy.optimize import fsolve
from scipy.interpolate import spline
import math
import numpy as np
#from mpldatacursor import datacursor
%pylab
from matplotlib import pyplot as plt
import matplotlib.dates as mdates
%matplotlib inline
def equations(p):
x,y,z = p
f1 = (1 - 2*math.cos(math.radians(x)) + 2*math.cos(math.radians(y)) - 2*math.cos(math.radians(z)) + 0.8)
f2 = (1 - 2*math.cos(math.radians(5*x)) + 2*math.cos(math.radians(5*y)) - 2*math.cos(math.radians(5*z)))
f3 = (1 - 2*math.cos(math.radians(7*x)) + 2*math.cos(math.radians(7*y)) - 2*math.cos(math.radians(7*z)))
return (f1,f2,f3)
x,y,z = fsolve(equations,(0,0,0))
#print equations((x,y,z))
这适用于一个小问题 . 这仅产生一组解,即每个x,y,z的一个值以满足那些方程,但由于这些是三角函数,因此应该存在至少2个解 . 我如何使用fsolve(或其他任何东西)为给定的起点找到x,y,z的两个解 .
示例:对于 x,y,z = fsolve(equations,(0,0,0))
,是否可以为 x,y,z
而不是一个解决方案生成两个值?
谢谢您的帮助 .