У меня небольшая проблема со слишком большими числами с плавающей точкой в Python. Возникают ошибки переполнения.
Функция выглядит следующим образом:
N(t + 1) = (1 + c) N(t) - (c / d) * N(t)**2
где t - время, а c и d - константы.
Мне нужно, чтобы рассчитать доодна минута (t = 60). Но после t = 8, 9 или 10 я получил ошибку переполнения.
def nValue(t):
n_calc = []
c = 2.3 # 0..3
d = 95 # 1..250
n_0 = 450 # 0..600
n_1 = (1 + c) * n_0 - c / d * n_0**2
n_calc.append(n_0)
n_calc.append(n_1)
for i in range(2, t+1):
n_curr = (1 + c) * n_calc[i- 1] - (c / d) * (n_calc[i- 1]**2)
n_calc.append(n_curr)
return n_calc
Должен ли я использовать десятичный тип, BigFloat или что-то другое?
Наконец я должен нарисовать график ... (2D Matplotlib сюжет). Может мне стоит как-то «масштабировать» это уравнение?