Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Численные Методы (часть 3).doc
Скачиваний:
10
Добавлен:
14.11.2019
Размер:
378.88 Кб
Скачать

Приведем примеры программ на matlab для расчета правых частей систем оду в скалярной и векторно-матричной формах

Файл dX5.m:

function dZ=dX5 (T,Z);

%Система из 3 уравнений, вектор производных столбец.

Tau=[0 0.1 1];

K=0.2; Td=5;

dx1=K*(1-Z(3));

dx2=(Td*dx1+Z(1)-Z(2))/Tau(2);

dx3=(Z(2)-Z(3))/Tau(3);

dZ=[dx1;dx2;dx3];

Файл AXB.m:

function dZ=AXB(T,Z)

%Система из 3 уравнений, вектор производных столбец.

%Пример составления матриц А, В и С

K=0.5; Tau2=0.5; Tau3=0.5; X0=1;

A=[0 0 -K;1/Tau2 -1/Tau2 0;0 1/Tau3 -1/Tau3];

B=[K 0 0]';

C=[0 0 1];

dZ=[A*Z+B*X0];

Y=C*Z;

4.9. Краткий обзор методов интегрирования систем ОДУ с помощью MATLAB.

Для решения систем ОДУ в MATLAB имеется 7 солверов: ode45, ode23, ode113,

оde15s, ode23s, ode23t, ode23tb.

ode45 использует метод Рунге-Кутта 4-го порядка;

ode23 использует метод Рунге-Кутта 2-го порядка;

ode113 использует метод Адамса переменного порядка;

Добавление s означает, что метод можно использовать для жестких систем.

ode15s использует многошаговый метод Гира с изменением порядка;

ode23s использует одношаговый метод Розенброка 2-го порядка;

ode23t использует неявный метод 2-го порядка с интерполяцией. Его можно использовать для умеренно жестких задач.

оde23tb использует неявный метод 2-го порядка с дифференцированием назад. Он может быть эффективнее, чем оde15s.

Обращение к любой стандартной функции одинаково, например:

[t,x]=ode45(fun, interval_t, x0) , где

t – вектор-столбец (время),

x – вектор-столбец интегрируемых переменных,

fun – вектор- столбец производных (правые части дифференциальных уравнений),

interval­_t – интервал времени, например, от 0 до 10 сек [0,10],

x0 – начальные значения переменных (вектор-столбец), например, нулевые [0;0;0].

Для решения большинства задач ТАУ солвер ode45 дает хорошие результаты. Солвер

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

Для жестких систем наиболее подходит солвер ode15s. Если требования к точности слабее следует применять ode23s.

По умолчанию для всех солверов относительная точность , а абсолютная .

Все солверы допускают использование параметров для контроля и управления вычислениями. Приведем некоторые из них.

Таблица 4.1.

Назначение параметра

Имя параметра

Контроль точности вычислений

RelTol, AbsTol, NormControl

Шаг интегрирования

InitialStep, MaxStep

Выходные данные

OutputFcp, OutputSel, Refine, Stats

Якобиан

Jacobian, JPattern, Vectorized

События

Events

Значение параметров задается в управляющей структуре, создаваемой функцией odeset: оptions = odeset(…, “Имя параметра“, Значение,… ). Например:

options = odeset(‘RelTol’,1.0e-04);

[t,x] = ode45(‘AXB’ ,[0 10],[ 0 0 0],options)

Если заданы выходные параметры, то они выдаются на экран. Если они не заданы, то на экран выдаются графики результатов расчета.

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