Уменьшите порядок дифференциальных уравнений до первого порядка
Поддержка вектора символов или строковых входов будет удалена в следующем релизе. Вместо этого используйте 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