У меня есть уравнение:Python SciPy fsolve работает неправильно
import numpy as np
from scipy import optimize
def wealth_evolution(price, wealth=10, rate=0.01, q=1, realEstate=0.1, prev_price=56):
sum_wantedEstate = 100
for delta in range(1,4):
z = rate - ((price-prev_price)/(price + q/rate))
k = delta * np.divide(1.0, float(np.maximum(0.0, z)))
wantedEstate = (wealth/(price + q/rate)) * np.minimum(k, 1) - realEstate
sum_wantedEstate += wantedEstate
return sum_wantedEstate
Так что найти решение этого уравнения:
sol = optimize.fsolve(wealth_evolution, 200)
Но если я заменял sol
в уравнение я бы не получить 0
(welth_evolution(sol)
). Почему так происходит? fsolve
находит корни f(x)=0
.
UPD: full_output
дает:
(array([ 2585200.]), {'qtf': array([-99.70002298]), 'nfev': 14, 'fjac': array([[-1.]]), 'r': array([ 3.45456519e-11]), 'fvec': array([ 99.7000116])}, 5, 'The iteration is not making good progress, as measured by the \n improvement from the last ten iterations.')
Возможно, вы захотите показать [mcve] – cel
Было бы полезно, если бы вы разместили вывод отладки, созданный 'full_info = True'. –
@cel Фактически, это довольно близко, как есть. Запустите код и проверьте результат с помощью 'wealth_evolution (sol)'. –