Ю11.13

Задача

Метод Рунге-Кутта. Найти приближенное решение обыкновенного дифференциального уравнения  [latex]y^\prime=f(x,y), y(a)=y_{0}[/latex] методом Рунге-Кутта пятого порядка на отрезке [latex][a,b][/latex] с заданным шагом [latex]h[/latex]. Значения функции [latex]y(x)[/latex] в узловых точках вычисляется по формуле: [latex]y_{i+1}=y_{i}+\frac{h}{6}(k_{1}+2k_{2}+2k_{3}+k_{4}), i=0,1,2,\cdots[/latex], где [latex]k_{1}=f(x_{i},y_{i}); k_{2}=f(x_{i}+\frac{h}{2},y_{i}+\frac{h}{2}k_{1});[/latex][latex]k_{3}=f(x_{i}+\frac{h}{2},y_{i}+\frac{h}{2}k_{2}); k_{4}=f(x_{i}+h,y_{i}+hk_{3})[/latex].

Решим дифференциальное уравнение такого вида: [latex]y^\prime=x+y[/latex] при начальном условии [latex]y(0)=1[/latex] на отрезке [latex][0, 0.5][/latex] с шагом интегрирования [latex]h=0.1[/latex]

Screenshot_1

Screenshot_2

 

Screenshot_3

Код программы

Для решения примера введем данные во входной поток в таком порядке: [latex]0.0[/latex], [latex]0.5[/latex], [latex]0.1[/latex], [latex]1.0[/latex], где первое и второе число — начало и конец отрезка интегрирования соответственно, третье — шаг интегрирования и четвертое — значение [latex]y[/latex] в точке [latex]a[/latex] (в начале отрезка), т.е. [latex]y(a)=y(0)[/latex].

В программе присутствует функция, которой мы передаем параметры [latex]x, y[/latex] и которая возвращает само дифференциальное уравнение. Далее, в цикле высчитываем значения [latex]k_{1},k_{2},k_{3},k_{4}[/latex], передавая каждый раз параметры в функцию с шагом [latex]h[/latex] до тех пор пока не дойдем до конца промежутка. После завершения цикла выводим значение [latex]y_{0}[/latex].

 

Related Images:

One thought on “Ю11.13

  1. — Требование набирать все формулы и таблицы связано с тем, что поисковые системы не могут заглянуть в рисунок и проиндексировать тексты и формулы внутри них.
    Окажется, что огромная Ваша работа будет фактически недоступна для всего прогрессивного человечества.
    Мы ведь не можем этого допустить?
    — Нет ссылки да запускаемый код
    — Решением дифференциального уравнения является семейство функций. Если задано значение искомой функции в некоторой точке y(a), то решением будет одна функция. Если решение численное, то находится не сама функция, а её значения в точках некоторого интервала. В Вашем случае решением будет не одно число, а табуляция искомой функции. Аналитическое решение для Вашего примера можно увидеть здесь. Для проверки стоит убедиться, что численные значения близки к аналитическим.

Добавить комментарий