Python 用带不等式方程的fsolve解方程
我很难理解如何将不等式方程添加到fsolve函数中 例如: 以下是软件包:Python 用带不等式方程的fsolve解方程,python,numpy,scipy,Python,Numpy,Scipy,我很难理解如何将不等式方程添加到fsolve函数中 例如: 以下是软件包: import numpy as np from scipy.optimize import fsolve 以下是我想使用的方程式: x1 >= 0.4 and x1 <= 0.7 x2 >= 0.2 and x2 <= 0.4 5x2**2 + 2x1**3 = 2 关于如何设置不等式方程有什么想法吗?该fsolve方法既不能处理不等式约束,也不能处理变量的边界。您的前两个约束是简单的框约束
import numpy as np
from scipy.optimize import fsolve
以下是我想使用的方程式:
x1 >= 0.4 and x1 <= 0.7
x2 >= 0.2 and x2 <= 0.4
5x2**2 + 2x1**3 = 2
关于如何设置不等式方程有什么想法吗?该
fsolve
方法既不能处理不等式约束,也不能处理变量的边界。您的前两个约束是简单的框约束,即变量的边界,因此您只需要求解受变量边界约束的非线性方程组2x1**3+5x**2==2
。这可以表示为约束最小化问题,类似于:
注意,在你的边界内没有满足非线性方程的点。无论如何,当我们最小化残差的欧几里德范数时,我们得到了可能的最佳点。你确定变量的边界是正确的吗?没有满足第三个等式的点,请参见
0.4**3+0.2**2=0.041<0.7
。你是对的。我修正了如果我的回答有帮助,如果你能接受就好了。
myFunc(z):
x1 = z[0]
x2 = z[1]
F = np.empty((3))
F[0] = x1 >= 0.4 and x1 <= 0.7 # <-- This is the first equation
F[1] = x2 >= 0.2 and x2 <= 0.4 # <-- this is the second equation
F[2] = 5x2**2 + 2x1**3 = 2 # <-- this is the third equation
return F
zGuess = np.array([0.3,0.3])
z = fsolve(myFunction,zGuess)
print(z)
For F(x) = 2x1**3 + 5x**2 - 2 you want to solve
min ||F(x)||
s.t. 0.4 <= x1 <= 0.7,
0.2 <= x2 <= 0.4