Оптимизация для поиска комплексного числа в качестве входных данных

Мне интересно, есть ли библиотека C / C ++ или метод кода Matlab для определения действительных и комплексных чисел с использованием решателя минимизации. Вот фрагмент кода, показывающий, что я хотел бы сделать. Например, предположим, что я знаюUtilde, но нетx а такжеU переменные. Я хочу использовать оптимизацию (fminsearch) определитьx а такжеU, даноUtilde, Обратите внимание, чтоUtilde это комплексное число.

x = 1.5;
U = 50 + 1i*25;
x0 = [1 20];  % starting values
Utilde = U * (1 / exp(2 * x)) * exp( 1i * 2 * x);
xout = fminsearch(@(v)optim(v, Utilde), x0);

function diff = optim(v, Utilde)
x = v(1);
U = v(2);
diff =  abs( -(Utilde/U) + (1 / exp(2 * x)) * exp( 1i * 2 * x  ) );

Код выше не сходится к правильным значениям, иxout = 1.7318 88.8760, Однако еслиU = 50, который не является комплексным числом, тоxout = 1.5000 50.0000, которые являются правильными значениями.

Есть ли способ в Matlab или C / C ++ обеспечить правильную сходимость, учитываяUtilde как комплексное число? Может быть, я должен изменить код выше?

If there isn't a way to do this natively in Matlab, then perhaps one gist of the question is this: Is there a multivariate (i.e. Nelder-Mead or similar algorithm) optimization library that is able to work with real and complex inputs and outputs?

Yet another question is whether the function is convergent or not. I don't know if it is the algorithm or the function. Might I need to change something in the Utilde = U * (1 / exp(2 * x)) * exp( 1i * 2 * x) expression to make it convergent?

Ответы на вопрос(3)

Ваш ответ на вопрос