假设我f(x)
在a
和之间定义了一个函数b
。此函数可以有多个零,但也可以有许多渐近线。我需要检索此函数的 所有 零。最好的方法是什么?
实际上,我的策略如下:
U = numpy.linspace(a, b, 100) # evaluate function at 100 different points
c = f(U)
s = numpy.sign(c)
for i in range(100-1):
if s[i] + s[i+1] == 0: # oposite signs
u = scipy.optimize.brentq(f, U[i], U[i+1])
z = f(u)
if numpy.isnan(z) or abs(z) > 1e-3:
continue
print(‘found zero at {}’.format(u))
除了我看到两个潜在的问题外,该算法似乎有效:
f(x) = x**2
),但是,我认为在我正在评估的函数中不会出现零。您是否有更好的策略(仍然有效)来找到函数的所有零?
我认为这个问题并不重要,但是对于那些好奇的人,我正在研究光纤中波传播的特征方程。该函数看起来像(其中V
和ell
是先前定义的,并且ell
是一个正整数):
def f(u):
w = numpy.sqrt(V**2 - u**2)
jl = scipy.special.jn(ell, u)
jl1 = scipy.special.jnjn(ell-1, u)
kl = scipy.special.jnkn(ell, w)
kl1 = scipy.special.jnkn(ell-1, w)
return jl / (u*jl1) + kl / (w*kl1)
我看到的主要问题是,如果您实际上可以找到 所有的
根源,就像注释中已经提到的那样,这并非总是可能的。如果您确定您的功能不完全是病态的(sin(1/x)
已经提到过),那么下一个就是您对缺少一个或多个根的容忍度是多少。换句话说,要确保您没有错过任何东西,要准备多长时间
—据我所知,没有通用的方法可以为您隔离所有根,因此您必须自己做。您所显示的已经是一个合理的第一步。几点评论:
x_1
并且x_2
,在该区间再次搜索[x_1+epsilon, x_2-epsilon]
。继续,直到没有更多的根被找到(Brent的方法保证收敛到 一个 根,提供有一个)。x
不仅要检查f(x)
较大的 物体,还应检查例如(1e-8,1e)的|f(x-epsilon/2)| > |f(x-epsilon)|
多个值epsilon
-9、1e-10等)。x_e
,请检查的值f(x_e)
。我正在开发一个Python3.4模块,它依赖于scipy和numpy。所以我在设置中声明了它们。py在install_下需要。 下面是我的设置的最低运行示例。派克 在运行python安装程序时。py安装发生以下异常。 然而,当我按照pip安装的顺序安装所有这些包时,根本不会发生错误。可能easy_install问题? 提前谢谢你们。
我试图在我正在分发的包中创建所需的库。它需要SciPy和NumPy库。在开发过程中,我使用 它安装了SciPy 0.9。0和NumPy 1.5。1,而且效果很好。 我想使用-执行同样的操作,以便能够在设置中指定依赖项。我自己的包裹。 问题是,当我尝试时: 它很好用。 但是 惨败 我如何让它工作?
问题内容: 我正在尝试在要分发的程序包中创建所需的库。它需要SciPy和NumPy库。在开发过程中,我同时使用 它安装了SciPy 0.9.0和NumPy 1.5.1,并且运行良好。 我想使用-做同样的事情,以便能够在我自己的包的setup.py中指定依赖项。 问题是,当我尝试: 它工作正常。 但是之后 惨败 我该如何工作? 问题答案: 我假设我的回答是Linux经验。我发现要顺利进行有三个先决条
问题内容: 在numpy或scipy(或其他库)中是否有一个函数将cumsum和cumprod的概念推广为任意函数。例如,考虑(理论上的)函数 func是一个接受两个浮点数并返回一个浮点数的函数。特殊情况 和 分别是cumsum和cumprod。例如,如果 我将其应用于: 我想要 问题答案: NumPy的ufunc有: 不幸的是,呼吁在“编Python函数失败,一个奇怪的错误: 这是将NumPy
问题内容: 我想使用功能生成视频。 我已按照此处和此处的说明进行操作。 现在,我可以通过以下过程来构建函数: 第1步 触发实例并以root身份在其上运行: 第2步 我将生成的tarball压缩到笔记本电脑中。然后运行此脚本以构建一个zip存档。 目前,脚本仅是测试以查看堆栈是否正常的测试: 第三步 然后,我将生成的归档文件上传到S3作为我的函数的来源。当我测试功能时,我得到以下信息: 我不明白为什
我怎样才能导入阶乘函数分别从Numpy和sippy为了看看哪一个更快? 我已经通过导入数学从python本身导入了阶乘。但是,它不适用于Numpy和smpy。
译者:cangyunye 作者: Adam Paszke 修订者: Adam Dziedzic 在这个教程里,我们要完成两个任务: 创建一个无参神经网络层。 这里需要调用numpy作为实现的一部分。 创建一个权重自主优化的伸进网络层。 这里需要调用Scipy作为实现的一部分。 import torch from torch.autograd import Function 无参数示例 这一层并
问题内容: SciPy似乎在其自己的名称空间中提供了NumPy的大多数(但不是全部[1])功能。换句话说,如果有一个名为的函数,几乎可以肯定有一个。在大多数情况下,两者看起来是完全相同的,甚至有时指向相同的功能对象。 有时,它们是不同的。举一个最近出现的例子: 是一个ufunc该返回的NaN为负参数; 返回负参数的复杂值,并且似乎不是ufunc。 同样可以说,大约,和,但不是关于[2]。 另一方面