Я знаю, что это повторяющийся вопрос, но я не могу найти ошибку в своем коде, который генерирует эту ошибку.
Я хочу решить систему уравнений следующего вида
Система уравнений
Когда я пытаюсь запустить это на Python с помощью fsolve, я получаю ошибку 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