我已经获得了函数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))
我获得一个情节?
答案 0 :(得分:2)
这是你的问题。
此函数返回以下内容:
不,它没有。它打印以下内容。正确识别后,它会返回None
。所以你必须让它返回元组列表。看起来你有丰富的Python经验来弄清楚如何做到这一点,所以我不会包含细节,但如果你还有问题请跟进。