2016-04-25 4 views
0

このコードからbとcを印刷しようとしていますが、私は運がありません。私が正しい場合、このコードはステップサイズが0.05のいくつかの点を出力するはずですが、私はそれを見ていません。誰もこのコードから2つの値を印刷する方法を知っていますか?Runge Kuttaメソッドを使用して2つの値を出力する

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ステートメントがないため、印刷されません。 のようなものを挿入してみてください。あなたは、印刷が起こるしたい

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

関連する問題