计算一个大数字的系列:Python

By simon at 2018-02-07 • 0人收藏 • 46人看过

注:更正了for i in xrange(10000)行中指出的愚蠢错误 我正在写一个计算和绘制MittagLe的代码使用ffler函数 一系列的扩张,

import numpy as np
import scipy as sp
from decimal import Decimal
import pylab as plt
from math import gamma


def MLf(x,a):
    mlf = Decimal(0)
    X = (x)
    term = Decimal(0)
    for j in xrange(100):
        term = Decimal((-1)**j*(X**(j*a)))/Decimal(gamma(a*j+1))
        mlf = Decimal( term + mlf )
    return mlf


x = np.arange(0,1000,0.1)
y = np.arange(0,1000,0.1)

for i in xrange(10000):
    y[i] = MLf(x[i],1)


plt.plot(x,y)
plt.show()
然而,函数的计算(MLf)在x> 30时似乎失败了。 氏这可能是由于数量有限而引起的系列分歧 迭代。但是,如果我增加迭代次数,它显示了一个数学范围 错误。 这是价值观的一小部分,显示它开始发散的地方
x        y 
40.8 -10.9164990034 
40.9 -12.2457070844 
41.0 -17.4658523232 
41.1 -10.8310002768 
41.2 -10.5217830371 
41.3 -13.9001627961 
41.4 -30.8944707201 

1 个回复 | 最后更新于 2018-02-07
2018-02-07   #1

最后重新使用x和y,但只能更换 指数高达100.所以,最后这样做,我窝RKS:

for i in range(10000):  # Or use xrange in Python 2.7
    y[i] = MLf(x[i], 1)

plt.plot(x,y)
plt.show()
或者为这个部分制作不同的数组。

登录后方可回帖

Loading...