我知道这是一个经常性的问题,但是我无法在生成此错误的代码中找到错误。
我想解决以下形式的方程组
当我尝试使用fsolve在Python上运行此代码时,出现错误 RuntimeWarning:double_scalars中遇到无效值。通过查看其他帖子,我理解除以零时会发生这种情况,但是我找不到解决此问题的方法。
请让我知道是否有替代版本可以解决此方程组。这是我与所有其他变量的参数值一起使用的代码。
import numpy as np
from scipy.optimize import fsolve
class PS3_2:
def __init__(self,
sigma = 3,
kappa = 4,
nu = 4,
eta = 1,
r = 4,
epsilon = 0.05,
y0 = 0.001,
beta = 0.99):
self.sigma, self.kappa, self.nu, self.eta, self.r, self.epsilon, self.y0, self.beta = sigma, kappa, nu, eta, r, epsilon, y0, beta
def conditions_ss(self, x):
return np.array([-x[0]**(-self.sigma) + (1+self.r)*self.beta*x[1]**(-self.sigma),
self.eta*x[0]**(-self.sigma) - self.kappa*x[2]**(1/self.nu),
(1/2*(self.eta+self.epsilon) + 1/2*(self.eta-self.epsilon))*x[1]**(-self.sigma) - self.kappa*x[3]**(1/self.nu),
x[0] + x[1]/(1+self.r) - self.eta*x[2] - ((1/2*(self.eta-self.epsilon)+1/2*(self.eta+self.epsilon))*x[3])/(1+self.r)])
def solve_ss(self, x0):
return fsolve(self.conditions_ss, x0)
在主文件上,我使用
from PS3_2_class import PS3_2
import numpy as np
ra_model = PS3_2()
x0 = np.array([4, 0.06, 0.25, 0.25])
params_1 = ra_model.solve_ss(x0)
并获取确切的错误:
/path/to/PS3_2_class.py:32: RuntimeWarning: invalid value encountered in double_scalars
return fsolve(self.conditions_ss, x0)
/path/to/PS3_2_class.py:33: RuntimeWarning: invalid value encountered in double_scalars