Z.BOZ Ответов: 1

Как я могу закодировать логистический рост?


Я должен закодировать логистический рост на python, где время может принимать числа с плавающей запятой.

dN/dt = rN(1-N/K)
где
Н это население
Р это темп роста
К это пропускная способность
т быть временем


То время в моем коде можно брать только целые числа, но он обязательно должен принимать числа с плавающей точкой, так как позже я буду использовать его для логистического роста опухолей, и я не смог его исправить.

Я буду очень признателен за любую возможную помощь, даже если она не связана с моим кодом.

Что я уже пробовал:

import numpy as np #for basic numerical computation
import matplotlib.pyplot as plt #for visualization
import csv
import random
#val = int(input("Enter your value: ")) 
r = .25 # growth rate / year ,|(birth/death rate)
K = 100 # carrying capacity
#t = 40 # time
t=random.randint(0,40)
num = np.zeros(t+1)#always add +1 for your upper limit #array([ 0.,  0.,  0.,  0.,  0.]) which means that it creates 41 arrays filled with zeroes 
num[0] = 1
for i in range(t):
    num[i+1] = num[i]+r*num[i]*(1-num[i]/K)
    row= (i+1,'\t\t',format(num[i], '.8f'))
    print (row)
    with open('plot.csv', 'a') as csvFile:
            writer = csv.writer(csvFile, delimiter=' ')
            writer.writerow(row)
            csvFile.close()
plt.plot(range(t+1),num, 'b')
plt.xlabel('Time')
plt.ylabel(' Cell Number')
plt.title('Logistic Growth')
plt.axvline(np.argmax(np.diff(num)),  color = 'k'  )
plt.show()

Richard MacCutchan

Если вам нужна помощь, пожалуйста, объясните, в чем именно заключается ваша проблема.

Z.BOZ

Привет Ричард,
Я должен ввести числа с плавающей запятой в t(время), например 0.01. Проблема в том, что этот код не может принимать значения с плавающей запятой. Я новичок в python и не могу понять, как это исправить.

Richard MacCutchan

Извините, я не понимаю. Python прекрасно работает с целыми числами или числами с плавающей запятой.

1 Ответов

Рейтинг:
0

OriginalGriff

Попробуй:

t=float(random.randint(0,40))