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)

Копирайт 2014 The MathWorks, Inc

Входные параметры

свернуть все

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

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

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

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

свернуть все

Большая матрица системы, возвращенной как символьная матрица. Количество строк является количеством уравнений в eqs, и количество столбцов является количеством переменных в vars.

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

Введенный в R2014b