import numpy as np
import matplotlib.pyplot as plt

from cycler import cycler

style_cycler = (cycler(linestyle=['-', '--', '-.', ':',(0, (3, 5, 1, 5, 1, 5))])+cycler(color=['teal',"firebrick","forestgreen","darkviolet","darkorange"]))
plt.rc('axes', prop_cycle=style_cycler)

#%
def sol1(t,K,y0):
    return np.exp(K*t)*y0


#%%
T=np.linspace(0,2,1000)
K=1
for y0 in [0,1,2,3]:
    y=sol1(T,K,y0)
    plt.plot(T,y,label="y0="+str(y0))
plt.legend()
plt.show()

#%%
plt.clf()
plt.ylim([0,10])
for k in range(-2,4,1):
    y=sol1(T,k,1)
    plt.plot(T,y,label="K="+str(k))
plt.legend()
plt.show()

#%%
def sol2(t,K,r,y0):
    return r/(1+(K/y0-1)*np.exp(-r*t))



T=np.linspace(0,5,1000)
K=2
r=1
for y0 in [0.25,0.5,1,1.25,1.5,2.5,3]:
    y=sol2(T,K,1,y0)
    plt.plot(T,y,label="y0="+str(y0))
plt.legend()
plt.show()
