2014 dxdy logo

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

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




 
 Формулы Адамса + (коректор/предиктор)
Сообщение29.03.2006, 17:15 
Вообщем в моей дипломной работе надо использовать метод Адамса. Перерыл кучу литературы, но толком ничего не нашел :(
Задача такая:
/ y' = f(x,y) , $a\leqslant x\leqslant b$
\ y(a) = y_0
для решения используем метод Адамса.
при двухточечном методе получаем: y_{k+1} = y_k + h*(3f_k - f_{k-1}) * 1/2 (*)
при трехточечном получаем: y_{k+1} = y_k + h*(23*f_k - 16*f_{k-1} + 5*f_{k-2}) * 1/12 (*)

(*) где y_k, y_{k+1}, f_k, f_{k-1}, f_{k-2} - это решения или правые части в соответствующих точках

дальше, для устойчивости пользуемся методом предиктор/коректор:
например при двухточечном методе получаем такое:
как было показано, предиктор вычисляется оп такой формуле: x_{n+1} = x_n + [3/2 * f( x_n, t_n ) - 1/2 * f( x_{n-1}, t_{n-1} ) ]
коректор вычисляется по формуле:
x_{n+1} = x_n +1/2 * [f( x_n, t_n ) + f( x_{n+1}, t_{n+1} ) ] (**)

(**) где в правой части x_{n+1} - это наш уже вычисленый предиктор

ПРОБЛЕМА: преподаватель говорит, что формулы коректора неправильная (хоть я ее честно содрал из методички) - неправельная потому, что коректор должен использовать теже точки, что и предиктор. А у меня точка x_{n-1} не используется. (!) Я перелапатил кучу литературы - нигде не даются формулы коректора и предиктора + не рассказывается как их вывести.
Просьба - исправте плизз мою формулу коректора и дайте формулы предиктора и коректора для трехточечного метода Адамса.
Заранее спасибо.

PS: надо ОЧЕНЬ срочно, если можете - ответте сразу.

 
 
 
 предиктор-корректор. Метод Адамса-Башфорта
Сообщение29.03.2006, 18:28 
Аватара пользователя
Ваш преподаватель заблуждается. Смотрите книги авторства W.H.Press et al., например "Numerical recipes in C", 2nd ed. p.747 раздел 16.7 Multistep, Multivalue, and Predictor-Corrector Methods.

В методе Адамса-Башфорта-Мултона
предиктор Адамса-Башфорта:
$y_{n + 1}  = y_n  + \frac{h}
{{12}}\left( {23y'_n  - 16y'_{n - 1}  + 5y'_{n - 2} } \right) + O\left( {h^4 } \right)$
корректор Адамса-Мултона:
$\[
y_{n + 1}  = y_n  + \frac{h}
{{12}}\left( {5y'_{n + 1}  + 8y'_n  - y'_{n - 1} } \right) + O\left( {h^4 } \right)
\]$

Дописал: Попутно порекламирую еще эту книгу, я из нее реализовывал 16.2 Adaptive Stepsize Control for Runge-Kutta - работало супер.

 
 
 
 Re: Помогите с Формулами Адамса + (коректор/предиктор) СРОЧН
Сообщение29.03.2006, 18:36 
Формулы очень похожи на правильные. Но x, y и какое-то t употребляются в почти случайном порядке. Как говаривал Остап Бендер: "Мотор был очень похож на настоящий, но не работал". Видимо преподаватель, услышав про "Перерыл кучу литературы", тоже решил пошутить про "коректор должен использовать те же точки, что и предиктор". Выражаю соболезнования обоим.

Для линейного варианта метода Адамса-Башфорда
- предиктор:
y^{pred}_{n+1} = y_n + h [\frac{3}{2} f( x_n, y_n ) - \frac{1}{2} f( x_{n-1}, y_{n-1} ) ]
- коректор:
x^{corr}_{n+1} = y_n + \frac{1}{2} h [f( x_n, y_n ) + f( x_{n+1}, y^{pred}_{n+1} ) ]

 
 
 
 Re: Помогите с Формулами Адамса + (коректор/предиктор) СРОЧН
Сообщение29.03.2006, 19:07 
хм.... даже незнаю - он ведет этот предмет уже далеко не первый год - шарит в нем класно........
хорошо, тогда такой вопрос:
почему коректор имеет именно такой вид? Тоесть, каким образом он выводится? (откуда берется?)

 
 
 
 
Сообщение29.03.2006, 20:10 
Аватара пользователя
Я не очень большой спец по численным методам, но эти, по-моему, растут из разложения в ряд Тейлора. Число учитываемых членов определяет порядок точности. Если вы возьмете два члена и всё - то хоть десять корректоров используйте - точность не поднимите. В том и суть, что используются разные, т.е. задействуется большее число точек в окрестности искомой.

 
 
 
 
Сообщение29.03.2006, 20:26 
photon писал(а):
Я не очень большой спец по численным методам, но эти, по-моему, растут из разложения в ряд Тейлора. Число учитываемых членов определяет порядок точности. Если вы возьмете два члена и всё - то хоть десять корректоров используйте - точность не поднимите. В том и суть, что используются разные, т.е. задействуется большее число точек в окрестности искомой.

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

 
 
 
 
Сообщение29.03.2006, 20:31 
Аватара пользователя
Wildy писал(а):
Но босс (преподаватель :) ) сказал, что надо и коректор тоже использовать - ну надо - так надо, а вот какой он будет для 3-х точечного метода неясно - еще даже толком с 2-х точечным коректором не разобрался.


А я вам тут сколько точек показал?

 
 
 
 
Сообщение29.03.2006, 20:47 
вот я туплю...... мне стыдно :oops: .......устал наверно :? ......
спасибки за ответ

если не трудно, можете обьяснить - почему в корректоре в расчет не берется точка y'_{n-2} ? почему мы от нее ушли? (если представить как обсчитывается по точкам - то интуитивно понимаю, что сдвиг должен быть на 1 точку (на предположительно вычисленую) дальше, но вот как к этому прийти? (мда, чет не получается внятно рассказать что я хочу узнать....) )

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


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