Краевые задачи для дифференциальных уравнений matlab

Решение ОДУ в Matlab

Доброго времени суток! Сегодня мы поговорим о решении ОДУ (обыкновенных дифференциальных уравнений) в Matlab. Перед тем как мы начнём обсуждать данную тему, советую вам ознакомиться с темой: Численное дифференцирование в Matlab, чтобы лучше понимать теоретическую составляющую решения ОДУ.

Обыкновенные дифференциальные уравнения

С помощью дифференциальных уравнений можно описать разные задачи: движения системы, взаимодействующих материальных точек, химической кинетики и т.д. Различают три типа задач для систем диф. уравнений:

  • Задача Коши
  • Краевая задача
  • Задача на собственные значения

Кратко расскажу о их сути:

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

Методы решения дифференциальных уравнений

Решение ОДУ в Matlab и не только, в первую очередь, сводится к выбору порядка численного метода решения. Порядок численного метода не связан с порядком дифференциального уравнения. Высокий порядок у численного метода означает его скорость сходимости.

В случае большого интервала, с помощью алгоритмов с низким порядком сжимают интервал с решениями и находят приблизительные корни, а затем уже уточняют корни с помощью методов с высоким порядком.

Решение обыкновенных дифференциальных уравнений в Matlab можно реализовать «своими ручками», прописав алгоритм по разным схемам. Но также в Matlab есть встроенные функции, выполняющие все стандартные задачи.

Метод Рунге-Кутта первого порядка

Методы Рунге-Кутта представляют собой разложения в ряд Тейлора и от количества использованных элементов ряда зависит порядок этого метода. Следовательно, помимо Рунге-Кутта первого порядка, вы сможете увидеть методы других порядков. Иногда их называют другими именами.

Например, Метод Рунге-Кутта первого порядка, также известен как Метод Эйлера или Метод ломаных. Информацию о его математическом и графическом представлении советую поискать в гугл. Мы же поговорим о том, как Метод Рунге-Кутта первого порядка реализуется в Matlab для решения ОДУ. Например:

Решить и привести график ошибки уравнения y’ = y*x методом Рунге-Кутта первого порядка (Методом Эйлера, Методом ломаных).

Погрешность Метода Рунге-Кутта 1 порядка

» data-medium-file=»https://i2.wp.com/codetown.ru/wp-content/uploads/2017/02/Рунге-1-погрешность.png?fit=300%2C236&ssl=1″ data-large-file=»https://i2.wp.com/codetown.ru/wp-content/uploads/2017/02/Рунге-1-погрешность.png?fit=622%2C489&ssl=1″ loading=»lazy» src=»https://i2.wp.com/codetown.ru/wp-content/uploads/2017/02/%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-1-%D0%BF%D0%BE%D0%B3%D1%80%D0%B5%D1%88%D0%BD%D0%BE%D1%81%D1%82%D1%8C.png?resize=622%2C489″ alt=»Погрешность метода 1 порядка» width=»622″ height=»489″ srcset=»https://i2.wp.com/codetown.ru/wp-content/uploads/2017/02/Рунге-1-погрешность.png?w=629&ssl=1 629w, https://i2.wp.com/codetown.ru/wp-content/uploads/2017/02/Рунге-1-погрешность.png?resize=300%2C236&ssl=1 300w» sizes=»(max-width: 622px) 100vw, 622px» data-recalc-dims=»1″ />
На данном графике показана зависимость величины ошибки от шага.

Метод Рунге-Кутта второго порядка

Также известен как Метод Эйлера-Коши. Как видите, во второй части уравнения происходит обращения к следующему шагу. Но как тогда быть, если нам ещё не известен следующий шаг? Всё просто. Метод Рунге-Кутта второго порядка — это всё тот же метод первого порядка, однако, на половине шага происходит нахождение «первичного» решения, а затем происходит его уточнение. Это позволяет поднять порядок скорости сходимости до двух.

Решить и привести график ошибки уравнения u’ = u*x методом Рунге-Кутта второго порядка.


По сравнению с Рунге-Куттом первого порядка изначальная ошибка уже гораздо меньше.

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

Метод Рунге-Кутта четвёртого порядка

Метод Рунге-Кутта четвёртого порядка считается самым распространённым. Тем не менее, работает он аналогично второму и третьему порядку.

Решить и привести график ошибки уравнения u’ = u*x методом Рунге-Кутта четвёртого порядка.


Как видите, на последней картинке размерность ошибки на столько мала, что пришлось воспользоваться loglog() для лучшей видимости.

Решение ОДУ в Matlab стандартными средствами

Стоит отметить, что мы с вами разобрали только один самый известный метод решения ОДУ с разными порядками. Однако, методов очень много.

Для решения дифференциальных уравнений и систем в MATLAB предусмотрены следующие функции:

ode45 (f, interval, X0, [options])
ode23 (f, interval, X0, [options])
ode113 (f, interval, X0, [options])
ode15s (f, interval, X0, [options])
ode23s (f, interval, X0, [options])
ode23t (f, interval, X0, [options])
ode23tb (f, interval, X0, [options])

