Может ли решатели в SciPy иметь дело со сложными значениями (например, x = x '+ i * x ")? Я особенно заинтересован в использовании функции минимизации типа Nelder-Mead. Обычно я являюсь пользователем Matlab и Я знаю, что Matlab не имеет сложных решателей. Если SciPy может сделать это, то я новообращенный точно! заранее спасибо.Комплексные решатели в SciPy
4
A
ответ
2
похоже, ни scipy.optimize.fmin
, ни scipy.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])
Но да, было бы неплохо, если бы эти функции действительно играли хорошо с комплексными числами.
Что вы подразумеваете под "complex solver"? Сравнение двух комплексных чисел плохо определено, поскольку каждое «число» двумерно. Рассмотрим x> y. Является ли реальный ответ (x)> вещественным (y), imag (x)> imag (y), | x | > | y |, угол (x)> угол (y), вещественный (x) + imag (x)> вещественный (y) + imag (y) или что-то еще? – matt
Имеет ли [этот другой переполнение стека] (http://stackoverflow.com/questions/15213141/how-to-do-nonlinear-complex-root-finding-in-python?rq=1) ответ вам на помощь? –