Подгонка оды к элементам в графеPython

Программы на Python
Anonymous
Подгонка оды к элементам в графе

Сообщение Anonymous »

У меня есть следующий код:

Код: Выделить всё

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
import random

def dose(y, t, b, s, c, p, i):
target, infectious, virus = y
dydt = [-b*target*virus, b*target*virus - s*infectious, (1/(i+1))*p*infectious - c*virus]
return dydt

b = 0.00001
s = 4
c = 4
p = 2000000
D = np.logspace(-3, 3, 7)
mylist = []

y0 = [1, 0, 0.01]
t = np.linspace(0, 60, 1000)
for i in D:
sol = odeint(dose, y0, t, args=(b, s, c, p, i))
#plt.plot(t, sol[:, 0], label='D = ' + str(i))
V = sol[:, 2]
mylist.append(V[48]/0.01950269536785707)

def add_noise(d, noise_pct):
return [x + random.gauss(0, noise_pct * x) for x in d]

mat = np.array(mylist)

mylist2 = add_noise(mylist, 0.05)
mat2 = np.array(mylist2)
plt.plot(D, mat2)

plt.xscale('log')
#plt.plot(t, sol[:, 2], 'r', label='virus')
plt.legend(loc='best')
plt.xlabel('time')
plt.grid()
#plt.show()
print(D)
print(mat2)
Теперь D и mat2 содержат значения x и y, которые я хотел бы использовать, чтобы соответствовать решению моей исходной системы ОДУ в функции дозе. Я также хотел бы построить новую встроенную функцию. Как бы я это сделал?
Чтобы уточнить, я добавил ошибку от 5% до 7 точек данных из исходного графика и получил np.array значений x и y, которые мне нужны. найти наиболее подходящую кривую, которая следует тем же дифференциальным уравнениям, что и исходный график.

Подробнее здесь: https://stackoverflow.com/questions/786 ... s-in-graph

Вернуться в «Python»