该函数不返回列表,Sage不会绘制它

时间:2014-10-24 09:46:10

标签: plot point sage

我已经获得了函数f(x,y),我想多次迭代它并绘制结果点。我所做的是:

def orbita(p,n):
    a = [p]
    for i in range(n-1):
        p = f(p[0],p[1])
        a.append(p)
    print a

当应用于点p = (1,2)并要求n = 5次迭代时,此函数返回以下内容:

[(1, 2), (2, 5/2), (5/2, 29/20), (29/20, 1241/1450), (1241/1450, 7285162/5218405)]

哪个是对的。但是,当我尝试按point(orbita((1,2),5))绘制这个点列表时,我只是得到一个空图。

起初我认为这是一个问题,point()绘制"单个点(作为元组),点列表,单个复数或列表复数",引自here,因为我选中type(orbita((1,2),5))并获得了NoneType。但是,当我尝试通过L = orbit((1,2),5)将列表分配给变量时,我的变量为空,因为键入L不返回任何内容,所以我不确定是否存在问题。如果我复制列表并写下:

point([(1, 2), (2, 5/2), (5/2, 29/20), (29/20, 1241/1450), (1241/1450, 7285162/5218405)])

情节完美无缺,但我想用这个函数绘制至少几百个点,所以我不想每次复制它们。我是Sage和Python的新人,所以我真的不知道我在任何级别做错了什么。

如何打印函数orbita(p,n)的结果或如何修改它以便通过键入point(orbita(p,n))我获得一个情节?

1 个答案:

答案 0 :(得分:2)

这是你的问题。

  

此函数返回以下内容:

不,它没有。它打印以下内容。正确识别后,它会返回None。所以你必须让它返回元组列表。看起来你有丰富的Python经验来弄清楚如何做到这一点,所以我不会包含细节,但如果你还有问题请跟进。