Python图形仅绘制一个点

Python图形仅绘制一个点,python,python-3.x,matplotlib,plot,graph,Python,Python 3.x,Matplotlib,Plot,Graph,目前我正试图用参数L绘制马德隆常数。获得的值是正确的,但当我试图绘制图表时,它只显示一个点。我假设它要么没有绘制所有的点,要么放大太远 从数学导入sqrt 从pylab导入绘图,显示 进口numpy 德夫马德隆(左): M=0.0 对于范围内的i(-L,L+1): 对于范围(-L,L+1)内的j: 对于范围内的k(-L,L+1): 如果不是(i==j==k==0): M+=(-1)**(i+j+k+1))/sqrt(i*i+j*j+k*k) 返回M 列表=[] L=0 当int(L)

目前我正试图用参数L绘制马德隆常数。获得的值是正确的,但当我试图绘制图表时,它只显示一个点。我假设它要么没有绘制所有的点,要么放大太远

从数学导入sqrt
从pylab导入绘图,显示
进口numpy
德夫马德隆(左):
M=0.0
对于范围内的i(-L,L+1):
对于范围(-L,L+1)内的j:
对于范围内的k(-L,L+1):
如果不是(i==j==k==0):
M+=(-1)**(i+j+k+1))/sqrt(i*i+j*j+k*k)
返回M
列表=[]
L=0
当int(L)<30时:
列表。追加(L)
L=int(L)+1
绘图(L,马德隆(L),颜色为绿色,标记为o)
show()

它绘制所有的点,但是
madelung(L)
总是返回相同的值。
L
在int(L)<30:结束时取
之后的值。但是当我打印madelung(L)时,它会为M打印30个不同的值。这不意味着当我绘制madelung(L)时它应该画出这些点,因为我无法测试:
plot(列表,[madelung(x)代表列表中的x],color='green',marker='o')
。不要使用
list
作为变量名,因为它是python内置的,可能会影响其他代码的行为,所以如果我的建议不起作用,请尝试更改它。但这仍然是一个未经验证的猜测。像一个符咒一样有效!谢谢你的帮助!很高兴它起作用了。你知道它是如何工作的吗?另外,
列表
点很重要,即使我的评论有效,你也应该改变它。它绘制所有点,但是
madelung(L)
总是返回相同的值。
L
在int(L)<30:
结束时取
后的任何值。但是当我打印madelung(L)时,它为M打印了30个不同的值。这难道不意味着当我绘制马德隆(L)时,它应该绘制这些点吗?因为我无法进行测试,所以在这里做了一个完整的分析:
绘制(列表,[madelung(x)代表列表中的x],颜色='绿色',标记='o')
。不要使用
list
作为变量名,因为它是python内置的,可能会影响其他代码的行为,所以如果我的建议不起作用,请尝试更改它。但这仍然是一个未经验证的猜测。像一个符咒一样有效!谢谢你的帮助!很高兴它起作用了。你知道它是如何工作的吗?另外,
列表
点也很重要,即使我的评论有效,你也应该改变它。
from math import sqrt
from pylab import plot, show
import numpy 

def madelung(L):

    M = 0.0

    for i in range(-L,L+1):

        for j in range(-L,L+1):         

            for k in range(-L,L+1):

                if not (i==j==k==0):

                    M += ((-1)**(i+j+k+1))/sqrt(i*i +j*j +k*k)

    return M

list = []
L = 0

while int(L) < 30:
    list.append(L)
    L = int(L) + 1

plot(L, madelung(L), color='green', marker='o')
show()