数学/科学问题的答案是4而不是4.76(总是整数而不是小数)

2024-09-24 04:20:10 发布

您现在位置:Python中文网/ 问答频道 /正文

所以这在某种程度上与我绘制能级的问题有关。你知道吗

不管怎样,我是用离散化得到各种势的能级和波函数,我可能是编程的工具,因为我不知道如何得到能量本征值的数值结果。我有一个强烈的感觉,它必须有可能只是从给定的代码中提取信息(代码有来自linalg模块的eig\u带例程)。但我只是一个工具,不知道怎么做:\

所以我只需要我画的能量的数值。。。你知道吗

我尝试了(这是链接中代码的一部分):

    def calc(Nmesh,POWER,L ,numwav=0):
    #
    dx=L/Nmesh
    x = np.arange(-L,L+0.0001,dx)
    Npts=len(x)

    V = x**POWER

    #
    ai = np.empty((2,Npts))   # ai[:,i] = a[:,i-1]
    ai[0,:] = 1/dx**2 + V     #
    ai[1,:] = -1.0/dx**2/2    #
    ai[1,Npts-2] = -99.0      #
    a = ai[:,1:-1]
    f = report_time(linalg.eig_banded)
    eig, vec = f(a, lower=True,overwrite_a_band=True,
                 select='i',select_range=(0,numwav)
                 ) #

    wave = np.empty(Npts)
    wave[1:-1] = vec[:,numwav]
    wave[0] = 0             #
    wave[Npts-1] = 0        #
    wave = 150*wave + eig[numwav]
    return x, V, wave, eig[numwav]

def main():
    try: numwav = int(sys.argv[1])
    except (IndexError, ValueError):
        numwav = 2
    POWER=4
    L=4.0
    Nmesh = 512
    print 'Nmesh=%d' % Nmesh
    x, V, wave, y = calc(Nmesh, POWER, L,numwav)
    print 'Energy eigenvalue is: %d' % y

但在这个例子中,它的特征值是4,在图上,它更接近于4.76。。。你知道吗

我做错什么了?:(


Tags: 工具代码npwaveai数值能量power
2条回答

这是你的问题:

>>> '%d' % 1.2
'1'

您想要的格式字符串是%f以显示小数点

>>> '%f' % 1.2
'1.200000'

诊断的关键在于它是一个整数而不是你看到的一个浮点数。你知道吗

更多信息可以在http://docs.python.org/library/stdtypes.html找到 例如,可以使用以下格式进行舍入:

>>> '%.2f' % 1.234
'1.23'
>>> '%.2f' % 1.236
'1.24'

这是你的问题吗?你知道吗

>>> 1/2
0

如果是这样,这就是您的解决方案:

>>> from __future__ import division

>>> 1/2
0.5

相关问题 更多 >