- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以使用 scipy quad 和 nquad 进行涉及可变积分限制的四重积分。问题是当无法达到要求的容差时,使用的默认精度会引发错误。使用 mpmath 积分器,我可以通过设置 mp.dps = 任意来定义任意精度,但是我看不到限制是否以及如何像 nquad 一样变得可变。 Mpmath 还在 quadgl 中使用 Gauss-Legendre 方法提供了非常快速的执行,这是非常可取的,因为我的函数是平滑的,但是使用 scipy 完成四个积分需要大量时间。请帮忙。
下面只是一个没有达到我的目标的简单函数:
from datetime import datetime
import scipy
from scipy.special import jn, jn_zeros
import numpy as np
import matplotlib.pyplot as plt
from mpmath import *
from mpmath import mp
from numpy import *
from scipy.optimize import *
# Set the precision
mp.dps = 15#; mp.pretty = True
# Setup shortcuts, so we can just write exp() instead of mp.exp(), etc.
F = mp.mpf
exp = mp.exp
sin = mp.sin
cos = mp.cos
asin = mp.asin
acos = mp.acos
sqrt = mp.sqrt
pi = mp.pi
tan = mp.tan
start = datetime.now()
print(start)
#optionsy={'limit':100, 'epsabs':1.49e-1, 'epsrel':1.49e-01}
#optionsx={'limit':100, 'epsabs':1.49e-1, 'epsrel':1.49e-01}
def f(x,y,z):
return 2*sqrt(1-x**2) + y**2.0 + z
def rangex(y,z):
return [-1,1]
def rangey(z):
return [1,2]
def rangez():
return [2,3]
def result():
return quadgl(f, rangex, rangey, rangez)
"""
#The below works:
def result():
return quadgl(f, [-1,1], [1,2], [2,3])
"""
print(result())
end = datetime.now()
print(end-start)
最佳答案
好的,让我回答一些问题,很难在评论中添加代码
MP 数学的简单优化是遵循简单的规则:
def f3():
def f2(x):
def f1(x,y):
def f(x,y,z):
return 1.0 + (x+y)*y + 3.0*z
return mpmath.quadgl(f, [-1.0, 1], [1.2*x, 1.0], [0.25*y, x*x])
return mpmath.quadgl(f1, [-1, 1.0], [1.2*x, 1.0])
return mpmath.quadgl(f2, [-1.0, 1.0])
在我的电脑上从 12.9 秒变为 10.6 秒,大约 20% 的折扣
关于python - Python 中是否有多个积分器提供可变积分限制(如 scipy)和高精度(如 mpmath)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63443828/
我正在使用 numpy 和 pyfits 来操作光谱,我需要高精度(大约 8-10 位小数的值可能高达 10^12)。为此,数据类型“decimal”将是完美的(float64 不够好),但不幸的是
我似乎不知道如何向 html5 地理定位添加高精度和监视位置。我希望 GPS 随着用户的移动而更新。有人可以帮忙吗? if(navigator.geolocation) { n
我正在尝试比较搜索算法的执行时间,任何人都可以帮助我编写代码,我的问题在于执行时间,我使用的总是 0.00000 秒。 调用二分查找的示例: //BINARY SEARCH clock_t start
您能告诉我如何在 Win32 和 Linux 上的 Python2.6 中获得高精度 sleep 功能吗? 最佳答案 您可以在 sleep() 中使用 float : The argument may
我正在制作一个应用程序,它正在监听定期更新的价格,但偶尔我的数据源会抛出类似“1.79769313486232e+308”的信息。发送的数字永远不会是非常大的数字(例如“179769313486232
我在一个 2D 游戏引擎上工作,它有一个名为 LimitFrameRate 的函数来确保游戏不会运行得太快以至于用户无法玩游戏。在这个游戏引擎中,游戏的速度与帧率有关。所以通常人们希望将帧速率限制在
我已经通过 tf.keras 使用谷歌 BERT 训练了一个文本分类器。 我的数据集包含 50,000 行数据,均匀分布在 5 个标签上。这是一个更大数据集的子集,但我选择了这些特定标签,因为它们彼此
我是一名优秀的程序员,十分优秀!