Поиск всех решений системы уравнений в прямоугольной области

uaha1979

Есть уравнения: x - F(x, y) = 0, y - G(x, y) = 0. И есть прямоугольная область D, нужно найти все решения в этой области.
множество точек разрыва функций F, G меры ноль, разрыв - неустранимый первого рода.
Я делаю так:
1. Ищу решения первого уравнения
2. Ищу решения второго уравнения
3. Пересекаем полученные множества.
Реализация:
1. вводим сетку на D, 150х150 -> считаем значение первого уравнения в узлах сетки-> ищу отрезки с разными знаками на концах -> методом деления отрезка пополам нахожу ноль -> соединяю два ближних ноля отрезком -> получаем кривую.
2. Аналогично и в этом шаге
3. Пересекаем две кривые
4. Радуемся
На это все уходит _10 минут_,тк функции F, G вычисляются через интегрирование злых дифуров.
Какие методы получше есть?
Можно ссылки или где почитать
Заранее спасибо.

Anna74

смотря что известно про F и G, гладкие кроме множества разрыва? Почему сетка 150, наверно ты что-то про них знаешь, или от фонаря?

kataich

На это все уходит _10 минут_,тк функции F, G вычисляются через интегрирование злых дифуров.
Не совсем ясно, медленно решается система или медленно вычисляются функции F, G?
Может, стоит оптимизировать не решалку а вычислялку?
Просто 150x150 сетка, как мне кажется, довольно быстро обрабатывается.

uaha1979

F, G получаются следующим образом: x,y, x', y' - начальная точка для дифура дифура 4ого порядка,
x', y' заданы, интегрируем до тех пор пока x', y' снова не примут заданного значения, получаем новые x, y. Собсно F выдает х, G - у.
Дифур с разрывной правой частью, доказать что F, G - гладкие почти всюду можно (тк суть дифура - механическая задача, правая часть - кулоновская функция трения).
Сетка 150х150 появилась как результат эксперимента, на меньшей сетке пропадают решения.
Да, проблема в том, что F, G очень медленно вычисляются.
За совет - спасибо. Увеличу порядок в Рунге-Кутте с 4 до 8 =)
Но сама идея искать решения делением отрезка пополам не сильно привлекательна,

Anna74

Если интегрируется 2мерный дифур, (если удастся локально вблизи корня искомого уравнения обойти негладкость правых частей) то сам бог велел решать методом Ньютона (в R^2 целевая функция невязка=0, матрица производных будет грубо говоря правые части твоей системы для интегрирования.
Сам интегратор Рунге-Кутта какого порядка пофиг имхо, только надо чтобы он плясал не от начальной точки (угла твоей сетки а от текущего найденного приближения к корню решаемого уравнения, только надо чтобы мог интегрировать и вперёд и назад.
Пример у меня есть в ноуте с поясниловкой в pdf, только он не с собой сейчас :(
Были бы подробности системы решаемой может более что-то содержательное сказал. Только я завтра с форума свалю на некоторое время, насколько это срочно у тебя...

uaha1979

Мне это не срочно, месяца 2 точно не спросят =)
За программу заранее благодарю.
Если интересно то вот система:
x1'' = -x1 + x2
x2'' = x1 - x2 - F
F:
(1) при x2' < v F = 1,
(2) при x2' > v F = -1,
(3) при x2' = v F= -x1 + x2
...................................
_______|....................
............. |....................
-------v- |------------->x2'
............. |___________
..............|.....................
...................................
при -x1 + x2 = С переходим в (1)
при -x1 + x2 = -С переходим в (2 с известно
Собственно интегрируем до тех пор пока не наступят условия х2' = v, x2' = x1 + C
Оставить комментарий
Имя или ник:
Комментарий: