2014 dxdy logo

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

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


Правила форума


В этом разделе нельзя создавать новые темы.



Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 Решение системы нелинейных уравнений методом Ньютона
Сообщение16.10.2015, 05:17 


02/11/12
86
Доброго всем времени суток. Необходимо решить систему нелинейных уравнений. Я выбрал метод Ньютона как наиболее быстрый, т.е. имеющий быструю сходимость. Я сделал всё по стандартной схеме: нашёл якобиан, обратную матрицу и задал начальные условия. Но потом возник вопрос, система нелинейных уравнений по имеет несколько корней. Так вот, если я нашёл один корень (вектор), как потом исключить найденный корень, чтобы найти другие ?

 Профиль  
                  
 
 Posted automatically
Сообщение16.10.2015, 08:35 
Модератор
Аватара пользователя


16/02/11
3788
Бурашево
 i  Тема перемещена из форума «Механика и Техника» в форум «Численные и вычислительные методы, оптимизация»
Причина переноса: в соответствующий раздел.

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


11/05/08
32166
Abraziv в сообщении #1063267 писал(а):
как потом исключить найденный корень, чтобы найти другие ?

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

 Профиль  
                  
 
 Re: Решение системы нелинейных уравнений методом Ньютона
Сообщение16.10.2015, 18:47 


02/11/12
86
А как тогда быть? Я использую функцию solve() matlab и она всегда выводит 8 корней. Некоторые выводятся комплексные, другие чисто вещественные. Когда корней нет выводится тупо 8 комплексных корней. Как реализовать, что то подобное матлабовской solve, не понятно. Скорость решения меня вполне устраивает. К тому же функция не требует ни каких начальных условий.

Возвращаясь к методу Ньютона. Я пытаюсь решить систему нелинейных уравнений вида:
$f(x,y,z)  = A$
$g(x,y,z) = B$
$h(x,y,z) = C$

Можно ли как нибудь разбить $x$, $y$, $z$ на участки и ходить по ним методом Ньютона, т.е. заставить бегать в заданных промежутках ? Тогда можно ходить по этим участкам и искать корень <= какой-то эпсилон. Как быть, товарищи знатоки ?

 Профиль  
                  
 
 Posted automatically
Сообщение16.10.2015, 19:20 


20/03/14
12041
 i  Тема перемещена из форума «Численные и вычислительные методы, оптимизация» в форум «Карантин»
по следующим причинам:

- неправильно набраны формулы (краткие инструкции: «Краткий FAQ по тегу [math]» и видеоролик Как записывать формулы);

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 Профиль  
                  
 
 Posted automatically
Сообщение17.10.2015, 03:44 


20/03/14
12041
 i  Тема перемещена из форума «Карантин» в форум «Помогите решить / разобраться (М)»

Abraziv
Обратите внимание на оформление обозначений.
Abraziv в сообщении #1063460 писал(а):
разбить x y z

Пока исправляю.

 Профиль  
                  
 
 Re: Решение системы нелинейных уравнений методом Ньютона
Сообщение17.10.2015, 06:31 
Заслуженный участник


16/02/13
4214
Владивосток
Ну дык в такой постановке — никак. Метод Ньютона, насколько я помню, гарантирует вам сходимость к корню, если вы выберете хорошее приближение (сиречь, приближение в некоторой области, в которой функция удовлетворяет условиям). Как вы там окажетесь — не есть проблемы Ньютона.

 Профиль  
                  
 
 Re: Решение системы нелинейных уравнений методом Ньютона
Сообщение17.10.2015, 09:37 


02/11/12
86
Это я всё знаю. Я просто видел описание, где говорилось, что задача решается методом Ньютона. Где взять начальные условия там не говорилось и мне тоже не понятно. Есть ли методы обладающей 100 проц сходимостью? Тупой перебор =)))) ?

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


11/05/08
32166
Abraziv в сообщении #1063628 писал(а):
Есть ли методы обладающей 100 проц сходимостью?

Нет. Но есть методы, дающие 99%-ю. Скажем, метод градиентного спуска (как и его модификации) практически гарантированно даёт приближение к какой-либо точке минимума, после чего можно уже пытаться запускать Ньютона. Правда, на какую из многочисленных точек (если их несколько) он выбросит -- естественно, не предскажешь. Тогда остаётся лишь более-менее рандомно перебирать начальные приближения.

 Профиль  
                  
 
 Re: Решение системы нелинейных уравнений методом Ньютона
