exponenta event banner

daeFunction

Преобразовать систему дифференциальных алгебраических уравнений в дескриптор функции MATLAB, подходящий для ode15i

Описание

пример

f = daeFunction(eqs,vars) преобразует систему символьных дифференциальных алгебраических уравнений первого порядка (DAE) в дескриптор функции MATLAB ®, приемлемый в качестве входного аргумента для числового решателя MATLAB DAEode15i.

пример

f = daeFunction(eqs,vars,p1,...,pN) позволяет указать символические параметры системы как p1,...,pN.

пример

f = daeFunction(___,Name,Value) использует дополнительные параметры, указанные одним или несколькими Name,Value аргументы пары.

Примеры

свернуть все

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

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

Использовать daeFunction для создания дескриптора функции MATLAB ®f в зависимости от переменных x1(t), x2(t) и о параметрах a, b, r(t).

f = daeFunction(eqs,vars,a,b,r(t))
f = function_handle with value:
    @(t,in2,in3,param1,param2,param3)[in3(1,:)-param1.*in2(1,:)-param2.*in2(2,:).^2;-param3.^2+in2(1,:).^2+in2(2,:).^2]

Укажите значения параметров и создайте дескриптор сокращенной функции F следующим образом.

a = -0.6;
b = -0.1;
r = @(t) cos(t)/(1 + t^2);
F = @(t,Y,YP) f(t,Y,YP,a,b,r(t));

Укажите согласованные начальные условия для системы дисковой полки.

t0 = 0;
y0 = [-r(t0)*sin(0.1); r(t0)*cos(0.1)];
yp0= [a*y0(1) + b*y0(2)^2; 1.234];

Теперь используйте ode15i для решения системы уравнений.

ode15i(F,[t0,1],y0,yp0)

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

Запишите созданный дескриптор функции в файл, указав File вариант. При записи в файл daeFunction оптимизирует код, используя промежуточные переменные с именем t0, t1, .… Включить комментарии в файл с помощью Comments вариант.

Запишите созданный дескриптор функции в файл myfile.

syms x1(t) x2(t) a b r(t)
eqs = [diff(x1(t),t) == a*x1(t) + b*x2(t)^2,...
       x1(t)^2 + x2(t)^2 == r(t)^2];
vars = [x1(t), x2(t)];
daeFunction(eqs, vars, a, b, r(t), 'File', 'myfile')
function eqs = myfile(t,in2,in3,param1,param2,param3)
%MYFILE
%    EQS = MYFILE(T,IN2,IN3,PARAM1,PARAM2,PARAM3)

%    This function was generated by the Symbolic Math Toolbox version 7.3.
%    01-Jan-2017 00:00:00

YP1 = in3(1,:);
x1 = in2(1,:);
x2 = in2(2,:);
t2 = x2.^2;
eqs = [YP1-param2.*t2-param1.*x1;t2-param3.^2+x1.^2];

Включить комментарий Version: 1.1.

daeFunction(eqs, vars, a, b, r(t), 'File', 'myfile',...
                    'Comments','Version: 1.1');
function eqs = myfile(t,in2,in3,param4,param5,param6)
...
%Version: 1.1
YP3 = in3(1,:);
...

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

свернуть все

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

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

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

Параметры системы, определенные как символьные переменные, функции или вызовы функций, такие как f(t). Можно также указать параметры системы как вектор или матрицу символьных переменных, функций или вызовов функций. Если eqs содержит символические параметры, отличные от переменных, указанных в vars, необходимо указать эти дополнительные параметры как p1,...,pN.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: daeFunction(eqns,vars,'File','myfile')

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

Путь к файлу, содержащему сгенерированный код, указанный как символьный вектор. Созданный файл принимает аргументы типа double, и может использоваться без символьных математических Toolbox™. Если значение является пустым символьным вектором, odeFunction генерирует анонимную функцию. Если символьный вектор не заканчивается на .m, функция добавляется .m.

По умолчанию daeFunction с File создает файл, содержащий оптимизированный код. Оптимизированное означает, что промежуточные переменные генерируются автоматически для упрощения или ускорения кода. MATLAB генерирует промежуточные переменные в виде строчной буквы t за которым следует, например, автоматически сгенерированный номер t32. Чтобы отключить оптимизацию кода, используйте Optimize аргумент.

Флаг, препятствующий оптимизации кода, записанного в файл функции, указанный как false или true.

По умолчанию daeFunction с File создает файл, содержащий оптимизированный код. Оптимизированное означает, что промежуточные переменные генерируются автоматически для упрощения или ускорения кода. MATLAB генерирует промежуточные переменные в виде строчной буквы t за которым следует, например, автоматически сгенерированный номер t32.

daeFunction без File аргумент (или путь к файлу, заданный пустым символьным вектором) создает дескриптор функции. В этом случае код не оптимизирован. При попытке принудительно оптимизировать код с помощью параметра Optimize кому true, то daeFunction выдает ошибку.

Флаг, переключающийся между формированием разреженной и плотной матрицы, указанный как true или false. При указании 'Sparse',true, сгенерированная функция представляет символьные матрицы с помощью разреженных цифровых матриц. Использовать 'Sparse',true при преобразовании символьных матриц, содержащих множество нулевых элементов. Часто операции с разреженными матрицами более эффективны, чем те же операции с плотными матрицами.

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

свернуть все

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

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