Решение дифференциальных уравнений в функции одной переменной на заданном отрезке методом рунге-кута в среде mathcad

Целью данной работы, есть обучение студентов применению пакета MATHCAD для ответа дифференциальных уравнений в функции одной настоящей переменной на ПЭВМ.

Введение.

Численные способы ответа задачи Коши.Задача ответа обычных дифференциальных уравнений сложнее задачи вычисления однократных интегралов, а
часть задач, интегрируемых в явном виде, тут значительно
меньше.

В рассуждениях об интегрируемости в явном виде в большинстве случаев имеется в
виду, что ответ возможно вычислено при помощи конечного числа «элементарных» операций: сложения, вычитания, умножения, деления, возведения
в степень, логарифмирования, потенцирования, косинуса и вычисления синуса. Еще во время, предшествующий появлению ЭВМ, понятие «элементарной» функции и «элементарной» операции претерпело изменение. Решения некоторых частных задач так довольно часто виделись в приложениях, что было нужно составить таблицы их значений, к примеру, таблицы интегралов Френеля

интегрального синуса ответов дифференциального уравнения вида

х2у + ху’ + (х2 — ?2)у = 0,

именуемых функциями Бесселя, и последовательности вторых функций, именуемых особыми функциями. При наличии таких таблиц исчезает принципиальная отличие между вычислением функций sin(x), ln(х), и т.д. и особых
функций. В том и втором случаях возможно вычислять значения этих функций
при помощи таблиц, и те и другие функции возможно вычислять, приближая
многочленами, рациональными дробями и т.д. Так, в класс задач,
интегрируемых в явном виде, включились задачи, решения которых выражаются через особые функции. Но и данный, более широкий, класс
образовывает довольно малую долю задач, предъявляемых к ответу. Значительное расширение класса реально решаемых дифференциальных уравнений, а следовательно, и расширение сферы применения математики случилось с созданием численных способов и распространением применения
ЭВМ.

На данный момент объем работы по подготовке ответа на ЭВМ
дифференциального уравнения не так уж значительно превышает объем работы по написанию этого уравнения; при жажде возможно конкретно
измашины взять график ответа либо изображение ответа на экране.
В следствии этого отпала необходимость в изучении интегрирования уравнений и большого числа в явном виде.

Разложение ответа в ряд Тейлора.

Одним из старейших способов ответа дифференциальных
уравнений есть способ разложения в ряд Тейлора.

Пускай требуется обнаружить отрезке [x0, x0 + Х] ответ дифференциального уравнения

у’ = f(x,у) (7-1)

при начальном условии у(х0) = у0, f(х, у) аналитична в точке
(х0, y0). Дифференцируя (1.1) по х, возьмём соотношения:

у=fx(x,y) + fy(х,y)*y’,

у»’ = fxx(х,у) + 2fxy(х,у) у’+ fyy(х, у) у’2 + fy(х, у) у», …

Подставляя в это выражение х=x0 и у = у0, приобретаем последовательно значения

у’ (x0), у (x0), у'(х0), …

Так, возможно написать приближенное равенство

(7-2)

В случае, если |х — x0| больше радиуса сходимости последовательности

,

то погрешность выражения (1.2) не пытается к нулю при n ?. Исходя из этого время от времени целесообразно поступить следующим образом.

Разобивают промежуток [х0, х0 + Х] на отрезки

[xj-1,xj], j = 1, …, N;

и последовательно приобретаем приближения уj к значениям ответа

у(хj), j = l, …, N,

по следующему правилу: пускай значение уj уже отыскано, вычисляем значения в точке хj производных уj(i) решения исходного дифференциального уравнения, проходящего через точку (хj, уj);
на отрезке [хj, хj+1] полагаем

(7-3)

и полагаем

уj+1 = zj (хj+1) (7-4)

Потом мы совершим подробную оценку погрешности одно-
шаговых способов интегрирования, к каким относится разглядываемый метод. На настоящем этапе дискуссии возможно
привести следующие мысли в пользу того, что погрешность этого способа может оказаться малой. Разглядим слу-
чай хj+1 — хj = h; если бы значение уj совпадало со значением
правильного значения у(хj), то погрешность от замены уj+1 на
zj(хj+1) имела бы порядок O(hn+1). Потому, что мы вносим по-
грешность на O(h-1) отрезках, то возможно ожидать, что при измельчении шага сетки будет выполняться соотношение

Это рассуждение есть обычным примером правдоподобных рассуждений, приводящихся время от времени в обоснование приме-
нения тех либо иных численных способов; но направляться иметь
в виду, что во многих случаях видится такая обстановка: в
обоснование сходимости способа такие рассуждения возможно про-
вести, а в действительности сходимости приближенного ответа к
правильному нет. Исходя из этого вопрос строгого обоснования сходимости

