2016-04-25 1 views
0

Я пытаюсь напечатать b и c из этого кода, но мне не повезло. Если я прав, этот код должен выводить несколько точек с размером шага 0,05, но я этого не вижу. Кто-нибудь знает, как напечатать два значения из этого кода?Печать двух значений с использованием метода Runge Kutta

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 или Python3? – mwm314

+0

Я использую Python2. – Cosmoman

ответ

0

У вашего кода нет оператора печати, поэтому он не будет печататься. Попробуйте вставить что-то вроде:

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

Где вы хотите, чтобы печать случиться. Для Python 3 просто добавьте круглые скобки (функция print теперь является функцией)

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

Можете обновить, чтобы показать, как это сделать в Python 3;) – mwm314

+0

Я попытался включить ваш код в конец моего кода, но он говорит, что b не определен. Спасибо за помощь. – Cosmoman

+0

@ mwm314 Сделано, спасибо. – Cyb3rFly3r