【问题标题】:Printing two values using Runge Kutta Method使用 Runge Kutta 方法打印两个值
【发布时间】:2016-04-25 00:17:46
【问题描述】:

我正在尝试从此代码中打印 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)

【问题讨论】:

    标签: python runge-kutta


    【解决方案1】:

    您的代码没有任何打印语句,因此不会打印。 尝试插入类似的东西:

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

    您希望打印的位置。对于 Python 3,只需添加括号(print 现在是一个函数)

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

    【讨论】:

    • 可能需要更新以展示如何在 Python 3 中执行此操作;)
    • 我试图在我的代码末尾包含您的代码,但它说 b 未定义。不过,感谢您的帮助。
    • @Cosmoman 把它放在VDP2() 函数中,这个解决方案应该可以工作。
    • @cosmoman 如果您想这样做,您的脚本中缺少一个主要部分。此外,您需要在积分器函数中包含打印语句。无论如何,如果你想调试你的代码,有更好的方法。
    • 我错过了哪一部分?另外,有什么更好的方法?
    猜你喜欢
    • 2014-07-27
    • 1970-01-01
    • 2019-04-14
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多