способов при “мельчении” шага, и получения оценки погрешности есть вопросом, имеющим не только теоретическое,
но и наиболее значимое практическое значение.

Обрисованный выше метод интегрирования дифференциальных уравнений
при n1 был исключен из широкой практики более столетия назад.
При применении этого способа необходимо вычислять значения функции f и всех ее производных fxjym-j при m Кроме других обстоятельств, при ручном счете, это не очень приятно еще и
тем, что рассеивается внимание расчетчика и возрастает возможность неточностей.
При работе с ЭВМ использование этого способа требует написания солидного
числа блоков вычисления производных, что противоречит главной тенденции
упрощения взаимоотношений между машиной и пользователем.

На данный момент имеются совокупности программ, каковые реализовывают
формульное дифференцирование функций; при заданной программе вычисления функции f(х,у) эта совокупность программ расписывает программы вычисления производных функции f(x,у); так, отпадает необходимость
написания программ вычисления этих производных. Но по затратам машинного времени подобные методы, в большинстве случаев, значительно усту-
пают разглядываемым ниже способам типа Рунге — Кутта и конечно-разностным способам.

Отечественные рассуждения не нужно осознавать, как окончательные советы воздерживаться от применения способов, применяющих разложение ответа в ряд Тейлора. Во многих случаях ЭВМ употребляются для ответа дифференциальных уравнений строго фиксированного типа. К примеру, при расчетах траекторий перемещения небесных тел приходится многократно интегрировать совокупности дифференциальных уравнений в полной мере определенного вида при
разных различных значениях и начальных условиях параметров в правых
частях. То событие, что все время решается одинаковая совокупность дифференциальных уравнений, может дать следующее преимущество: конкретные формулы для производных правых частей совокупности в большинстве случаев имеют довольно много
неспециализированных частей; в следствии для отдельных классов совокупностей может произойти,
что одновременное вычисление всех этих производных потребует, относительно малого числа арифметических операций и разглядываемый способ
окажется действеннее вторых способов численного интегрирования. В будущем мы, по большей части, будем изучать способы численного интегрирования,
требующие вычисления лишь значений правой части; на базе этих способов
в большинстве случаев и строятся стандартные программы ответа широких классов типовых задач.

Способы Рунге — Кутта

В частном случае n = 1 расчетная формула (1.3) принимает вид

(7-5)

Данный способ именуется способом Эйлера. Возможно выстроить второй класс расчетных формул, к у которого в собствености способ
Эйлера. Укажем сперва несложные способы этого класса, приобретаемые из наглядных мыслей. Пускай известно значение
ответа у(х) и требуется вычислить значение у(х+h). Рас-
наблюдаем равенство

(7-6)

При замене интеграла в правой части на величину hy'(х) по-
грешность имеет порядок O(h2),

т. е.

потому, что у'(х) = f(х, у(х)), то из этого имеем

Отбрасывая член порядка O(h2) и обозначая х = хj, х+h =
хj+1, возьмём расчетную формулу Эйлера (7-5). Для получения более правильной расчетной формулы необходимо правильнее аппроксимировать интеграл в правой части (7-6). Воспользовавшись формулой трапеций, возьмём

7-7

либо
в противном случае,

Соответствующая расчетная формула:

В большинстве случаев это уравнение неразрешимо очевидно довольно уj+1.
Исходя из этого произведем предстоящее преобразование метода.
Заменим у(х+h) в правой части (3) на некую величину

тогда правая часть изменится на величину

где у находится между у* и у(х+h); благодаря предположе-
ния (5) эта величина имеет порядок O(h3). Так, при
условии (5)

условию (5) удовлетворяет итог вычислений, по расчет-
ной формуле Эйлера

у* = y(x) + hf(x, у (х)).

Последние соотношения определяют несколько расчетных формул

Выстроим другую несколько формул с погрешностью на шаге та-
кого же порядка. Интеграл в правой части (7-6) заменим по фор-
муле прямоугольников:

y(x+h) = y(x) + hy’(x +h/2) + O(h3)

либо, все равно, что
в случае, если

то, как и в предшествующем случае, имеем

у(х+ h) = у(х)+ hf (x+h/2, у*)+ 0 (h3).

В качестве у* возможно забрать итог вычислений по формуле
Эйлера с шагом h/2:

у*= у(х)+h/2*f(х, у(х)).

Этим соотношениям соответствует пара расчетных формул

уi+1/2 = уi+ h/2 f ( xi,yj) (7-8)

