• Регистрация
Death_Grips
Death_Grips0.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 действительные числа, все остальные комплексные. Прошу помочь решить эту проблему. Без неё я не могу сделать свой диплом. Если знаете как это сделать в других программах, буду только рад, если подскажите.

Теги

  • fsolve
  • solve
  • нелинейные алгебраические уравнения
  • система
  • комплексирование
    22.12.2019

    Ответы

    • Павел Рословец
      Павел Рословец +1152.35
      24.12.2019 13: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 21:35

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