Я хотел сделать то же самое с матрицей, а не с вектором v. Пока уравнение для него можно прочитать правильно, не зная, что этот символ представляет вектор или матрицу, NDSolve выводит свой символ из начального условия, однако в случай, когда размерность переменной является явной:
M'[t]==a[t]*IdentityMatrix[2]+M[t]
это не удалось.
«Обычным» решением является явное определение матрицы и ее выравнивание при выдаче в виде списка переменных.
Однако я пропустил эту проблему (и многие проблемы с синтаксисом релятексов), просто представляя избыточную переменную, единственной ролью которой является идентификационная матрица, но без представления списка (матрица - это 2-мерный список, поэтому Mathematica действует как при добавлении списков друг к другу , генерирующая ошибку):
eqn = {w'[t] == a[t]*identity[t] + w[t], a'[t] == 2, identity'[t] == {{0, 0}, {0, 0}}}
init={ w[0] == {{1, 2}, {2, 1}}, a[0] == 1, identity[0] == {{1, 0}, {0, 1}}}
sol = NDSolve[eqn&&init, {w, a, identity}, {t, 0, 1}]
Некоторые доказательства работы:
Plot[{Evaluate[w[t] /. sol][[1, 1, 1]], Evaluate[w[t] /. sol][[1, 1, 2]]}, {t, 0, 1}]