2014 dxdy logo

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

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




 
 Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение12.10.2020, 11:31 
Аватара пользователя
Численно решаю нелинейную систему уравнений:
$$\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 
Аватара пользователя
Понял в чем ошибка, при решении системы из 5-ти или 6-ти уравнений должны участвовать все корни $x(5)$, $x(6)$. Ошибка lapack при этом исчезла. Но как приравнять $x(1)$ и $x(3)$ к нулю не могу понять. Какие есть идеи?

 
 
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение12.10.2020, 15:45 
Как-то из вашего описания не извлекается, что является параметрами задачи, а что - неизвестными, относительно которых вы решаете нелинейную систему, и в итоге понять происходящее невозможно. К тому же скобки, по-видимому, обозначают фактически индексы (или не везде?), что понимания также не добавляет. Попробуйте аккуратно сформулировать математическую задачу, используя чисто математические же обозначения (без вставок из Фортрана).

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

$$\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 
Ну давайте смотреть. Мы можем свести это к системе 4 вещественнозначных уравнений с 4 неизвестными (раз уж используется вещественнозначная реализация метода Ньютона). Дальше придется либо дополнить ее двумя уравнениями, задающими желаемые условия (нулевые вещественные части), либо сразу подставить в уравнения условия, тем самым избавившись от двух неизвестных.

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

 
 
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение12.10.2020, 17:07 
Аватара пользователя
Pphantom в сообщении #1486836 писал(а):
Соответственно, это означает, что в окрестности решения почти наверняка будет "овраг", с которым метод Ньютона справляется плохо.

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

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

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

 
 
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение12.10.2020, 18:23 
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 
Аватара пользователя
Pphantom в сообщении #1486852 писал(а):
Ну и все, в чем проблема?
В данном тестовом примере все просто, если вернуться к моей задаче, то формулы разделения там получатся пятиэтажными. А главное, ведь я все именно это и сделал, но вещественную и мнимую часть разделил программно, а далее добавил 5-е и 6-е уравнения где приравнял вещественную часть корней к нулю. При этом метод Ньютона отказался работать поскольку в уравнениях отсутствуют переменные 5-го и 6-го уравнений (я об этом написал во втором сообщении, 6 уравнений при 4-х неизвестных). Вероятно это и есть подтверждение ваших слов о том, что метод Ньютона с такими вещами справляется плохо.

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

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

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

 
 
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение13.10.2020, 11:35 
Snegovik в сообщении #1486910 писал(а):
то формулы разделения там получатся пятиэтажными.
Ну и ладно: берете примерно любую систему компьютерной алгебры и генерируете эти формулы в готовом виде. К тому же при подстановке нулей они сильно упростятся.

 
 
 
 Re: Система нелинейных уравнениий в компл. числах, метод Ньютона
Сообщение13.10.2020, 17:29 
Аватара пользователя
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 
Аватара пользователя
Pphantom в сообщении #1486938 писал(а):
Ну и ладно: берете примерно любую систему компьютерной алгебры и генерируете эти формулы в готовом виде.

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

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

 
 
 [ Сообщений: 11 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group