Входными параметрами этих функций являются:

  • f — вектор-функция для вычисления правой части уравнения системы уравнений;
  • interval — массив из двух чисел, определяющий интервал интегрирования дифференциального уравнения или системы;
  • Х0 — вектор начальных условий системы дифференциальных уравнений;
  • options — параметры управления ходом решения дифференциального уравнения или системы.

Все функции возвращают:

  • массив Т — координаты узлов сетки, в которых ищется решение;
  • матрицу X, i-й столбец которой является значением вектор-функции решения в узле Тi.

В функции ode45 реализован метод Рунге-Кутта 4-5 порядка точности, в функции ode23 также реализован метод Рунге-Кутта, но 2-3 порядка, а функция ode113 реализует метод Адамса.

Для решения жёстких систем предназначены функция ode15s, в которой реализован метод Гира, и функция ode23s, реализующая метод Розенброка. Для получения более точного решения жёсткой системы лучше использовать функцию ode15s. Для решения системы с небольшим числом жёсткости можно использовать функцию ode23t, а для грубой оценки подобных систем служит функция ode23tb.

Символьное решение обыкновенных дифференциальных уравнений произвольного порядка осуществляет функция dsolve r = dsolve(‘eq1,eq2,…’, ‘cond1,cond2,…‘, ‘v’)
Пример использования:

На этом мы закончим. Если остались вопросы, задавайте их в комментариях. Также вы можете скачать исходники чтобы лучше понять тему: «Решение ОДУ в Matlab».

Лабораторная работа Решение дифференциальных уравнений в Matlab

