获得4而不是4.76作为数学/科学问题的答案(总是整数而不是十进制)

din*_*o_d 1 python math

因此,这与绘制能量等级链接到问题的问题有关.

Anywho,我正在使用离散化来获得各种电位的能级和波函数,而且我可能是编程工具,因为我不知道如何得到能量本征值的数值结果.我有一种强烈的感觉,必须能够从给定的代码中提取该信息(代码具有来自linalg模块的eig_banded例程).但我只是一个工具,无法想象如何做到:

所以我只需要我绘制的能量的数值......

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

    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
Run Code Online (Sandbox Code Playgroud)

但是对于这个例子,它将给出特征值为4,并且在图上它更接近4.76 ...

我究竟做错了什么?:(

nin*_*cko 6

这是你的问题:

>>> '%d' % 1.2
'1'
Run Code Online (Sandbox Code Playgroud)

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

>>> '%f' % 1.2
'1.200000'
Run Code Online (Sandbox Code Playgroud)

诊断的离合是事实,它是一个整数而不是你看到的浮子.

有关详细信息 ,请访问http://docs.python.org/library/stdtypes.html例如,您可以使用以下格式进行舍入:

>>> '%.2f' % 1.234
'1.23'
>>> '%.2f' % 1.236
'1.24'
Run Code Online (Sandbox Code Playgroud)