massMatrixForm

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

Описание

пример

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

Область большой матрицы M и правую сторону уравнений F см. эту форму.

M(t,x(t))x˙(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