exponenta event banner

massMatrixForm

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

Описание

пример

[M,F] = massMatrixForm(eqs,vars) возвращает массовую матрицу M и правая часть уравнений F полулинейной системы дифференциальных алгебраических уравнений первого порядка (DAE). Алгебраические уравнения в eqs которые не содержат производных переменных в vars соответствуют пустым строкам матрицы масс M.

Массовая матрица M и правая часть уравнений F см. эту форму.

M (t, x (t)) (t) = F (t, x (t)).

Примеры

свернуть все

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

Создайте следующую систему дифференциальных алгебраических уравнений. Здесь функции x1(t) и x2(t) представляют переменные состояния системы. Система также содержит символические параметры. r и mи функция f(t,x1,x2). Задайте уравнения и переменные как два символьных вектора: уравнения как вектор символьных уравнений и переменные как вектор вызовов символьных функций.

syms x1(t) x2(t) f(t,x1,x2) r m
eqs = [m*x2(t)*diff(x1(t), t) + m*t*diff(x2(t), t) == f(t, x1(t), x2(t)),...
       x1(t)^2 + x2(t)^2 == r^2];
vars = [x1(t),x2(t)];

Найдите форму матрицы масс этой системы.

[M,F] = massMatrixForm(eqs, vars)
M = 

(mx2(t)mt00)[m*x2(t), m*t; sym(0), sym(0)]

F = 

(f(t,x1(t),x2(t))r2-x1(t)2-x2(t)2)[f(t, x1(t), x2(t)); r^2 - x1(t)^2 - x2(t)^2]

Решить эту систему с помощью числового решателя ode15s. Перед использованием ode15s, присвойте символическим параметрам системы следующие значения: m = 100, r = 1, f(t,x1,x2) = t + x1*x2. Также замените переменные состояния x1(t), x2(t) по переменным Y1, Y2 приемлемо для matlabFunction.

syms Y1 Y2
M = subs(M, [vars, m, r, f], [Y1, Y2, 100, 1, @(t,x1,x2) t + x1*x2]);
F = subs(F, [vars, m, r, f], [Y1, Y2, 100, 1, @(t,x1,x2) t + x1*x2]);

Создайте следующие дескрипторы функций MM и FF. Эти дескрипторы функций можно использовать в качестве входных аргументов для odeset и ode15s. Эти функции требуют указания переменных состояния в виде векторов столбцов.

MM = matlabFunction(M, 'vars', {t, [Y1; Y2]});
FF = matlabFunction(F, 'vars', {t, [Y1; Y2]});

Решить систему с помощью ode15s.

opt = odeset('Mass', MM, 'InitialSlope', [0.005;0]);
ode15s(FF, [0,1], [0.5; 0.5*sqrt(3)], opt)

Figure contains an axes. The axes contains 4 objects of type line.

Авторское право 2014 The MathWorks, Inc

Входные аргументы

свернуть все

Система полулинейных дисковых полостей первого порядка, заданная как вектор символических уравнений или выражений.

Переменные состояния, определяемые как вектор символьных функций или вызовов функций, например x(t).

Пример: [x(t),y(t)] или [x(t);y(t)]

Выходные аргументы

свернуть все

Массовая матрица системы, возвращаемая как символическая матрица. Число строк - это количество уравнений в eqs, а число столбцов - это количество переменных в vars.

Правые части уравнений, возвращаемые в виде столбцового вектора символьных выражений. Число элементов в этом векторе равно числу уравнений в eqs.

Представлен в R2014b