8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 110 111 112 113 114 115 116 ... 365

Yl = Z (:,1); % вектор значений компонент дляt = tau(1)

Y2 = Z [:,2); % вектор значений компонент дляt = tau(2)

Y3 = Z(:,3); % вектор значений компонент дляt = tau{3) F = [pi/3*(y<2) + Y2U) + Y3(2)) -pi/3*(Y(l) + Y3(l> +Y1<2>)];

Перейдем теперь к написанию функции ddenistory с предысторией решения. В нашем случае она простая, ее текст приведен в листинге 6.27.

Листинг 6.27. Файл-функция ddenistory предыстории решения

function S = ddenistory(t)

о вычисление вектора компонент предыстории решения S = [sin(pi*t) cos(pi*t)];

Осталось вызвать солвер dde23, графически отобразить решение и проанализировать его. В отличие от солверов для решения систем обыкновенных дифференциальных уравнений, солвер dde23 возвращает решение только в одном виде — в структуре:

» sol = dde23(@ddefun, [0.5 1.5 2], Sddehistory, [0 4]); Содержимое структуры sol следующее:

□sol.x— вектор-строка со значениями независимой переменной (, для которых найдено приближенное решение;

□sol.у— массив со значениями у(/), каждая строка которого содержит соответствующую компоненту решения;

□sol. yp — массив со значениями у(/), каждая строка которого содержит первую производную от соответствующей компоненты решения.

При анализе решения примите во внимание, что точным решением модельной задачи являются функции у, (/) = sin7tr и y2(/) = cosTOc. Постройте графики каждой компоненты точного и приближенного решения на своей паре осей в одном графическом окне и сравните их. Имеет смысл написать файл-функцию, включив в нее и вызов солвера, и все вспомогательные функции (листинг 6.28).

Листинг 6.28. Файл-функция ddetest

function ddetest

% вызов солвера dde23


sol = dde23(@ddefun, [0.5 1.5 2],Gddehistory, [0 4]); figure

subplot(2, 1, 1)

* график приближенного значения первой компоненты

plot(sol.х, sol.y(l, :>, о)

% задание первой компоненты точного решения

yl = inline(sin(pi*t));

hold on

% построение графика первой компоненты точного значения

fplot(yl, [0,4], г)

title(Первая компонента решения)

legendприближенное значение,точное значение)

subplot(2, 1, 2)

% график приближенного значения второй компоненты

plottsol.x, sol.yd, :), +) % задание первой компоненты точного решения у2 = inline(cos(pi*t)); hold on

% построение графика второй компоненты точного значения

fplot(у2, [0, 4], г)

title[Вторая компонента решения)

legend(1 приближенное значение, точное значение)

%

function S = ddehistory(t)

% вычисление вектора компонент предыстроии решения S = [sin(pi*t)

COS(pi*t)];

%

function F = ddefun(t, y, Z)

% Вычисление правой части системы запаздывающих дифференц. уравнений % t - время

% у - вектор со значениями компонент у(1), у(2),... , у(к) % Z - матрица со значениями компонент в момент запаздываний:

%Z(:, j) = y(t - tau(j)), j = 1, 2.....k

Yl = Z (:, 1) ,- % вектор значений компонент для t = tau (1) Y2 = Z(:, 2); % вектор значений компонент для t = tau(2) Y3 = Z{:, 3); % вектор значений компонент для t = tau(3) F = [pi/3*(y(2) + Y2(l) + Y3<2)) -pi/3*(y(l) + Y3(l) + Yl(2))];


После вызова ddetest получаются графики, приведенные на рис. 6.17. Они свидетельствуют о правильно найденном решении.

05

05

Первая компонента решения

0 -

О приближенное значение -точное значение

-1 i

05 1 15 2 2.5 3 3.5 4 Вторая компонента решения

X

1

т приближенное значение -точное значение

05 1 16

2.5

3.5

Рис. 6.17. Решение дифференциального уравнения (6.9) с запаздывающим аргументом

Примечание

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

Обсудим теперь задание параметров вычислительного процесса. Управляющая структура формируется функцией ddeset, использование которой аналогично odeset при решении задачи Коши для систем обыкновенных дифференциальных уравнений. Солвер dde23 позволяет задавать относительную и абсолютную точность (по умолчанию 1(Н и 10 6 соответственно), способ контроля точности — по норме или покомпонентно, начальный и максимальный шаг, например:

» options = ddeset(RelTol, le-5, AbsTol, le-8)

» sol = dde23{@ddefun, [0.5 1.5 2],©ddenistory, [0 4], options)



0 ... 110 111 112 113 114 115 116 ... 365