Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Решение дифференциальных уравнений в функции одной переменной на заданном отрезке методом Рунге-Кута в среде MATHCAD
Целью данной работы, является обучение студентов применению пакета MATHCAD для решения дифференциальных уравнений в функции одной действительной переменной на ПЭВМ. Введение. Численные методы решения задачи Коши. Задача решения обыкновенных дифференциальных уравнений сложнее задачи вычисления однократных интегралов, а В рассуждениях об интегрируемости в явном виде обычно имеется в интегрального синуса решений дифференциального уравнения вида х2у" + ху' + (х2 — ν 2)у = 0,
В настоящее время объем работы по подготовке решения на ЭВМ Разложение решения в ряд Тейлора. Одним из старейших методов решения дифференциальных Пусть требуется найти на отрезке [x0, x0 + Х] решение дифференциального уравнения у' = f(x, у) (7-1)
при начальном условии у(х0) = у0, f(х, у) аналитична в точке у " =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);
(7-3)
и, соответственно, полагаем уj+1 = zj (хj+1) (7-4) Далее мы проведем подробную оценку погрешности одно-
Это рассуждение является типичным примером правдоподобных рассуждений, приводящихся иногда в обоснование приме-
Описанный выше способ интегрирования дифференциальных уравнений В настоящее время имеются системы программ, которые осуществляют Наши рассуждения не следует понимать, как категорические рекомендации воздерживаться от применения методов, использующих разложение решения в ряд Тейлора. В ряде случаев ЭВМ используются для решения дифференциальных уравнений строго фиксированного типа. Например, при расчетах траекторий движения небесных тел приходится многократно интегрировать системы дифференциальных уравнений вполне определенного вида при Методы Рунге — Кутта
В частном случае n = 1 расчетная формула (1.3) принимает вид
(7-5)
Этот метод называется методом Эйлера. Можно построить другой класс расчетных формул, ккоторому принадлежит метод
(7-6)
т. е.
поскольку у'(х) = f(х, у(х)), то отсюда имеем
Отбрасывая член порядка O(h2) и обозначая х = хj, х+h = 7-7
или
у* = y(x) + hf(x, у (х)).
Построим другую пару формул с погрешностью на шаге та- y(x+h) = y(x) + hy ’ (x +h/2) + O(h3)
то, как и в предшествующем случае, имеем у(х+ h) = у(х)+ hf (x+h/2, у*)+ 0 (h3).
В качестве у* можно взять результат вычислений по формуле у * = у(х)+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< j< i< q;
последовательно получаем
k1(h) = hf(x, у),
k2(h) = hf(х+a2h), у+~21k1(h)), kq(h) = hf(х+ аqh, у+ pq, 1k1(h)+... + p<, /г, (h))
y(x+h) ≈ z(h) = y(x) + Рассмотрим вопрос овыборе параметров α i, рi, β i, j. Обозна- φ (0)= φ ’(0))=... = φ (s)(h) =0
при произвольных достаточно гладких функциях f(x, у), а
(7-9)
где 0< Θ < 1. Величина φ (h) называется погрешностью метода на шаге, а s порядком погрешности метода. Порядок выполнения работы. 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 – коэффициент линеаризации; Записываем начальные условия:
Решение выводится в массив Z. Все значения индексируются от 0 до n-1 с шагом Δ x
Вид изменения температуры представлен на графике Содержание отчета Отчет к лабораторной работе должен включать следующие разделы: · математическая постановка задачи; · алгоритм задачи; · блок-схему алгоритма; · программа, составленная по блок-схеме; · результат вычисления задачи по программе на ЭВМ; · для задач, допускающих получение точного решения аналитическим методом, привести это решение и сравнить с полученным результатом. Привести абсолютную и относительную ошибки! Контрольные вопросы. 1. Как решается задача о нахождении наибольшего (наименьшего) значения функции одной независимой переменной аналитически? 2. Почему не всегда можно решить задачу аналитически (учитывая использование численных методов для приближенного решения трансцендентных уравнений y’(x) = 0)? 3. Что такое функция rkfixed и как она работает? 4. В чем достоинства и недостатки метода Рунге-Кута? 5. Как будет выглядеть программа реализации поиска минимума? 6. Если функция определена, но имеет разрыв в конечном числе точек отрезка [a, b], можно ли применить метод Рунге-Кута?
Варианты заданий. Найти решение функции y = f (x) на отрезке [ a, b ] методом Рунге-Кута, в соответствии с вариантом заданным преподавателем. Сравнить результат с точным значением (решением методом Ньютона-Лейбница), оценить абсолютную и относительную погрешности вычислений.
Таблица вариантов 7-1
Назад
ЛАБОРАТ0РНАЯ РАБОТА № 8 |
Последнее изменение этой страницы: 2017-03-15; Просмотров: 929; Нарушение авторского права страницы