2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение12.10.2020, 11:31 
Аватара пользователя


30/04/19
235
Численно решаю нелинейную систему уравнений:
$$\left\{
\begin{array}{rcl}
 (A_1\cdot Rg + B_1) / (C_1\cdot Rg + D_1)=Rn \\
 (A_2\cdot Rn + B_2) / (C_2\cdot Rn + D_2)=Rg \\
\end{array}
\right.$$
которая для решения методом Ньютона принимает вид
$$\left\{
\begin{array}{rcl}
 u_1=(A_1\cdot Rg + B_1) / (C_1\cdot Rg + D_1) - Rn \\
u_2= (A_2\cdot Rn + B_2) / (C_2\cdot Rn + D_2) - Rg \\
\end{array}
\right.$$

в системе все числа комплексные:

$Rg$ и $Rn$ комплексные константы.

$A_1, B_1, C_1, D_1, A_2, B_2, C_2, D_2 $ комплексные переменные которые посредством определенных выражений формируются из начального приближения $x(1)...x(4)$, по ходу решения приближающегося к корням, где $x(1)...x(4)$ - вещественные числа (в тех же выражениях выполняется переход от вещественных чисел к комплексным).

Разделение на вещественную и мнимую части выполняю программно, в результате получается система уравнений, которая собственно и решается методом Ньютона, но уже в обычных вещественных числах

$$\left\{
\begin{array}{rcl}
 f(1) = real(u_1) \\
 f(2) = aimag(u_1) \\
 f(3) = real(u_2) \\
 f(4) = aimag(u_2) \\
\end{array}
\right.$$

И все это прекрасно работает, корни ищутся с высокой точностью, но есть одно но. В начальных условиях


$x(1) = 0 \\
x(2) = -10 \\
x(3) = 0 \\
x(4) = -25$

$x(1)$ и $x(3)$ всегда равны нулю, а $x(2) $ и $x(4)$ могут принимать любые числовые значения. В решении системы $x(1)$ и $x(3)$ должны остаться нулевыми, а $x(2)$ и $x(4)$ должны быть найдены. При этом такое решение совершенно точно существует (проверено)! Но метод Ньютона упорно выкидывает корни где $x(1)\ne0$ и $x(3)\ne0$, математически они правильные (то же проверено), но это не те корни, которые нужны.

Для поиска нужных корней с $x(1)=0$ и $x(3)=0$ я пытался ввести еще 1 или 2 уравнения в решаемую систему

$$\left\{
\begin{array}{rcl}
 f(1) = real(u_1) \\
 f(2) = aimag(u_1) \\
 f(3) = real(u_2) \\
 f(4) = aimg(u_2) \\
 f(5) = x(1) - x(3) \\
\end{array}
\right.$$

или

$$\left\{
\begin{array}{rcl}
 f(1) = real(u_1) \\
 f(2) = aimag(u_1) \\
 f(3) = real(u_2) \\
 f(4) = aimg(u_2) \\
 f(5) = x(1) \\
 f(6) = x(3) \\
\end{array}
\right.$$

Но при этом метод Ньютона выдает ошибку (dgesv из lapack, который используется для решения СЛАУ, выдает ошибку, соответственно метод зацикливается и заканчивается неудачей).

Вопрос. Что я делаю не так или что нужно сделать для нахождения нужных мне корней?

 Профиль  
                  
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение12.10.2020, 15:37 
Аватара пользователя


30/04/19
235
Понял в чем ошибка, при решении системы из 5-ти или 6-ти уравнений должны участвовать все корни $x(5)$, $x(6)$. Ошибка lapack при этом исчезла. Но как приравнять $x(1)$ и $x(3)$ к нулю не могу понять. Какие есть идеи?

 Профиль  
                  
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение12.10.2020, 15:45 
Заслуженный участник


09/05/12
25179
Как-то из вашего описания не извлекается, что является параметрами задачи, а что - неизвестными, относительно которых вы решаете нелинейную систему, и в итоге понять происходящее невозможно. К тому же скобки, по-видимому, обозначают фактически индексы (или не везде?), что понимания также не добавляет. Попробуйте аккуратно сформулировать математическую задачу, используя чисто математические же обозначения (без вставок из Фортрана).

 Профиль  
                  
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение12.10.2020, 16:10 
Аватара пользователя


30/04/19
235
Наверное не очень умею формулировать. Попробую иначе, отвлекусь от своей задачи. Есть система уравнений (написал не думая навскидку)

$$\left\{
\begin{array}{rcl}
 x_1 + 2 / x_2=y_1 \\
 2x_1 - 3 / x_2 = y_2 \\
\end{array}
\right.$$

где
$x_1$ и $x_2$ неизвестные комплексные переменные, при этом их вещественная часть в начальном приближении приравнивается к нулю.
$y_1$ и $y_2$ комплексные константы.
Нужно найти корни системы $x_1$ и $x_2$ (допустим корней много), но такие, вещественная часть которых так же равна нулю (при этом известно, что такие корни существуют).

ps Пока решение скатывается к нахождению корней в которых вещественные части не равны нулю.

 Профиль  
                  
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение12.10.2020, 16:55 
Заслуженный участник


09/05/12
25179
Ну давайте смотреть. Мы можем свести это к системе 4 вещественнозначных уравнений с 4 неизвестными (раз уж используется вещественнозначная реализация метода Ньютона). Дальше придется либо дополнить ее двумя уравнениями, задающими желаемые условия (нулевые вещественные части), либо сразу подставить в уравнения условия, тем самым избавившись от двух неизвестных.

И в том, и в другом случае у нас будет меньше неизвестных, чем уравнений (4 и 6 в первом варианте и 2 и 4 - во втором). Соответственно, это означает, что в окрестности решения почти наверняка будет "овраг", с которым метод Ньютона справляется плохо. Стало быть, нужна какая-то регуляризация или просто исключение "лишних" переменных.

 Профиль  
                  
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение12.10.2020, 17:07 
Аватара пользователя


30/04/19
235
Pphantom в сообщении #1486836 писал(а):
Соответственно, это означает, что в окрестности решения почти наверняка будет "овраг", с которым метод Ньютона справляется плохо.

Хорошо, хотя овраг это конечно не хорошо, но ориентировочное местнахождение корней известно, поэтому начальное приближение можно задать достаточно близко.

Pphantom в сообщении #1486836 писал(а):
Дальше придется либо дополнить ее двумя уравнениями, задающими желаемые условия (нулевые вещественные части), либо сразу подставить в уравнения условия, тем самым избавившись от двух неизвестных.

Вот я как раз не могу дойти как это сделать. Можете показать?

 Профиль  
                  
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение12.10.2020, 18:23 
Заслуженный участник


09/05/12
25179
Snegovik в сообщении #1486837 писал(а):
Вот я как раз не могу дойти как это сделать. Можете показать?
Выписать вещественную часть левой части первого уравнения и приравнять ее к вещественной части правой части. С остальными левыми/правыми частями аналогично. Потом дописать еще два уравнения.

Ну, собственно, возьмем первое уравнение: $x_1+2/x_2 = y_1$. Если индексы $r$ и $i$ обозначают вещественную и мнимую части, то это уравнение имеет вид $$ x_{1r}+i \, x_{1i} + \frac{2}{x_{2r}+i \, x_{2i}} = y_{1r}+i \, y_{1i}$$. Числитель и знаменатель во втором слагаемом домножаем на сопряженную и имеем $$ x_{1r}+i \, x_{1i} +  \frac{2 (x_{2r}-i \, x_{2i})}{x_{2r}^2 + x_{2i}^2} = y_{1r}+i \, y_{1i},$$ откуда имеем одно уравнение $$x_{1r} + 2 \frac{x_{2r}}{x_{2r}^2 + x_{2i}^2} = y_{1r}$$ и другое $$x_{1i} - 2 \frac{x_{2i}}{x_{2r}^2 + x_{2i}^2} = y_{1i}.$$ Со вторым уравнением обходимся так же, еще два имеют вид $x_{1r}=0$ и $x_{2r}=0$. Ну и все, в чем проблема?

-- 12.10.2020, 18:26 --

Но, кстати, лучше все же не вводить еще два уравнения, а просто подставить нули в первые четыре. Явно проще будет (и конкретно в этой задаче никакой метод Ньютона не понадобится, поскольку мнимые части неизвестных находятся независимо друг от друга).

 Профиль  
                  
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение13.10.2020, 04:58 
Аватара пользователя


30/04/19
235
Pphantom в сообщении #1486852 писал(а):
Ну и все, в чем проблема?
В данном тестовом примере все просто, если вернуться к моей задаче, то формулы разделения там получатся пятиэтажными. А главное, ведь я все именно это и сделал, но вещественную и мнимую часть разделил программно, а далее добавил 5-е и 6-е уравнения где приравнял вещественную часть корней к нулю. При этом метод Ньютона отказался работать поскольку в уравнениях отсутствуют переменные 5-го и 6-го уравнений (я об этом написал во втором сообщении, 6 уравнений при 4-х неизвестных). Вероятно это и есть подтверждение ваших слов о том, что метод Ньютона с такими вещами справляется плохо.

Поэтому я раздумываю, нельзя ли написать такие 5-е и 6-е уравнения, где вещественные части можно было бы приравнять к нулю, но выразить это какой-то более сложной формулой в которой участвуют переменные из 5-го и 6-го уравнений, хотя бы формально. Либо оставить 4 уравнения, но в них как-то учесть обнуление вещественной части, но то же программно.

Pphantom в сообщении #1486852 писал(а):
Но, кстати, лучше все же не вводить еще два уравнения, а просто подставить нули в первые четыре. Явно проще будет (и конкретно в этой задаче никакой метод Ньютона не понадобится, поскольку мнимые части неизвестных находятся независимо друг от друга).

Имеете в виду, выразить во втором уравнении вторую переменную через первую, а после подставить это в выражение в первое уравнение?

 Профиль  
                  
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение13.10.2020, 11:35 
Заслуженный участник


09/05/12
25179
Snegovik в сообщении #1486910 писал(а):
то формулы разделения там получатся пятиэтажными.
Ну и ладно: берете примерно любую систему компьютерной алгебры и генерируете эти формулы в готовом виде. К тому же при подстановке нулей они сильно упростятся.

 Профиль  
                  
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение13.10.2020, 17:29 
Заслуженный участник
Аватара пользователя


04/09/14
5255
ФТИ им. Иоффе СПб
Snegovik в сообщении #1486808 писал(а):
метод Ньютона упорно выкидывает корни где $x(1)\ne0$ и $x(3)\ne0$, математически они правильные (то же проверено), но это не те корни
Можно попробовать т.наз. непрерывный аналог метода Ньютона. Вы хотите решить уравнение $F(x)=0.$ Вместо этого пишите $F(x(t))=(1-t)F(x_0)$ и решаете численно на отрезке $[0,1]$ задачу Коши для диф.ур.
$$F'_x(x)\frac{dx}{dt}=-F(x_0),\, x(0)=x_0.$$ $x(1)$ окажется корнем Вашего уравнения. Если расписать уравнения в вещественных и мнимых частях, то, по-моему, можно сделать так, что всю дорогу $\operatorname{Re}x(t)=0.$

 Профиль  
                  
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение14.10.2020, 03:45 
Аватара пользователя


30/04/19
235
Pphantom в сообщении #1486938 писал(а):
Ну и ладно: берете примерно любую систему компьютерной алгебры и генерируете эти формулы в готовом виде.

Проблемы разделения на мнимую и вещественную части не было и нет, хоть сколь этажная формула.
amon в сообщении #1486951 писал(а):
Можно попробовать т.наз. непрерывный аналог метода Ньютона.

Нужно осмыслить то что Вы предлагаете, но "непрерывного" решения там нет.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group