Otimização para encontrar um número complexo como entrada

Eu estou querendo saber se há uma biblioteca C / C ++ ou técnica de código Matlab para determinar números reais e complexos usando um solucionador de minimização. Aqui está um trecho de código que mostra o que eu gostaria de fazer. Por exemplo, suponha que eu saibaUtilde, mas nãox eU variáveis. Eu quero usar a otimização (fminsearch) para determinarx eU, dadoUtilde. Observe queUtilde é um número complexo.

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  ) );

O código acima não converge para os valores apropriados exout = 1.7318 88.8760. No entanto, seU = 50, que não é um número complexo, entãoxout = 1.5000 50.0000, quais são os valores adequados.

Existe uma maneira em Matlab ou C / C ++ para garantir a convergência adequada, dadoUtilde como um número complexo? Talvez eu tenha que mudar o código acima?

Se não existe uma maneira de fazer isso nativamente no Matlab, então talvez uma questão básica seja a seguinte: Existe uma biblioteca de otimização multivariada (isto é, Nelder-Mead ou algoritmo similar) que é capaz de trabalhar com entradas e saídas?

Ainda outra questão é se a função é convergente ou não. Não sei se é o algoritmo ou a função. Posso precisar mudar alguma coisa noUtilde = U * (1 / exp(2 * x)) * exp( 1i * 2 * x) expressão para torná-lo convergente?