Python : Laufzeit Warnung : Überlauf aufgetreten, die in Quadrat, addieren, multiplizieren, subtrahieren

Ich bin Anfang mit Python, damit ich vielleicht Fragen, eine nicht so subtile Frage, aber nach ziemlich viel recherche konnte ich nicht beheben dieser Fehler.
Ich bin wirklich versucht zu lösen, ein Physik-problem mit dem Grau-Scott-Modell, aber ich bin stecken, ganz am Ende des Codes : die Ergebnisse werden nicht als zahlen, und es ist ein überlauf aufgetreten im Quadrat, addieren, multiplizieren und subtrahieren.

Jemand hier der eine Ahnung von wo das kommt ?

Dank !

Dies sind die Anfangsbedingungen für das problem, das ich zu lösen versuche :

n = 192
Du, Dv, F, k = 0.00016, 0.00008, 0.035, 0.065 
dh = 5/(n-1)  
T = 8000
dt = .9 * dh**2 / (4*max(Du,Dv))
nt = int(T/dt)

uvinitial = numpy.load('./uvinitial.npz')

Uin = uvinitial['U']
Vin = uvinitial['V']

Nun, hier sind meine Funktionen :

def Nd1(U,V) :
    return - U*(V)**2 + F*(1-U)


def Nd2(U,V) :
    return U*(V)**2 -(F+k)*V


def gray_scott_solve(Du, Dv, dh, dt, nt, Uin, Vin, Nd1, Nd2):

    Uplus = Uin.copy()
    Vplus = Vin.copy()

    for n in range(nt):

        U = Uplus.copy()  
        V = Vplus.copy()

        Uplus[1:-1,1:-1] = ( Nd1(U[1:-1,1:-1], V[1:-1,1:-1]) + Du/(dh**2) \
                            *(U[2:,1:-1] + U[:-2,1:-1] - 4*U[1:-1,1:-1]) \
                            + U[1:-1,2:] + U[1:-1,:-2] )*dt \
                            + U[1:-1,1:-1]

        Uplus[:,-1] = Uplus[:,-2]    
        Uplus[-1,:] = Uplus[-2,:]
        Uplus[:,0] = Uplus[:,1]
        Uplus[0,:] = Uplus[1,:]

        Vplus[1:-1,1:-1] = ( Nd2(U[1:-1,1:-1], V[1:-1,1:-1]) + Du/(dh**2) \
                            *(V[2:,1:-1] + V[:-2,1:-1] - 4*V[1:-1,1:-1]) \
                            + V[1:-1,2:] + V[1:-1,:-2] )*dt \
                            + V[1:-1,1:-1]

        Vplus[:,-1] = Vplus[:,-2]
        Vplus[-1,:] = Vplus[-2,:]
        Vplus[:,0]= Vplus[:,1]
        Vplus[0,:]= Vplus[1,:]


    return U, V

Möchte ich nun die Ergebnisse gedruckt ich bin auf der Suche nach :

U, V = gray_scott_solve(Du, Dv, dh, dt, nt, Uin, Vin, Nd1, Nd2)

print(U[100,::40])

Und ich endlich diesen Fehler :

[ nan  nan  nan  nan  nan]

C:\Users\Anto\Anaconda3\lib\site-packages\ipykernel\__main__.py:2: RuntimeWarning: overflow encountered in square from ipykernel import kernelapp as app
C:\Users\Anto\Anaconda3\lib\site-packages\ipykernel\__main__.py:2: RuntimeWarning: overflow encountered in multiply from ipykernel import kernelapp as app
C:\Users\Anto\Anaconda3\lib\site-packages\ipykernel\__main__.py:5: RuntimeWarning: overflow encountered in square
C:\Users\Anto\Anaconda3\lib\site-packages\ipykernel\__main__.py:5: RuntimeWarning: overflow encountered in multiply
C:\Users\Anto\Anaconda3\lib\site-packages\ipykernel\__main__.py:11: RuntimeWarning: invalid value encountered in add
C:\Users\Anto\Anaconda3\lib\site-packages\ipykernel\__main__.py:11: RuntimeWarning: overflow encountered in multiply
C:\Users\Anto\Anaconda3\lib\site-packages\ipykernel\__main__.py:11: RuntimeWarning: invalid value encountered in subtract
C:\Users\Anto\Anaconda3\lib\site-packages\ipykernel\__main__.py:18: RuntimeWarning: invalid value encountered in add
C:\Users\Anto\Anaconda3\lib\site-packages\ipykernel\__main__.py:18: RuntimeWarning: overflow encountered in multiply
C:\Users\Anto\Anaconda3\lib\site-packages\ipykernel\__main__.py:18: RuntimeWarning: invalid value encountered in subtract
Es sieht aus wie Sie mit der Methode der Linien (en.wikipedia.org/wiki/Method_of_lines), um annähernd an die PDEs als Systeme von ODEs, und dann über die Eulersche Methode (en.wikipedia.org/wiki/Euler_method) zu lösen, die Oden. Sind Sie sicher, dass Ihre Wahl der dt ist klein genug, um sicherzustellen, dass die Euler-Methode ist stabil?
Gut, ich wusste nicht, es hieß die Methode der Linien, aber ja, das ist es, was ich versuche zu tun. Ich habe in der Tat entledigte sich die Fehlermeldung mit einem kleineren dt, aber leider ist mein Lehrer (ich bin ein Physik-student) will mich, um Antworten zu finden, die mit diesem spezifischen dt. Ich werde weiter suchen und vielleicht versuchen, eine weniger instabile Methode, vielen Dank !

InformationsquelleAutor Reblochon Masqué | 2015-12-14

Schreibe einen Kommentar