ФЭА / АИТ / Лабораторная работа «Численное решение дифференциальных уравнений. Метод Рунге-Кутта» по дисциплине «Оптимизация и оптимальные управления» Вариант №4
(автор - student, добавлено - 29-09-2017, 17:32)
Скачать: Кафедра АиТ
Лабораторная работа «Численное решение дифференциальных уравнений. Метод Рунге-Кутта» по дисциплине «Оптимизация и оптимальные управления» Вариант №4
Численное решение дифференциальных уравнений
Метод численного решения дифференциального уравнения первого порядка - это нахождение корней уравнения при известных начальных условиях х0; у(х0).
метод рунге-кутта
наиболее распространённый метод решения дифференциальных уравнений - метод Рунге-Кутта, так как он даёт более точное решение. Пусть необходимо решить уравнение при известных начальных условиях х0; у(х0). В методе Рунге-Кутта функцию раскладывают в ряд Тейлора: В методе Рунге-Кутта при вычислении ограничиваются только первыми пятью членами ряда. При этом у(х) переносят в левую часть: . И используя для правой части новую переменную k, получим . Здесь k-усреднённая производная, которая имеет вид: , где k1=hf(x,y); ; ; k4=hf(x+h,y+k3). Тогда окончательно получим формулу: . В общем виде данная формула примет вид: , где ;;
Алгоритм метода Рунге-Кутта
Шаг 1. Задаются начальные данные а=х0; у0; b; h. Шаг 2. Вычисляется новое значение функции по формуле: , Где ;; Шаг 3. Вычисляется новое значение аргумента по формуле: хi+1=xi+h. Шаг 4. Полученные значения функции и аргумента выводятся на печать. Шаг 5. Если аргумент функции меньше b, то необходимо перейти к шагу 2, в противном случае управление переходит к шагу 6. Шаг 6. Конец. Расчетная часть Задание. Написать программу решения дифференциального уравнения методом Рунге-Кутта, если известны следующие данные: Отрезок [2;3], Начальные значения x0,y0:[2;0.9], Шаг:h=0.1.
Решение. 1) Решим дифференциальное уравнение методом Рунге-Кутта: program Runge; var a,b,x,y,k1,k2,k3,k4,h:real; function f(x,y:real):real; begin f:=exp((1/3)*ln(4*x-2))+y end; begin Write('Vvedite a:');ReadLN(a); Write('Vvedite b:');ReadLN(b); Write('Vvedite h:');ReadLN(h); x:=a; y:=1; While x<=b do begin WriteLn('x=',x:2:1,' ','y=',y:2:2); k1:=h*f(x,y); k2:=h*f(x+h/2,y+k1/2); k3:=h*f(x+h/2,y+k2/2); k4:=h*f(x+h,y+k3); y:=y+(1/6)*(k1+2*k2+2*k3+k4); x:=x+h end; ReadLN end.
В результате решения уравнения методом Рунге-Кутта получили ряд следующих значений: Похожие статьи:
|
|