Печать двух значений с использованием метода Рунге-Кутты

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

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)

person Cosmoman    schedule 25.04.2016    source источник


Ответы (1)


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

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

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

print('b = {0}, c = {1}'.format(b,c))
person Cyb3rFly3r    schedule 25.04.2016
comment
Возможно, вы захотите обновить, чтобы показать, как это сделать в Python 3;) - person Matt Messersmith; 25.04.2016
comment
Я попытался включить ваш код в конец своего кода, но он говорит, что b не определено. Но спасибо за помощь. - person Cosmoman; 25.04.2016
comment
@Cosmoman поместил его в функцию VDP2(), и это решение должно работать. - person Matt Messersmith; 25.04.2016
comment
@cosmoman В вашем сценарии отсутствует основная часть, если вы хотите это сделать. Кроме того, вам необходимо включить оператор печати в функцию интегратора. В любом случае, если вы хотите отладить свой код, есть лучшие способы. - person Cyb3rFly3r; 25.04.2016
comment
Какую часть мне не хватает? Кроме того, что является лучшим способом? - person Cosmoman; 25.04.2016
comment
Дополнительную информацию о Python можно найти здесь. Для отладки вы можете использовать pdb. SO не является подходящей платформой для обучения программированию. - person Cyb3rFly3r; 25.04.2016