НазваниеЛабораторная работа Решение дифференциальных уравнений в Matlab
Дата15.02.2018
Размер0.51 Mb.
Формат файла
Имя файлаlab#5DiffEquationsMatlab.docx
ТипЛабораторная работа
#36539
Подборка по базе: ПРАКТИЧЕСКАЯ РАБОТА №1 Конституционное право Ч.1 (ТЕКСТ ЗАДАНИЯ , Самостоятельная работа по теме 1.5..docx, ПИСЬМЕННАЯ РАБОТА №1 БЖД.pdf, Практическая работаТеория вероятностей и математическая статисти, Контрольная работа.docx, Самостоятельная работа по теме 1.3.docx, Информатика лабораторная 1 Вариант 8.docx, Конт работа.docx, Метод_указания к Лабораторным работам (1).doc, Самостоятельная работа по теме 1.3.docx

РОССИЙСКИЙ УНИВЕРСИТЕТ ТРАНСПОРТА (МИИТ)

Кафедра «Управление и защита информации»

«Решение дифференциальных уравнений в Matlab»

«ИСТОРИЯ И МЕТОДОЛОГИЯ НАУКИ И ТЕХНИКИ

В ОБЛАСТИ УПРАВЛЕНИЯ»

Выполнила: студентка группы ТУУ-151

Проверила: доц. Зольникова Н.Н.

Решить дифференциальное уравнение:

при начальном условии

Решим данную задачу Коши с помощью метода Рунге-Кутта 4-5 порядка точности, используя функцию ode45(). Для этого запишем исходное уравнение как функцию в Matlab:

function y = dy( x, y )

%Уравнение, задающее производную

y = 2*cos(2*x) + sin(y);

end
Также необходимо задать начальные условия и интервал, на котором будет искаться решение.

interval = [0, 50];
%Решение с помощью метода Рунге-Кутта 4-5 порядка точности

[X,Y] = ode45(@dy, interval, y0);

plot(X, Y) %изображение графика функции

grid on %создание сетки на графике

Решить задачу Коши и краевую задачу для дифференциального уравнения

Для нахождения решения данного дифференциального уравнения следует найти общее решение соответствующего однородного дифференциального уравнения

Составляем и решаем характеристическое уравнение:

Характеристическое уравнение имеет два кратных действительных корня, следовательно, общее решение однородного уравнения имеет вид:

Найдем частное решение. Так как в исходном уравнении правая часть представляет собой константу, то частное решение будет иметь вид:

Подставляем частное решение в исходное уравнение. Получаем:

Таким образом, частное решение имеет вид:

Общее решение исходного дифференциального уравнения записывается в виде:

При этом производная

Решение задачи Коши.

Для нахождения и подставим начальные условия и решим систему:

Таким образом, при данных начальных условиях получаем решение в виде:

Решение краевой задачи.

Для определения и подставим краевые условия.

Таким образом, при данных краевых условиях получаем решение в виде:

Решим задачу Коши аналитически с помощью метода dsolve() и методом Рунге-Кутта с помощью функции ode45().

В функцию dsolve() необходимо записать исходное уравнение, начальные или граничные условия и переменную, по которой происходит дифференцирование. Символ «Dy» обозначает первую производную, «D2y» соответственно вторую производную.

Y = dsolve(‘D2y+2*Dy+y=1.5’, ‘y(0)=0’, ‘Dy(0)=0’, ‘x’)

y = ezplot(Y, [0,20]) %изображение графика символьного выражения

set(y, ‘LineWidth’, 2); %установка толщины линии

axis([0 20 0 2]); %задание границ графика

grid on; %создание сетки на графике

hold on; %следующий график будет рисоваться в этом же окне

Для использования функции ode45() запишем исходное уравнение в виде системы:

function F = dy2( x, y )

% ОДУ первого порядка

%Решение с помощью метода Рунге-Кутта 4-5 порядка точности

%Интервал, на которм будет находится решение

[X,Y] = ode45(@dy2, interval, y0);

%Значения искомой функции находятся в первом столбце матрицы Y

plot(X, Y(:,1), ‘:r’, ‘LineWidth’, 1.5) %изображение графика функции

legend(‘Аналитическое решение’,’Метод Рунге-Кутта’);
Оба графика решений полностью совпали.

Решение краевой задачи также найдем аналитически через функцию dsolve() и с помощью методов bvp4c() и ode45().

Y = dsolve(‘D2y+2*Dy+y=1.5’, ‘y(0)= 1’, ‘Dy(5)=6.5’, ‘x’)

y = ezplot(Y, [0,20]); %изображение графика символьного выражения

set(y, ‘LineWidth’, 2); %установка толщины линии

axis([0 20 -100 50]); %задание границ графика

grid on; %создание сетки на графике

hold on; %следующий график будет рисоваться в этом же окне


Для того чтобы решить уравнение с помощью ode45(), необходимо знать начальные условия. Для нахождения начальных условий по граничным условиям можно воспользоваться функцией bvp4c().

function res = boundCon( ya, yb )

%Функция, вычисляющая разность между значением в граничной точке

% и точным значением

%Задаем стартовые значения для поиска начальных условий

solinit = bvpinit(linspace(0,5), [1 1]);

%Нахождение значений y(x) и y'(x) на интервале [0;5]

sol = bvp4c(@dy2, @boundCon, solinit);

[X,Y] = ode45(@dy2, interval, y0);

%Значения искомой функции находятся в первом столбце матрицы Y

plot(X, Y(:,1), ‘:r’, ‘LineWidth’, 1.5) %изображение графика функции

legend(‘Аналитическое решение’,’Метод Рунге-Кутта’);

Графики решений полностью совпали.

Изобразим фазовый портрет системы. Для этого решим ее с помощью функции ode45() при различных начальных условиях.

%Интервал, на которм будет находится решение

[X,Y] = ode45(@dy2, interval, y0);

%Значения функции y(x) находятся в первом столбце

%Значения производной y'(x) находятся во втором столбце

Дифференциальные уравнения и краевые задачи, Моделирование и вычисление с помощью Mathematica, Maple и MATLAB, Эдвардс Ч.Г., Пенни Д.Э., 2008

Дифференциальные уравнения и краевые задачи, Моделирование и вычисление с помощью Mathematica, Maple и MATLAB, Эдвардс Ч.Г., Пенни Д.Э., 2008.

Данный учебник представляет собой весьма полный современный вводный курс обыкновенных дифференциальных уравнений. Довольно подробно освещены все темы, затрагиваемые в классических вводных курсах, включая применение матричных методов, операционного исчисления, степенных рядов и рядов Фурье. Не обойдены вниманием и современные исследования в области дифференциальных уравнений, такие как, например, хаос в динамических системах и нелинейные явления и системы. Особое внимание авторы уделяют численным методам и обучению построения математических моделей самых разнообразных (например, экологических, физических, инженерных) систем. Для изучения таких моделей авторы используют самые современные математические пакеты: MATLAB, Maple и Mathematica. Кроме того, для каждого раздела имеются задачи различной сложности, а также проекты для самостоятельной разработки студентами. Несомненно, книга будет полезна всем, кто изучает дифференциальные уравнения — как математикам, так и студентам других специальностей — инженерам, физикам, химикам, биологам, географам и геологам.

Дифференциальные уравнения первого порядка.
Однако весьма возможно, что ни одно решение дифференциального уравнения не соответствует всей известной информации. В таком случае мы должны заподозрить, что дифференциальное уравнение неточно описывает реальный мир. Например, решения уравнения (6) имеют вид P(t) = Cekt, где С — положительная константа, но ни для какого значения констант к и С функция P(t) не описывает точно фактический рост населения во всем мире в течение нескольких прошлых столетий. Возможно, мы должны поэтому написать более сложное дифференциальное уравнение, в котором принимается во внимание влияние перенаселения на коэффициент рождаемости, нехватка продовольствия и другие факторы. Это должно быть расценено не как отказ от модели, разобранной в примере 5, а как понимание того, что нужно учесть влияние дополнительных факторов при изучении роста численности населения. Действительно, уравнение (6) является весьма точным при некоторых обстоятельствах. Например, оно выполняется для роста численности колонии бактерий при условиях неограниченного продовольствия и пространства.

Скачать djvu
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России. Купить эту книгу


источники:

http://topuch.ru/laboratornaya-rabota-reshenie-differencialenih-uravnenij-v-mat/index.html

http://obuchalka.org/2015031783419/differencialnie-uravneniya-i-kraevie-zadachi-modelirovanie-i-vichislenie-s-pomoschu-mathematica-maple-i-matlab-edvards-ch-g-penni-d-e-2008.html