Сообщение17.10.2015, 10:28 


02/11/12
86
Спасибо за ответ. Про метод градиентного спуска тоже читал, что он очень устойчив, но и очень медленный. А вот скажите пожалуйста:
Допустим я нахожу один вектор. Одно из уравнений имеет следующий вид: $x^2 + y^2 + z^2 = R^2$ - уравнение сферы. Можно ли как то на основании полученного вектора вытащить остальные ? Ну скажем подставляем $y,z$ нахожу два $x$. Ну и тд.

 Профиль  
                  
 
 Re: Решение системы нелинейных уравнений методом Ньютона
Сообщение17.10.2015, 12:00 
Заслуженный участник
Аватара пользователя


11/04/08
2749
Физтех
Abraziv в сообщении #1063460 писал(а):
Я использую функцию solve() matlab и она всегда выводит 8 корней. Некоторые выводятся комплексные, другие чисто вещественные. Когда корней нет выводится тупо 8 комплексных корней. Как реализовать, что то подобное матлабовской solve, не понятно. Скорость решения меня вполне устраивает. К тому же функция не требует ни каких начальных условий.
Функция solve служит для аналитического поиска решений и принадлежит системе компьютерной алгебры. Равносильно тому, чтобы на бумажке самому преобразовывать уравнения и искать решения. Поэтому начальных условий не требует. Конечно, эта функция способна разрешить не любую систему уравнений. Для численного (итерационного) поиска решений используется функция fsolve, которое естественно требует начальное приближение и если сойдется, то только к одному корню. Чтобы искать другие корни, нужно задавать другие начальные приближения, а какие -- без априорных сведений и деталей о системе уравнений -- не известно. Таков мир численных методов :-) Можете попробовать взять в пространстве поиска сколько надо точек, равномерно распределенных по области, и из каждой точки запустить солвер.

 Профиль  
                  
 
 Re: Решение системы нелинейных уравнений методом Ньютона
Сообщение17.10.2015, 12:18 


02/11/12
86
Спасибо за подробный ответ. Если матлаб может решить аналитически, то можно конечно попробовать решить самому аналитически, только как не понятно. Но мне предпочтительнее решить численно, т.к. можно задать погрешность корня.

 Профиль  
                  
 
 Re: Решение системы нелинейных уравнений методом Ньютона
Сообщение17.10.2015, 13:04 
Аватара пользователя


12/03/11
693
Какой характер нелинейности? Система полиномиальных уравнений?

 Профиль  
                  
 
 Re: Решение системы нелинейных уравнений методом Ньютона
Сообщение17.10.2015, 13:35 


02/11/12
86
Система имеет вид:
\left\{
\begin{array}{rcl}
\sqrt[2]{(x-x_2)^2 + (y-y_2)^2 + (z-z_2)^2}-\sqrt[2]{(x-x_1)^2 + (y-y_1)^2 + (z-z_1)^2} = R_{21}\\
\sqrt[2]{(x-x_4)^2 + (y-y_4)^2 + (z-z_4)^2}-\sqrt[2]{(x-x_3)^2 + (y-y_3)^2 + (z-z_3)^2} = R_{43}\\
x^2 + y^2 + z^2/b = a^2\\
\end{array}
\right.

Где:
$R_{21} = R_2 - R_1 $

$R_1^2 = (x-x_1)^2 + (y-y_1)^2 + (z-z_1)^2$

$R_2^2 = (x-x_2)^2 + (y-y_2)^2 + (z-z_2)^2$

Для $R_{43}$ аналогично

$x_i,y_i,z_i,R_{ij},b,a = const$

$R_i,x,y,z$ - неизвестные
От иррациональности можно избавиться, но ценной введения дополнительных неизвестных. Так же теоретически от иррациональности можно избавиться путём приведения уравнений гиперболоидов (1ое и 2ое) к общему уравнению кривой второго порядка (кто нибудь знает формулы?).

 Профиль  
                  
 
 Posted automatically
Сообщение17.10.2015, 14:11 


20/03/14
12041
 i  Тема перемещена из форума «Помогите решить / разобраться (М)» в форум «Карантин»
по следующим причинам:

- неправильно набраны формулы (краткие инструкции: «Краткий FAQ по тегу [math]» и видеоролик Как записывать формулы);

В т.ч. нижние индексы оформите как нижние индексы.

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 44 ]  На страницу 1, 2, 3  След.

Модераторы: Модераторы Математики, Супермодераторы



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

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


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

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