• Регистрация
Death_Grips
Death_Grips 0.00
н/д

Проблема с комплексным сопряжением в нелинейной системе уравнений.

22.12.2019
Здраствуйте, помогите решить проблему. Дело в том, что я не знаю как решить систему нелинейных уравнений , где у меня комплексные корни. При этом в системе используется комплексное сопряжение. Именно...

Здраствуйте, помогите решить проблему. Дело в том, что я не знаю как решить систему нелинейных уравнений , где у меня комплексные корни. При этом в системе используется комплексное сопряжение. Именно сопряжение не позволяет мне решить эту систему. До этого я решал её же без сопряжения при помощи solve. Сейчас же я пытаюсь решить систему с сопряжением использую fsolve. пока не удачно. Вот моя система:

  function F = ansver3(D1,D2,D3,D4,D5,D6,Int1,Int21,Int22,Int23,x)

    F(1,1) =x(1).*D1+x(2).*D2+x(3).*D3;

    F(2,1) =x(1).*D4+x(2).*D5+x(3).*D6;

    F(3,1)=(x(1).*conj(x(1))).*Int1+(x(2).*conj(x(2))).*Int21+(conj(x(3)).*x(2)+...

               conj(x(2)).*x(3)).*Int22+(conj(x(3)).*x(3))*Int23-1;

Вот так я использую fsolve:

  X0=[1+i,1+i,1+i];  

  Ss=fsolve(@(x)ansver3(D1,D2,D3,D4,D5,D6,Int1,Int21,Int22,Int23,x),X0); 

Ответ всегда один и тот же:

No solution found.
fsolve stopped because the relative size of the current step is less than the value of the step size tolerance squared, but the vector of function values is not near zero as measured by the value of the function tolerance.
В моём коде D1, D4 и Int1 действительные числа, все остальные комплексные. Прошу помочь решить эту проблему. Без неё я не могу сделать свой диплом. Если знаете как это сделать в других программах, буду только рад, если подскажите.

Теги

    22.12.2019

    Комментарии

    • Максим Сидоров
      Максим Сидоров +239.28
      24.12.2019 10:54

      Оптимизация комплексных функций задача непростая и не всегда работает. Вот здесь описаны ограничения и даны несколько рекомендаций:

      https://www.mathworks.com/help/optim/ug/complex-numbers-in-optimization-toolbox-solvers.html

      Перевод на русский:

      https://docs.exponenta.ru/optim/ug/complex-numbers-in-optimization-toolbox-solvers.html

      Попробуйте позадавать разные начальные значения, но все равно не факт, что оптимизация сработает с сопряжением.

      Если совсем беда, попробуйте "ручную оптимизацию", а именно перебор значений в цикле for (метод Монте-Карло).

      • Death_Grips
        Death_Grips0.00
        21.01.2020 18:35

        Большое спасибо. А то я уже совсем отчаялся.