yi+1 = уi+f (хi+ h/2, уj+1/2 )

Полученные способы относятся к семейству способов Рунге-
-Кутта, имеющих следующий вид. В ходе вычислений фиксированы кое-какие числа

а2, …, аq, p1, …, Pq (if 0

последовательно приобретаем

k1(h) = hf(x,у),

k2(h) = hf(х+a2h), у+~21k1(h)),

kq(h) = hf(х+ аqh, у+ pq,1k1(h)+ … + p

и полагаем

y(x+h) ? z(h) = y(x) +

Разглядим вопрос о выборе параметров ?i, рi, ?i,j. Обозна-
чим ?(h) = у(х+h) — z(h). В случае, если f(x, у) — достаточно ровная функция собственных доводов, то k1(h), …, kq(h) и ?(h) —
ровные функции параметра h. Предположим, что

?(0)= ?’(0))= … = ?(s)(h) =0

при произвольных достаточно ровных функциях f(x,у), а
?(s+1)(0) ? 0 для некоей ровной функции f(x,у). В соответствии с формуле
Тейлора, справедливо равенство

(7-9)

где 0 ?

Порядок исполнения работы.

I. Делим отрезок [а, b] на n частей:

a = x0 x1 x2 … xi xi+1 … xn = b

Находим ход вычисления

h = (а — b)/n

В Mathcad имеются следующие встроенные функции:

— Rkfixed (init, x1, x2, npoints, D) — употребляется для фиксированного шага способа Рунге-Кутта.

— Rkadapt (init, x1, x2, npoints, D) — употребляется для способа Рунге-Кутта с адаптивным размером шага.

— Bulstoer (init, x1, x2, npoints, D) — Bulirsch-Stoer способ более надежный, но используется лишь для гладко изменяющихся функций.

Любая из этих функций возвращает матрицу, в которой первый столбец содержит “n points” – n точек между x1 и x2, отрезка на котором ищется ответ Обычного Дифференциального Уравнения (ОДУ). Последующие столбцы содержат соответствующие значения матрицы ОДУ с n-ым порядком.

В работе будем применять встроенную Mathcad функцию — rkfixed.

Объяснения:

  • Init – есть, либо вектором n настоящих начальных значений, либо одиночного скалярного начального значения, при одиночной ОДУ.
  • х1 и x2 — настоящие, скалярные концевые точки промежутка, по которому ищется ответ ОДУ. Начальные значения в init — значения функции ОДУ.
  • N-points — целое число точек вне исходной точки, в которых ищется ответ, при необходимости они должны быть аппроксимированы. Оно определяет число строчков (n-points +1) в матрице ответов.
  • D(x, y) — n-элементный вектор ответа функции свободной переменной x, и вектора функций y, содержит уравнения для первых производных всех малоизвестных функций в совокупности ОДУ. Дабы создать данный вектор, уравнение с первыми производными приводиться раздельно на левом — hand-side, без множителей, и никаких более большого порядка производных в уравнении. К примеру, одиночная ОД функция y’(x), которая содержит вторую производную, должна быть написана как совокупность уравнений в y0(x) и y1(x), где первая производная y0 — y1. Одна обычная дифференциальная функция

перезаписывается для решающего устройства, применяя векторные матрицы, как

Примечания:

Вектор функции D выяснен без его перечня параметров на решающем устройстве ОДУ, и функции yn(x) выяснены в D без их параметра. Второй параметр D должен быть задан сценарием как вектор, даже в том случае, если имеется лишь одиночный элемент.

Rkadapt — применяет неравномерные размеры внутреннего шага, в то время, когда решается дифференциально-разностное уравнение, добавляется большее количество шагов в области большего трансформации ответа, но возвращает ответ в равномерно распределенных точках.

Исполнение работы.

Ниже приведен пример ответа задачи охлаждения нагретого тела до температуры воздуха способом Рунге-Кута. Ответ ищется, в виде численного уравнения вида:

yn+1= yn+x/6(k1(yn)+1k2(yn)+2k3(yn)+k4(yn))

Температура тела изменяется от начальной температуры заданной в переменной y0 изменяющейся по экспоненциальному закону вида

r(at+ts).

Выполняется блок — схема метода на отдельном странице и строится график, как пример, рассмотрено ответ дифференциального уравнения df(t,y) = -r(y0 – Ts), прилагается распечатка ответа данной задачи с таблицей данных и графиком. В пакете Mathcad соответствующие блоки будут выглядеть следующим образом:

1. Вводим начальные условия:

Ts = 220С — температура воздуха;

y0 = 900С — температура нагретого тела;

r – коэффициент линеаризации;

Записываем начальные условия:

