Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Tema5.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
210.94 Кб
Скачать

5.4 Решение обыкновенных дифференциальных уравнений и вычисление интегралов

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

Пример 11. Решить дифференциальное уравнение, используя стандартную функцию ode45:

(5.3)

в интервале x = 0 до 30 при y(0) = 2 для a = 0,24.

Предварительно представим уравнение (5.3) системой уравнений:

(5.4)

при начальных значениях: y1(0) = 0; y2(0) = 2, чтобы исключить из правой части (5.3) независимую переменную x.

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

function ex_eqdif

global alfa

alfa=0.24

[t,y]=ode45(@dif1,[0 30],[0 2]);

plot(t,y);

function dy=dif1(t,y)

% pravie chasti difderensial. uravneniy

global alfa

dy=zeros(2,1);

dy(1)=1;

dy(2)=cos(y(1))-sin(y(1))-alfa*y(2);

PS: Фунция dif1(t,y) определяет правые части уравнений (5.4). Между неизвестными в уравнениях (5.4) и переменными программы имеется соответствие: x = y(1), y = y(2).

ode45 (@имя функции, [интервал интегрирования], [начальные условия]) - функция служит для решения обыкновенных нежестких дифференциальных уравнений методом Runge-Kutta 4-го порядка.

zeros(m,n) - функция формирует массив нулей размера (где m – число уравнений, n=1).

global – оператор объявляет глобальные переменные. Если вместо переменной alfa в правые части подставить число, то глобальную переменную вводить не надо.

Пример 12. Решить систему уравнений Лотка-Волтерра, используя функцию ode23:

(5.5)

при х =0 до 10 и начальных условиях: y1(0) = 1; y2(0) = 1. Параметры = 0.01 и = 0.02 задать как глобальные величины. Построить графики функций y1(x), y2(x)).

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

function Lotka_Volterra

global alpha beta

alpha=0.01; beta=0.02;

[t,y]=ode23(@lotka,[0 10],[1;1]);

plot(t,y); %Построение графиков y1(t) и y2(t)

function dy=lotka(t,y)

global alpha beta

dy=zeros(2,1);

dy(1)=y(1)-alpha*y(1)*y(2);

dy(2)=-y(2)+beta*y(1)*y(2);

PS: Фунция lotka(t,y) определяет правые части уравнений (5.5). Между неизвестными в уравнениях (5.5) и переменными программы имеется соответствие: y1 = y(1), y2 = y(2).

ode23 (@имя функции, [интервал интегрирования], [начальные условия]) - функция служит для решения обыкновенных нежестких дифференциальных уравнений методом Runge-Kutta низкого порядка.

Вычисление интегралов

Пример 13. Вычислить интеграл:

(5.6)

по методу Симпсона (стандартная функция quad) и построить график подинтегральной функции в интервале х = [02] с шагом 0,1.

Решение задачи:

function int1

x=0:0.02:2;

y=1./(x.^3-2*x-5);

plot(x,y); %Построение графика y(x)

Q = quad(@myfun,0,2)

function y = myfun(x)

y = 1./(x.^3-2*x-5);

PS: Подинтегральная функция вычисляется в фунции myfun(x) при различных значениях х. Значение интеграла получаем в переменной Q.

quad(@имя_подинтегральной_функции, a, b) - численное вычисление интеграла по адаптивному методу Симпсона, где: a и b – пределы интегрирования.

Пример 14. Вычислить интеграл:

(5.7)

по методу Симпсона (стандартная функция quad) при y = 10 o (преобразовать градусы в радианы). Для величины y в программе использовать глобальную переменную.

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

function int2

global teta

teta=pi/6;

Q = quad(@myfun,0,pi/2);

function y = myfun(x)

global teta

y=1./sqrt(1-(sin(teta)*sin(x)).^2);

PS: Величине y в программе соответствует глобальная переменная teta. Значение интеграла получаем в переменной Q.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]