numerica matrices lineal libreria interpolacion graficar escribir ecuaciones diferenciales derivada como python scipy ode

matrices - numpy python 3.6 windows



resolver dos ecuaciones de dimensiĆ³n diferencial en python con scipy (1)

Aplique truco para desingularizar la división por y , imprima todas las evaluaciones de función ODE, trace ambos componentes y use la ecuación diferencial correcta con el código modificado

import matplotlib.pyplot as pl import numpy as np from scipy.integrate import odeint def func(z,t): x, y=z print t,z return [6*y, (2*t-3*x)*y/(4*y**2+1e-12)] z0=[1,2] t = np.linspace(0,1,501) xx=odeint(func, z0, t) pl.figure(1) pl.plot(t, xx[:,0],t,xx[:,1]) pl.legend() pl.show()

y se ve que en t=0.64230232515 la singularidad de y=0 , donde y comporta como una función de raíz cuadrada en su vértice. No hay forma de cruzar esa singularidad, ya que la pendiente de y va al infinito. En este punto, la solución ya no es diferenciable continuamente, y por lo tanto este es el punto extremo de la solución. La continuación constante es un artefacto de la desingularización, no una solución válida.

Soy un novato en Python. Tengo un sistema diferencial simple, que consiste en dos variables y dos ecuaciones diferenciales y condiciones iniciales x0=1, y0=2 :

dx/dt=6*y dy/dt=(2t-3x)/4y

ahora estoy tratando de resolver estas dos ecuaciones diferenciales y elijo odeint . Aquí está mi código:

import matplotlib.pyplot as pl import numpy as np from scipy.integrate import odeint def func(z,b): x, y=z return [6*y, (b-3*x)/(4*y)] z0=[1,2] t = np.linspace(0,10,11) b=2*t xx=odeint(func, z0, b) pl.figure(1) pl.plot(t, xx[:,0]) pl.legend() pl.show()

pero el resultado es incorrecto y hay un mensaje de error:

Excess work done on this call (perhaps wrong Dfun type). Run with full_output = 1 to get quantitative information.

No sé qué está mal con mi código y cómo puedo solucionarlo. Cualquier ayuda será útil para mí.