我需要计算函数: 和 其中和并且通常非常小()。是否有任何通用方法可以为这些“特殊”功能生成高精度算法?
三角函数的计算比率
计算科学
特殊功能
2021-12-16 09:51:34
2个回答
对枚举数和分母进行多项式展开(la l'Hopital 规则),你会得到一个有理函数,对于小的,它将很好地逼近函数。
例如:
如果您知道要评估的范围,您可以做得更好。 然后,您可以通过更适合周围的泰勒展开。
我的方法是使用 SymPy 之类的软件,如下所示:
from sympy import var, sin, S
var("x a")
g = sin(a*x)/sin(x)
gseries = g.series(x, 0, 10).removeO()
s = {x: S(1)/100, a: S(1)/2}
print gseries.subs(s).n(30)
print g.subs(s).n(30)
print "%.17f" % g.subs({x: 1./100, a: 1./2})
打印:
0.500006250065104828565736800905
0.500006250065104828565736868886
0.50000625006510480
第一个数字是 10 项截断的泰勒级数展开式,第二个数字是精确评估。SymPy 使用精确算术,在本例中我使用 x = 1/100 和 a = 1/2,但您可以使用它。最后,我将它评估为 30 个十进制数字,以便人们可以轻松地比较这些数字。第三个数字是使用 Python 浮点数的双精度计算。
在这种情况下,在我看来,没有取消。但是对于其他表达式,直接双精度评估可能不够准确,然后级数扩展是评估它的一种方法。另一个是有理逼近,我过去MiniMaxApproximation
在 Mathematica 中使用过,并取得了巨大的成功。
其它你可能感兴趣的问题