Отрезок 90 ? 22 делится на n =1000 частей

Ответ выводится в массив Z. Все значения индексируются от 0 до

n-1 с шагом ?x

Вид трансформации температуры представлен на графике

Содержание отчета

Отчет к лабораторной работе обязан включать следующие разделы:

  • математическая постановка задачи;
  • метод задачи;
  • блок-схему метода;
  • программа, составленная по блок-схеме;
  • итог вычисления задачи по программе на ЭВМ;
  • для задач, допускающих получение правильного ответа аналитическим способом, привести это решение и сравнить с взятым результатом. Привести полную и относительную неточности!

Контрольные вопросы.

1. Как решается задача о нахождении громаднейшего (мельчайшего) значения функции одной свободной переменной аналитически?

2. По какой причине не всегда возможно решить задачу аналитически (учитывая применение численных способов для приближенного ответа трансцендентных уравнений y’(x) = 0)?

3. Что такое функция rkfixed и как она трудится?

4. В чем преимущества и недочёты способа Рунге-Кута?

5. Как будет смотреться программа реализации поиска минимума?

6. В случае, если функция выяснена, но имеет разрыв в конечном числе точек отрезка [a, b], возможно ли применить способ Рунге-Кута?

Варианты заданий.

Отыскать ответ функции y = f(x) на отрезке [a, b] способом Рунге-Кута, в соответствии с вариантом заданным учителем. Сравнить итог с правильным значением (ответом способом Ньютона-Лейбница), оценить безотносительную и относительную погрешности вычислений.

Таблица вариантов 7-1

№ варианта Функция y = f (x) Отр-к инт-ния [a, b] Правильное значение
m = min f(x)[a, b] M = max f(x)[a, b]
y = (x-3)2*e|x| [-1, 4]
y = (x-3)3*e|x+1| [-2, 4]
y = e [-2, 1]
y=ln(1+ ) [-2, 1]
y=arcctg [-1, 2]
y= [-1, 2]
y = arcctg [-1, 2]
y = cos(x + ?/3signx) + sin(x+?/6) [-?, ?]
y=sin(x-?/4) — cos(x -2?/3*signx) [-?, ?]
y = sin(x-?/3) — cos(x-2?/3*signx) [-?, ?]
y = 2arcctgx + arcsin(2x/(x2 + 1) [-?, ?]
y = 4x + (9?2)/x + sinx [?, 2?]
y = cos2x + cos2(?/3 + x)-cosx*cos(?/3+x) [- ?, ?]
y =2Sinx + Sin2x [0, 3/2?]
y = x — 2lnx [3/2, e]
y = [-2, 1]
y= [-1, 1]
y = [0, 1]
y = x5 — 5×4 + 5×3 + 1 [-1, 2]
y = x — 2 [0, 5]
y = 0,625×4 + 0,5×2 — 1,2502x [0, 3]
y = 0,5×2 + x + -2,5x [0, 3]
y = 0,0393×3 — x2lnx + 0,25×2 [1, 2]
y = 1,5×2 — 4xlnx + 4x [2, 4]
y = ex + e-x — 2x [0, 1]
y = 1,5×2 — 14x + ex + e-x [1, 3]
y = 2x — 0,5×2 – Cosx -(1+x)ln(1+x) [0, 3]
y = — [-2, 1]
Y = xlnx – ½*x2 + 0,8x [-0,5, 3]
y = 1/3*x3 — (1+x)ln(1+x) + x -2 [-0,5, 3]
y = x/lnx [-1, 1]
y = 2×2 — lnx [-1, e]
y = x — 2sinx [0, 2?]
y = 2sinc + cos2x [0, 2 ?]
y = x [0, 2]
y = 2×3 — 3×3 [-1, 1]
y = x4 — 2×2 + 5 [-2, 2]
y = x + 2 [0, 4]
y = x5 — 5×2 + 5×3 + 1 [-1, 2]
y = x3 — 3×2 + 6x — 2 [-1, 1]
y = [-6, 8]
y = (1 – x + x2)/(1 + x — x2) [0, 1]
y = (x — 1)/(x + 1) [0, 4]
y = 1/x + 1/(1 — x) [0, 1]
y = sin2x — x [-?/2, ?/2]
y = 2tgx – tg2x [0, ?/2]
y = x4 [0,1, +?]
y = [0, 3]
y = arctg [0, 1]
y = x*sinx + cosx – (¼)*x2 [-?/2, ?/2]

Назад

ЛАБОРАТ0РНАЯ РАБОТА № 8

Решение дифференциальных уравнений методом Рунге-Кутты


Интересные записи:

Понравилась статья? Поделиться с друзьями: