Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч.пособие_А4.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
3.41 Mб
Скачать

4. Решение задачи Коши с помощью встроенных функций matlab.

В MATLAB для решения задачи Коши для системы дифференциальных уравнений реализован набор процедур (встроенных функций): ode23, ode45, ode113, ode15s, ode23s, ode23t, ode23tb.

Процедура ode23 реализует метод Рунге-Кутты 2-го порядка, ode45 – метод Рунге–Кутты 4-го порядка, остальные процедуры используют другие алгоритмы, не описанные выше, которые адаптированы под задачи с разрывными функциями и другими особенностями. Руководство MATLAB рекомендует в первую очередь использовать процедуру ode45, а другие процедуры применять в случае, если эта функция не справляется с задачей.

Подробное описание процедур и их параметров с примерами использования можно посмотреть в MATLAB, набрав в командном окне doc ode45.

Упражнение 4. Используя процедуру ode45, найти решение задач Коши для уравнений 1-го и 2-го порядка (в соответствии с Вашим номером варианта).

Задания для выполнения лабораторной работы

Номер

варианта

1-й порядок

2-й порядок

1

2

3

4

5

6

7

8

Лабораторная работа № 2 Волновые уравнения

В этой лабораторной работе мы переходим к изучению методов решения уравнений в частных производных. Рассмотрим задачу Коши для уравнения колебаний струны (волнового уравнения).

Нашей целью будет познакомиться с аналитическими методами решения данной задачи и провести расчеты в среде MATLAB.

1. Задача Коши для неограниченной струны.

Рассмотрим одномерную бесконечную струну. Пусть в начальный момент времени струну отклонили от равновесного положения (придали некоторую начальную форму) и/или приложили некоторый распределенный импульс к точкам струны.

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

Известно, что решение данной задачи можно найти с помощью формулы Даламбера:

Для упрощения вычислений по данной формуле воспользуемся средствами MATLAB.

Пример П.1. Дана задача Коши для неограниченной струны:

Найти решение задачи при x = 4 в момент времени t = 2.

Сначала создадим две вспомогательные файл-функции для вычисления начального отклонения φ(x) и начальной скорости ψ(x).

Функция для начального отклонения будет иметь вид:

function u = u0(x)

u=zeros(size(x));

L = abs(x) <= 2;

u(L) = 1;

end

Функция для начальной скорости будет иметь вид:

function u = u_t0(x)

u=zeros(size(x));

L = abs(x) <= 2;

u(L) = 2-abs(x(L));

end

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

Сохраним написанные функции в файлы с именами u0.m и u_t0.m, соответственно.

Выполним расчет по формуле Даламбера при заданных параметрах x, t, a:

x = 4;

t = 2;

a = 2;

u = (u0(x-a*t)+u0(x+a*t))/2+quad(@u_t0,x-a*t,x+a*t)/(2*a)

Для удобства последующего использования реализацию вычислений по формуле можно поместить в отдельный файл-функцию с параметрами x, t, a.

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

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

Вторым существенным недостатком функции quad является то, что ее параметры x и t обязательно должны быть скалярными величинами. В результате для вычисления зависимости решения от x при фиксированном t (или наоборот) требуются вычисления решения в цикле.

Пример П.2. Для задачи Коши из примера П.1 найти решение при произвольном значении xϵ[–3,3] в момент времени t = 2.

Создадим файл-функцию для реализации вычисления решения по формуле Даламбера с учетом того, что переменная x может быть задана в виде массива.

function u = dalamber(a,x,t)

u = [ ];

for i=x

u_i = (u0(i- a*t)+u0(i + a*t))/2 + quad(@u_t0, i - a*t, i + a*t)/(2*a);

u = [u, ui];

end

end

Вызов написанной функции для расчета будет достаточно простой:

u = dalamber(2,-3:0.01:3,2)

Упражнение 1. В области –∞<x<+∞, 0≤t<+∞ найти решение уравнения колебания струны (a = 2, l = 2), удовлетворяющее условиям

С помощью скрипта из примера П.2 решить данную задачу Коши для произвольных x и моментов времени t = 1, 2, 5, 10. Построить графики, отображающие полученные решения.

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

2. На всех графиках желательно задать одинаковые границы по обеим осям для корректного сравнения результатов.

3. В этом и последующих упражнениях вместо данной задачи Коши можно использовать задачу из индивидуального задания (по согласованию с преподавателем).