2014 dxdy logo

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

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




 
 Метод прогонки
Сообщение07.12.2015, 16:53 
Аватара пользователя
Объясните мне смысл метода прогонки для решения краевой задачи, если можно использовать метод стрельбы, и для линейных систем достаточно нескольких выстрелов, чтобы свести все к задаче Коши?

 
 
 
 Re: Метод прогонки
Сообщение07.12.2015, 17:11 
Sicker в сообщении #1080310 писал(а):
Объясните мне смысл метода прогонки для решения краевой задачи, если можно использовать метод стрельбы, и для линейных систем достаточно нескольких выстрелов, чтобы свести все к задаче Коши?
Во-первых, просто скорость. Во-вторых... Вы уверены, что нескольких выстрелов всегда будет достаточно? :wink:

 
 
 
 Re: Метод прогонки
Сообщение07.12.2015, 17:20 
Аватара пользователя
Pphantom
Если уравнение линейное, то да. Там же только цэшки определить.

 
 
 
 Re: Метод прогонки
Сообщение07.12.2015, 17:38 
Sicker в сообщении #1080323 писал(а):
Если уравнение линейное, то да. Там же только цэшки определить.
М-да? Ну попробуйте численно решить, например, такое уравнение:
$$
 \frac{d^2 y}{dx^2} - 3\, \frac{dy}{dx}+ 2\,y=4\,e^{3x}
$$
Граничные условия $y(0)=4$ и $y(10)=10$, решать надо методом стрельбы слева.

 
 
 
 Re: Метод прогонки
Сообщение07.12.2015, 18:47 
Аватара пользователя
Sicker,
почитайте: Ц. На (T.Y.Na) Вычислительные методы решения прикладных граничных задач [Мир, 1982]
очень полезно.

 
 
 
 Re: Метод прогонки
Сообщение07.12.2015, 19:26 
Аватара пользователя
Pphantom в сообщении #1080327 писал(а):
Граничные условия $y(0)=4$ и $y(10)=10$, решать надо методом стрельбы слева.

Если ввести разностную сетку, то нужно сделать два выстрела $x_1=P_{1}\cdot h+4$;$x_1=P_{2}\cdot h+4$, где $h$-шаг сетки, $P$ - произвольно взятая разностно вычисленная производная. Смотрим соответствующее $x_n(P_1)$, $x_n(P_2)$, находим нужное нам $P=P_1-\frac{x_n(P_2)-10}{x_n(P_2)-x_n(P_1)}(P_2-P_1)$,

-- 07.12.2015, 19:26 --

amon
Спасибо, почитаю.

 
 
 
 Re: Метод прогонки
Сообщение07.12.2015, 19:46 
Sicker в сообщении #1080353 писал(а):
Если ввести разностную сетку, то нужно сделать два выстрела $x_1=P_{1}\cdot h+4$;$x_1=P_{2}\cdot h+4$, где $h$-шаг сетки, $P$ - произвольно взятая разностно вычисленная производная. Смотрим соответствующее $x_n(P_1)$, $x_n(P_2)$, находим нужное нам $P=P_1-\frac{x_n(P_2)-10}{x_n(P_2)-x_n(P_1)}(P_2-P_1)$,
Это все очень хорошо выглядит в теории, а Вы попробуйте реализовать свою идею на практике. :D

Собственно, пример несложный, поэтому можно даже программу не писать: выберите $P_1$ и $P_2$ по вкусу, затем найдите общее решение аналитически, подставьте в него получившиеся условия задач Коши и вычислите (вернее, попробуйте вычислить) $P$. Тогда, думаю, станет яснее, почему стрельба - не всегда удачная идея. :mrgreen:

 
 
 
 Re: Метод прогонки
Сообщение07.12.2015, 19:54 
Аватара пользователя
Pphantom
Да, кстати, я это чего спрашиваю :D
Мне нужно было интерполировать функцию кубическим сплайном с глобальным способом задания наклонов. И нужно было вычислить соответствующие $m_i$ с граничными условиями. Я решил моим методом стрельбы, и офигел от разброса значений :-) У меня при разбиении на $N=20$ частей окончательно вычисленное значение $m_n$ где-то отличалось на 504 от истинного, которое надо было получить хотя бы с точность до тысячных. Я думал, что ошибка в том, что фортран все округляет, и поэтому набегает ошибка. Потому что если скажем изменить то значение $P$, которое я получил свои способом на одну сотую, то у меня не то что конечное значение изменится на сотню, а на миллиард! Так что я решил взять шаг поменьше $N=10$ и все вроде прилично получилось.
Препод не принял, сказал делать прогонкой, ибо прогонка это все :D

-- 07.12.2015, 19:56 --

Pphantom в сообщении #1080359 писал(а):
затем найдите общее решение аналитически

А почему аналитически? Численно и надо, а то большая погрешность будет. И если б программа считала идеально, то все должно было быть отлично.

 
 
 
 Re: Метод прогонки
Сообщение07.12.2015, 20:09 
Sicker в сообщении #1080362 писал(а):
Мне нужно было интерполировать функцию кубическим сплайном с глобальным способом задания наклонов. И нужно было вычислить соответствующие $m_i$ с граничными условиями. Я решил моим методом стрельбы, и офигел от разброса значений :-) У меня при разбиении на $N=20$ частей окончательно вычисленное значение $m_n$ где-то отличалось на 504 от истинного, которое надо было получить хотя бы с точность до тысячных.
Ничего, это цветочки, бывает хуже.
Sicker в сообщении #1080362 писал(а):
Я думал, что ошибка в том, что фортран все округляет, и поэтому набегает ошибка.
Нет, Фортран тут ни при чем.
Sicker в сообщении #1080362 писал(а):
Так что я решил взять шаг поменьше $N=10$ и все вроде прилично получилось.
Препод не принял, сказал делать прогонкой, ибо прогонка это все :D
Именно. В определенных случаях можно обойтись и стрельбой, но если Вы заранее не знаете, что происходит, прогонка надежнее.
Sicker в сообщении #1080362 писал(а):
А почему аналитически? Численно и надо, а то большая погрешность будет. И если б программа считала идеально, то все должно было быть отлично.
Я помню, как у Вас обстояли дела с вычислительным программированием, поэтому решил, что так результат осознается быстрее (и тут его аналитически можно легко получить). Но, если хотите, можете попробовать и численно. Для вящей пикантности - используя переменные одинарной точности. :lol1:

 
 
 
 Re: Метод прогонки
Сообщение07.12.2015, 20:46 
Аватара пользователя
Pphantom в сообщении #1080366 писал(а):
используя переменные одинарной точности. :lol1:

А в идеале надо бесконечной :mrgreen:

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


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