2016-04-25 5 views
0

Ich versuche, b und c aus diesem Code zu drucken, aber ich habe kein Glück. Wenn ich richtig liege, sollte dieser Code mehrere Punkte mit einer Schrittweite von 0,05 ausgeben, aber ich sehe es nicht. Kann jemand zwei Werte von diesem Code drucken?Drucken von zwei Werten mit Runge Kutta Methode

import math 

def rK3(a, b, c, fa, fb, fc, hs): 
    a1 = fa(a, b, c)*hs 
    b1 = fb(a, b, c)*hs 
    c1 = fc(a, b, c)*hs 
    ak = a + a1*0.5 
    bk = b + b1*0.5 
    ck = c + c1*0.5 
    a2 = fa(ak, bk, ck)*hs 
    b2 = fb(ak, bk, ck)*hs 
    c2 = fc(ak, bk, ck)*hs 
    ak = a + a2*0.5 
    bk = b + b2*0.5 
    ck = c + c2*0.5 
    a3 = fa(ak, bk, ck)*hs 
    b3 = fb(ak, bk, ck)*hs 
    c3 = fc(ak, bk, ck)*hs 
    ak = a + a3 
    bk = b + b3 
    ck = c + c3 
    a4 = fa(ak, bk, ck)*hs 
    b4 = fb(ak, bk, ck)*hs 
    c4 = fc(ak, bk, ck)*hs 
    a = a + (a1 + 2*(a2 + a3) + a4)/6 
    b = b + (b1 + 2*(b2 + b3) + b4)/6 
    c = c + (c1 + 2*(c2 + c3) + c4)/6 
    return a, b, c 

def fa2(a, b, c): 
    return 0.9*(1 - b*b)*a - b + math.sin(c) 

def fb2(a, b, c): 
    return a 

def fc2(a, b, c): 
    return 0.5 

def VDP2(): 
    a, b, c, hs = 1, 1, 0, 0.05 
    while (c<6): 
     a, b, c = rK3(a, b, c, fa2, fb2, fc2, hs) 
+0

Python2 oder Python3? – mwm314

+0

Ich benutze Python2. – Cosmoman

Antwort

0

Ihr Code enthält keine Druckanweisung, daher wird nicht gedruckt. Probieren Sie etwas einfügen wie:

print 'b = {0}, c = {1}'.format(b,c) 

Wo Sie den Druck wollen passieren. Für Python 3 fügen Sie einfach Klammern hinzu (Drucken ist jetzt eine Funktion)

print('b = {0}, c = {1}'.format(b,c)) 
+0

Möchte aktualisieren, um zu zeigen, wie man es in Python 3 macht;) – mwm314

+0

Ich habe versucht, Ihren Code am Ende meines Codes einzufügen, aber es sagt, dass b nicht definiert ist. Danke für die Hilfe. – Cosmoman

+0

@ mwm314 Fertig, danke. – Cyb3rFly3r