我正在尝试使用SciPy的一般非线性求解器求解大型非线性方程组。所有变量都限制在一定的时间间隔内(例如,考虑百分比折扣,必须在[0,1]范围内)。
现在我的问题:是否有一个函数(或一个特定的参数设置),使用它我可以将变量的搜索区域限制在一定的间隔。
显然,一个选择是不断更改初始值,直到我得到可行的解决方案。但是,考虑到问题的规模,这根本就没有效率。
澄清这个例子:
from scipy.optimize import *
from sympy import symbols
from sympy.utilities.lambdify import lambdify
x,y= symbols('x y')
y=lambdify(((x,y),),[x**2-x*y+y**2-21,x**2+2*x*y-8*y**2])
print(fsolve(y,[-1,-2]))
有没有办法可以在不操纵初始猜测的情况下一次性获得该系统的正解(即[5.29, 2.65]
)?