当使用两个1F1函数的和时,Tricomi汇合超几何函数的计算可能是病态的,因为它们的大小可能几乎相等,但符号相反。mpmath函数"hyperu“在内部使用任意精度,并在默认模式下生成35位有效数字的结果。这些数字中有多少是可靠的?它依赖于传递的参数吗? import mpmath
x = mpmath.hyperu(a, b + 1, u)
我尝试将提供任意精度算法的mpmath库和scipy.stats库结合使用:
from mpmath import mpf
from scipy.stats import norm
x = mpf(3) # arbitrary precision float
y = norm.cdf(x)
但是,norm.cdf通过调用np.isnan(x)在内部检查其输入是否为数字。因此,我得到了以下错误:
Traceback (most recent call last):
File "name of my file", line 5, in <module>
y = n
我在试着存储 x=9999999999999.9999999999 在字符串变量中。但它正在变得越来越圆滑。 c=str(9999999999999.9999999999)
print c
'1e+13' 在这里,我试图读取一个JSON文件并将其转换为CSV...但在读取9999999999999.9999999999时,它会自动转换为1e+13. with open(inputfilename) as json_file:
data = json.load(json_file)
selected_month=str(data['selected
我想用"DE HOOG“算法进行数值拉普拉斯逆变换。我想使用"mpmath“包,我从链接中安装了它:
假设我需要在t=1中找到以下函数的逆拉普拉斯变换:
F= 1/(s-1)
F的Laplace逆变换是: e^(t)
在t=1,预期结果为=e
import mpmath as mp
import numpy as np
def f(s):
return 1 / (s-1)
t = np.linspace(0.01,0.5,10)
G = []
for i in range(0,4):
G.append(mp.invlapdehoog(f, t[i]))
我想使用Sympy多项式,但我也想使用更高精度的系数。
这么做似乎给了我sympy.core.numbers.float系数的多项式。
import sympy
from sympy import Poly
from sympy.abc import x
from gmpy2 import mpfr, get_context
get_context().precision = 150
#float64 can't tell this from 1.0
one_and_change = mpfr('1.0000000000000000000000000000000000001
我注意到,尽管听起来很奇怪,但mpmath的性能取决于是否安装了sagemath,而与当前会话中是否加载了sage模块无关。特别是,我在使用多精度浮点数的操作中体验到了这一点。
示例:
from mpmath import mp
import time
mp.prec = 650
t = time.time()
for i in range(1000000):
x_mpmath + y_mpmath
w = time.time()
print('plus:\t', (w-t), 'μs')
t = time.time()
for i in range(
我是SymPy的新手,我希望有人能指出优化我的代码的方法。
我需要用非常高的十进制位(150-300)对一个涉及到的表达式进行数值计算,而且考虑到要计算的参数空间,每个参数集花费30秒或更长的时间,- which非常长。
我在集成处理中使用了lambdify和mpmath后端和meijerg=True,它显著降低了运行时间。还有其他可以使用的方法吗?理想情况下,将评估时间推到1秒以下是很好的。我的代码是:
import mpmath
from mpmath import mpf, mp
mp.dps = 150 # ideally would like to have this set to
我写了这个程序来计算圆周率。它给了我50位小数。如何才能获得更高的精确度?
# pi.py - arctan(1) * 4 = pi
from math import *
from decimal import *
err = 0.0000000000000001
def arctan(n, err):
"""Uses Gregory's formula for calculating atan."""
temp = n
atan = 0
i = 3
while (abs(atan - n) &
我编写了下面的代码来计算概率。我知道我用的公式是正确的。该程序对m和n的小值给出了合理的结果,但对于m和n的大值,结果sumC在不期望的区间0,1之外。变量iter的值很大,这可能是原因。我该如何处理这个问题?
import math
from scipy.special import comb
n = 50
m = 100
k = 15
P=[]
sumC = 0
for j in range(k, m+1):
if not (n-j < 0):
iter = (-1)**(j+k) * comb(j, k, exact=True) * comb(m, j, e
我在ubuntu16.04.2LTS和NumPy 1.12.1中使用python3.5.2。当我使用poly1d函数获取coeffs时,计算中出现了一个错误:
>>> from numpy import poly1d
>>> from math import fabs
>>> pol = poly1d([2357888,459987,78123455],True)
>>>[int(x) for x in pol.coeffs]
[1, -80941330, 221226728585581, -847325295663565