Ahojte.
Som úplný nováčik v Pythone (viac menej celkovo v programovaní).
Mám fungujúci kód, ktorý vyzerá takto:
import numpy as np
import scipy.integrate as sp
import sys
g, l, k = 9.81, 10, float(input())
PTS = 6
def rhs( y, t, g, l, k ): return [ k*t/l * np.cos(y[1]) - g/l * np.sin(y[1]),y[0] ]
y0 = [ 0, 0 ]
t = np.linspace( 0, 6, PTS+1 )
y = sp.odeint( rhs, y0, t, args = (g, l, k) )
for i in range(PTS): print( t[i], np.arctan(k*t[i]/g) *180/np.pi
a po spustení je potrebné zadať hodnotu pre k (v mojom prípade 0.5).
Výsledok je:
čas hodnota y
0.0 0.0
1.0 2.91774937823
2.0 5.82044363971
3.0 8.69348861202
4.0 11.5231772897
5.0 14.297051396
Poslednú hodnotu y = 14.297051396 (pre čas t=5)chcem použiť ako počiatočnú podmienku a vypočítať hodnoty pre čas t = 6, ..., 16, pričom chcem zadať hodnotu k=1.1.
Skúšala som viacero kódov, no nič nefunguje .... Ak to zadám takto:
import numpy as np
import scipy.integrate as sp
import sys
g, l, k = 9.81, 10, float(input())
PTS = 12
def rhs( y, t, g, l, k ): return [ k*t/l * np.cos(y[1]) - g/l * np.sin(y[1]),
y[0] ]
y0 = [ 14.297051396, 5 ]
t = np.linspace( 5, 17, PTS+1 )
y = sp.odeint( rhs, y0, t, args = (g, l, k) )
for i in range(PTS): print( t[i], np.arctan(k*t[i]/g) *180/np.pi )
tak výsledok je rovnaký bez ohľadu na to, akú zadám počiatočnú podmienku y0. Vie mi niekto poradiť, čo robím zle? Ďakujem!