\(\displaystyle{ \begin{cases} \frac{1}{ a_{n+1} } \frac{dc_{n+1}\left(t\right) }{dt} = k_{n} \left[c_{n}\left(t\right) \right]^{ a_{n} }-k_{n+1} \left[c_{n+1}\left(t\right) \right]^{ a_{n+1} } \\ c_{1}\left(t\right)= c^{0} _{1} e^{-k _{1}t } \\ c_{n}\left(t=0\right)=c^{0} _{n} \\ a_{1}=1 \\ c^{0} _{1} \in \mathbb{R} > 0 \\ c^{0} _{n} \in \mathbb{R} \ge 0 \\ c_{n}\left(t\right) \in \mathbb{R} \ge 0 \\ a_{n} \in \mathbb{R} \ge 0 \\ k_{n} \in \mathbb{R} \ge 0 \\ n \in \mathbb{N} _{+} \\ t \in \mathbb{R} \ge 0 \end{cases}}\)
Znam rozwiązanie dla wersji liniowej (\(\displaystyle{ a_{n} =1}\)).
-- 28 maja 2013, o 13:41 --
Errata i rozwiązanie:
\(\displaystyle{ \begin{cases} \frac{1}{ a_{n+1} } \frac{dc_{n+1}\left(t\right) }{dt} = k_{n} \left[c_{n}\left(t\right) \right]^{ a_{n} }-k_{n+1} \left[c_{n+1}\left(t\right) \right]^{ a_{n+1} } \\ c_{1}\left(t\right)= \lim_{ b\to a _{1} }\left[ \left( c ^{0} _{1}\right) ^{1-b} - \left( 1-b\right)bk _{1} t \right] ^{ \frac{1}{1-b} } \\ c_{n}\left(t=0\right)=c^{0} _{n} \\ a_{1}=1 \\ c^{0} _{1} \in \mathbb{R} > 0 \\ c^{0} _{n} \in \mathbb{R} \ge 0 \\ c_{n}\left(t\right) \in \mathbb{R} \ge 0 \\ a_{n} \in \mathbb{R} \ge 0 \\ k_{n} \in \mathbb{R} \ge 0 \\ n \in \mathbb{N} _{+} \\ t \in \mathbb{R} \ge 0 \end{cases}}\)
Kod: Zaznacz cały
#import
import matplotlib.pyplot as plt
import numpy as np
#params
t_list = [[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
t_start = 0
t_end = 25.0
t_diff = 0.0001
n = 10
p = []
k_list = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0]
a_list = [1.0, 1.0, 1.0, 2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.0]
c_0_list = [1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
c_list = []
for m in range(n):
c_list.append([c_0_list[m]])
legendEntries = []
legendText = []
#body
for m in range(n):
c = c_0_list[m]
t = t_start
c_list.append([])
t_list.append([])
step = 0
while t < t_end:
if m == 0:
if a_list[m] == 1.0:
c = c_0_list[m] * np.e**(-a_list[m]*k_list[m]*t)
c_list[m].append(c)
t_list[m].append(t)
t += t_diff
else:
c = ((c_0_list[m])**(1 - a_list[m]) - (1 - a_list[m])*k_list[m]*a_list[m]*t)**(1/(1-a_list[m]))
c_list[m].append(c)
t_list[m].append(t)
t += t_diff
else:
c_diff = t_diff * a_list[m] * (k_list[m-1]*(c_list[m-1][step]**a_list[m-1]) - k_list[m]*(c_list[m][step]**a_list[m]))
c_list[m].append(c)
t_list[m].append(t)
t += t_diff
c += c_diff
step += 1
plt.legend(loc="center right")
p += plt.plot(t_list[m], c_list[m], label= "c_" + str(m) + "(t)")
#print
plt.show(p)