Поиск по базе сайта:
Лабораторная работа №2 план решение обыкновенных дифференциальных уравнений в matlab icon

Лабораторная работа №2 план решение обыкновенных дифференциальных уравнений в matlab




Скачати 45.92 Kb.
НазваЛабораторная работа №2 план решение обыкновенных дифференциальных уравнений в matlab
Дата конвертації21.11.2012
Розмір45.92 Kb.
ТипЛабораторная работа



ЛАБОРАТОРНАЯ РАБОТА №2

ПЛАН

Решение обыкновенных дифференциальных уравнений в MATLAB.


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


Общий порядок программирования:

  1. Создается М-функция с описанием правых частей дифференциальных уравнений;

  2. Создается М-сценарий с выбранным решателем;


Пример 1. Решить следующую систему обыкновенных дифференциальных уравнений с заданными начальными условиями:




% Программа решения примера 1

% Создаем М-функцию под именем dif31.m

function dx31=dif31(t,x);

dx31=[-x(1)+2;2*x(1)^2-0.5*x(2)];


% Создаем М-сценарий под именем ddd45_31.m

% Сценарий решения с помощью ode45

T=[0 15]; % Интервал интегрирования

x0=[10;5]; % Начальные условия

[t,x]=ode45('dif31',T,x0); %t, x — выходные переменные решателя ode45

plot(t,x),grid,title('Пример 3.1'),legend('X1','X2')


% Изменить начальные условия:

% Изменить интервал интегрирования: от 0 до 20, от 0 до 7.

% Вывести графические результаты с различным начертанием координат

% Прменить решатели ode23, ode113. Сравнить результаты покоординатно, для чего вывести результаты решения с помощью функции subplot .


Пример 2. Решить следующую систему линейных дифференциальных уравнений с заданными начальными условиями:



% Создаем М-функцию с именем dif32.m

function f=dif32(t,x);% t, x — входные переменные для М-функции

f=[-3*x(1)+10;x(1)-2*x(2);4*x(2)-x(3)];


%Создаем М-сценарий под именем ddd45_32

% Сценарий решения примера 2

T=[0,12];

x0=[0;0;0];% x0 — вектор начальных условий

[t,x]=ode45('dif32',T,x0);

plot(t,x),grid,title('dif32'),legend('X1','X2','X3')


% Изменить интервал интегрирования

% Изменить начальные условия

% Вывести графические результаты с различным начертанием координат

% Использовать решатели ode23, ode113. Сравнить результаты покоординатно, для чего вывести результаты решения с помощью функции subplot .


Пример 3. Уравнение Ван-дер-Поля.




Для решения дифференциального уравнения 2-го порядка сначала приведем его к системе дифференциальных уравнений 1-го порядка:



где


% Создаем М-функцию под именем van33.m

function f2=van33(t,X);

f2=[X(2);2*(1-X(1)^2)*X(2)-X(1)];


%Создаем М-сценарий под именем ddd45_33

T=[0 40];

X0=[3;0];

[t,X]=ode45('van33',T,X0);

plot(t,X),grid,title('Ур-е Ван-дер-Поля'),legend('X1','X2')


% Изменить интервал интегрирования

% Изменить начальные условия (только все нулевые не должны быть)

% Изменить множитель в уравнении (вместо 2)

% Вывести графические результаты с различным начертанием координат

% Использовать решатели ode23, ode113. Сравнить результаты покоординатно, для чего вывести результаты решения с помощью функции subplot .


Пример 4. Интегрирование дифференциальных уравнений с выводом результатов в заданном диапазоне точек независимого переменного. Видоизменим пример 2 в сценарии задания интервала интегрирования.

% Сценарий решения примера 4

T=[0:1:6,7:2:18];% от 0 до 6 шаг 1, от 7 до 18 шаг 2

x0=[0;0;0];

[t,x]=ode45('dif32',T,x0);

plot(t,x),grid,title('dif32'),legend('X1','X2','X3')

Пример 5. Интегрирование дифференциальных уравнений с выводом результатов в заданных точках независимого переменного. Видоизменим пример 2 в сценарии задания интервала интегрирования.

% Сценарий решения примера 5

T=[0 0.5 1 1.5 3 4 8]; 7 точек переменного t

x0=[0;0;0];

[t,x]=ode45('dif32',T,x0);

plot(t,x),grid,title('dif32'),legend('X1','X2','X3')


Пример 6. Интегрирование систем линейных дифференциальных уравнений в матричном виде, т.е.

(6.1)

где — вектор переменных состояния размера n1, — вектор входного воздействия размера rx1, — матрицы чисел размера nn, nr, соответственно.


% Матрицы и берем из примера 2


% Создаем М-функцию под именем syst36.m

function ds36=syst36(t,x);

A=[-3,0,0;1,-2,0;0,4,-1]; % Матрица А размера 33

B=[10 0 0;0 0 0;0 0 0]; % Матрица B размера 33

u=[1;1;1]; % Входное воздействие размера 31

ds36=A*x+B*u; % Описание правой части матричного дифференциального уравнения (6.1)


% Создаем М-сценарий под именем ddd45_36

%Сценарий решения примера 3.6

T=[0 9];

x0=[0;0;0];

[t,x]=ode45('syst36',T,x0);

plot(t,x),grid,title('Система ур-й 3-го порядка'),

legend('X1','X2','X3')


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

с заданной точностью и с параметрами.


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


  1. Установление заданной относительной погрешности RelTol — ODESET(odeset).

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

Пример1. Уравнение Ван-дер-Поля с заданной относительной погрешностью.

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


% Сформируем М-функцию для описания правых частей дифференциальных уравнений

function f2=van33(t,X);

f2=[X(2);1*(1-X(1)^2)*X(2)-X(1)];

% Сохранить под именем van33


% Создадим М-сценарий решения на основе ode23 и с относительной погрешностью, равной

% d1=0.1 и d2=0.0001

T=[0 60];

X0=[3;0];

d1=odeset('RelTol',0.1);

[t1,X]=ode23('van33',T,X0,d1);

d2=odeset('RelTol',0.0001);

[t2,x]=ode23('van33',T,X0,d2);

plot(t1,X(:,1),'k--'),grid,,hold on,plot(t2,x(:,1),'r'),

legend('X1-0.1','x1-0.0001'),title('Ур-е Ван-дер-Поля')


% М-сценарий сохранить под именем ret71.

% Формат записи функции odeset включает строковый служебный символ RelTol и задаваемую %величину относительной погрешности (0.1 для d1 и 0.2 для d2).

% d1 и d2 подставляются в соответствующие решатели (ode23).

Задание к примеру 1:

  • выполнить с ode45, ode113;

  • изменить коэффициент в М-функции van33: 0.3, 2.3;

  • изменить для d1 относительную погрешность: 1, 0.5, 0.1, 0.01, 0.001, 0.0001 (для ode23).





Схожі:




База даних захищена авторським правом ©lib.exdat.com
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації