1

编辑:更具体地说,我正在寻找一种实用的方法来绘制具有 2 个变量的标量函数的零点形状。所以这些值只需要精确到我选择的 2D 网格的分辨率。例如 f(x,y) = sqrt(x^2 + y^2) - 4 应该给我一个圆圈。

问题是 fsolve 需要一个向量函数,所以

from scipy.optimize import fsolve
def a(x): return sin(x[0]) + cos(x[1])
nodes = fsolve(a,(.1,.2))

不会工作。有什么解决方法吗?例如 def a(x): return [sin(x[0]) + cos(x[1]),0]

但它只输出 1 个解决方案(array([-1.37079633,0.2]) 而不是所有可能的零)。

4

1 回答 1

2

如果要诊断 2D 函数及其零点的行为,最好生成 2D 值网格,并使用 matplotlib 之类的东西进行绘图pcolor。然后,如果您真的需要精确找到零点的位置,您就知道从哪里开始fsolve寻找。

原则上,如果您对函数有所了解,例如,y 的每个值有多少个零,那么您将知道需要在每个最小值附近应用 fsolve 多少次。这可能会或可能不会被证明是足够稳健的。但是没有找到任意非线性函数的所有零点的通用解决方案,尤其是对于多维函数。

于 2012-04-11T08:40:37.093 回答