Estoy un poco confundido con odeint.

He encontrado un ejemplo a continuación para resolver y"=ay + by'. Así que parece que y[0] es la función, y[1] es la primera derivada.

Lo hace de la siguiente expresión significa y[1] =y' y y'[1]= a*y[0]+b*y[1] ?

Si se tratara de y[2], a*y[0]+b*y[1], ¿qué significaría?

Estoy un poco confundido ya que la expresión no dicen que el lado izquierdo de la ecuación.

Yo también se encuentran expresiones como [a(y[0], y[1]), b(y[0], y[1])] pero no tienen ni idea de la ecuación diferencial.

Aquí está un ejemplo:

from scipy.integrate import odeint
from pylab import * # for plotting commands

def deriv(y,t): # return derivatives of the array y
    a = -2.0
    b = -0.1
    return array([ y[1], a*y[0]+b*y[1] ])

time = linspace(0.0,10.0,1000)
yinit = array([0.0005,0.2]) # initial values
y = odeint(deriv,yinit,time)
figure()
plot(time,y[:,0])
xlabel('t')
ylabel('y')
show()
  • He encontrado la respuesta, las ecuaciones deben ser representados de la siguiente manera: y1’= y2 , y2’=y3, .., yn’=F(x,..) y sólo a los lados de la parte derecha de las ecuaciones tienen que ser dado para la solución de la ecuación diferencial.
InformationsquelleAutor pappu | 2012-02-06

2 Comentarios

  1. 2

    Vamos a usar Y en deriv en lugar de y para el resto de la respuesta clara:

    def deriv(Y,t): # return derivatives of the array Y
        a = -2.0
        b = -0.1
        return array([ Y[1], a*Y[0]+b*Y[1] ])

    Función deriv toma Y = [y, y'] como la de entrada.

    Y debe salida de sus derivados ([y', y'']).

    y' = Y[1]

    y'' = a*Y[0]+b*Y[1]

  2. 1

    Leer la documentación en odeint. Se requiere como entrada la ecuación de la siguiente ordenación:

    dy/dt = func(s,t0,…)

    Tal y como yo lo entiendo, el primer elemento de array([ y[1], a*y[0]+b*y[1] ]), es decir, y[1] es puesto como y en dy/dt que da dy[1]/dt = y[2]. El segundo elemento, es decir, a*y[0]+b*y[1] sirve como func(y,t0,...)

Dejar respuesta

Please enter your comment!
Please enter your name here