【发布时间】:2020-11-23 23:28:43
【问题描述】:
我想计算一个函数的函数范数。我的用例是两个函数的距离,但这不如在 python 中以正确的方式计算它重要。查看我所做的文档:
import numpy as np
import scipy.integrate as integrate
def functional_diff_norm(f1, f2, lb, ub, p=2):
"""
Computes norm:
||f||_p = (int_S |f|^p dmu)^1/p
https://en.wikipedia.org/wiki/Lp_space
"""
norm = integrate.quad(lambda x: abs(f1(x) - f2(x))**p, lb, ub)[0]**(1/p)
return norm
但想确保它是正确的。
另外,我想将其推广到更高的维度。这容易处理吗?如果是,达到什么尺寸(和精度?)
交叉发布:https://discuss.pytorch.org/t/how-does-one-compute-the-norm-of-a-function-in-python/91527
【问题讨论】:
-
对于更高的维度,如果您使用
quad,这可能需要更多的计算时间,具体取决于您的功能。如果您想要更快的结果,逻辑上要问的问题是它需要有多准确,不太准确的结果更便宜。 -
@PeterMeisrimel 我认为对我来说最好的方法是给出一个时间限制,然后根据我给出的预算计算积分。或者更好的是,我同时给出预算和准确性,无论哪个首先满足都会停止计算。这在某处可用吗? (当然适用于任何维度)
-
我对多维数值积分不太了解,但我认为蒙特卡洛类型的方法可能适合这个预算概念。
quad具有自适应性和确定性,您可以选择公差,这将大致对应于最终的精度。
标签: python numpy numerical-methods numerical-integration