【问题标题】:Complex solvers in SciPySciPy 中的复杂求解器
【发布时间】:2013-05-27 11:22:13
【问题描述】:

SciPy 中的求解器能否处理复数值(即 x=x'+i*x")?我对使用 Nelder-Mead 类型的最小化函数特别感兴趣。我通常是 Matlab 用户,我知道 Matlab没有复杂的求解器。如果 SciPy 可以做到这一点,那么我肯定是一个皈依者!提前致谢。

【问题讨论】:

  • “复数求解器”是什么意思?两个复数的比较定义不明确,因为每个“数字”都是二维的。考虑 x > y。答案是 real(x) > real(y), imag(x) > imag(y), |x| > |y|, angle(x) > angle(y), real(x)+imag(x) > real(y)+imag(y), 还是别的什么?
  • this other Stack Overflow 回答对你有帮助吗?

标签: scipy mathematical-optimization complex-numbers


【解决方案1】:

看起来scipy.optimize.fminscipy.optimize.leastsq 都不能很好地处理复数。例如,fmin(lambda x: np.linalg.norm(x - np.array((1.2, 3+2j))), np.array((0j, 0j))) 收敛到 array([ 1.19996429, 2.99997809])leastsq 只是失败。为了使它工作,我想我会将你的复数嵌入到 R^2 中。很喜欢

fmin(lambda x: np.linalg.norm(x - np.array((1.2, 0, 3,2))), np.array((0,0, 0,0)))

收敛到

array([  1.20000095e+00,  -4.11719096e-05,   2.99999705e+00,    2.00001270e+00])

但是,如果这些函数能很好地处理复数,那就太好了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2014-02-11
    • 1970-01-01
    • 2019-07-03
    • 2016-11-21
    相关资源
    最近更新 更多