Уменьшите порядок дифференциальных уравнений до первого порядка
Поддержка вектора символов или строковых входов будет удалена в следующем релизе. Вместо этого используйте syms объявить переменные и заменить такие входы, как odeToVectorField('D2y = x') с syms y(x), odeToVectorField(diff(y,x,2) == x).
преобразует дифференциальные уравнения более высокого порядка V = odeToVectorField(eqn1,...,eqnN)eqn1,...,eqnN в систему дифференциальных уравнений первого порядка, возвращаемую как символьный вектор.
[ преобразует V,S] =
odeToVectorField(eqn1,...,eqnN)eqn1,...,eqnN и возвращает два символьных вектора. Первый вектор V совпадает с выходами предыдущего синтаксиса. Второй вектор S показаны замены, сделанные для получения V.
Чтобы решить получившуюся систему дифференциальных уравнений первого порядка, сгенерируйте MATLAB® указатель на функцию с использованием matlabFunction с V как вход. Затем используйте сгенерированный указатель на функцию MATLAB в качестве входов для численного решателя MATLAB ode23 или ode45.
odeToVectorField может преобразовывать только квазилинейные дифференциальные уравнения. То есть производные высшего порядка должны появиться линейно. Для примера, odeToVectorField можно преобразовать y * y ″ (t) = - t2 потому что его можно переписать как y ″ (t) = - t2/ y. Однако он не может преобразовать y ″ (t)2 = – t2 или sin (y ″ (t)) = - t2.
Для преобразования дифференциального уравнения n-го порядка
в систему дифференциальных уравнений первого порядка, odetovectorfield делает эти замены.
Используя новые переменные, он переписывает уравнение как систему n дифференциальных уравнений первого порядка:
odeToVectorField возвращает правые стороны этих уравнений как элементы вектора V и замены, сделанные в качестве второго выхода S.
dsolve | matlabFunction | ode23 | ode45