01 Jun 2010

Python differential

Category dev
Tags #python #math
#!/usr/bin/python
 
from scipy import linspace, array
from scipy.integrate import odeint,ode
from pylab import plot, show
import matplotlib.pyplot as plt
from numpy import arange
import random as rand
 
def dotu(r,t0):
    x,y = r
    d = [0,1]
 
    d[0] = y
    d[1] = x-x**2-y
 
    return d
 
 
def dplot(s, color="green"):
    t = linspace(0,55, 700)
    print t
    u=odeint(dotu,s,t)
    u=array(u).transpose()
    plot(u[0], u[1], color)
 
for x in arange(-1.52,2, 0.25):
    print x
    dplot([x,3])
 
 
plt.grid(True)
show()

UPD 2024, Python 3 update

#from scipy import array
from scipy.integrate import odeint,ode
from pylab import plot, show
import matplotlib.pyplot as plt
from numpy import arange, linspace, array
import random as rand

def dotu(r,t0):
    x,y = r
    d = [0,1]

    d[0] = y
    d[1] = x-x**2-y

    return d


def dplot(s, color="green"):
    t = linspace(0,55, 700)
    u=odeint(dotu,s,t)
    u=array(u).transpose()
    plot(u[0], u[1], color)

for x in arange(-1.52,2, 0.25):
    dplot([x,3])


plt.grid(True)
show()

Дифференциальные исчесления в python реализовываются с помощью библиотек:

http://www.scipy.org/
http://ru.wikipedia.org/wiki/SciPy

http://numpy.scipy.org/
http://ru.wikipedia.org/wiki/NumPy

Графки рисуются с помощью http://matplotlib.sourceforge.net/

Но не всё так гладко, возможно в новых версиях уже поправлены выявленные баги, но в том ч то использовалось в примере были ошибки вычисления ODE решателей которые приводили к остановке программы и соотвественно нелзя было нарисовать график, из за этого пришлось использовать другие платформы.

Все баги к этому моменту починили все работает:

Comments