如何在 matlab 中用它的时间元素函数来表示一个向量
How to symbolize a vector with its elements function of time in matlab
我正在尝试以这种形式求解一些微分方程
dU/dt=A*U,其中 U 是 N 个元素的向量,N 是用户的输入
所以U=[u1(t);u2(t)...uN(t)],A是NxN矩阵
我想要一个向量 (U),其元素 u1、u2..uN 是时间的函数
我可以这样定义U
U=sym('u',[N 1]);
这是输出:
u1
u2
.
.
uN
如果我写这个
eqn= diff(U)==A*U;
U=dsolve(eqn);
这是我得到的错误
{Error using symengine (line 58)
Could not extract differential variables to solve for. Use 'solve' or
'vpasolve' to compute the solutions of non-differential equations.
Error in mupadengine/feval (line 155)
symengine('error',S(8:find(S=='[',1)-2));
Error in dsolve>mupadDsolve (line 325)
T = feval(symengine,'symobj::dsolve',sys,x,options);
Error in dsolve (line 186)
sol = mupadDsolve(args, options);
}
他将 U 向量的元素视为一个变量,而不是时间的函数
我该怎么办?
您可以使用 mat2str
和正则表达式来创建字符串 '[u1(t);u2(t); ... ]'
:
str= mat2str((1:N).'); % create the string '[1;2;...;N]'
% replace the digit sequences with 'u<digit sequence>(t)'
str= regexprep(str,'(\d)+','u$&(t)');
u= sym(str);
我正在尝试以这种形式求解一些微分方程
dU/dt=A*U,其中 U 是 N 个元素的向量,N 是用户的输入
所以U=[u1(t);u2(t)...uN(t)],A是NxN矩阵
我想要一个向量 (U),其元素 u1、u2..uN 是时间的函数
我可以这样定义U
U=sym('u',[N 1]);
这是输出:
u1
u2
.
.
uN
如果我写这个
eqn= diff(U)==A*U;
U=dsolve(eqn);
这是我得到的错误
{Error using symengine (line 58)
Could not extract differential variables to solve for. Use 'solve' or
'vpasolve' to compute the solutions of non-differential equations.
Error in mupadengine/feval (line 155)
symengine('error',S(8:find(S=='[',1)-2));
Error in dsolve>mupadDsolve (line 325)
T = feval(symengine,'symobj::dsolve',sys,x,options);
Error in dsolve (line 186)
sol = mupadDsolve(args, options);
}
他将 U 向量的元素视为一个变量,而不是时间的函数
我该怎么办?
您可以使用 mat2str
和正则表达式来创建字符串 '[u1(t);u2(t); ... ]'
:
str= mat2str((1:N).'); % create the string '[1;2;...;N]'
% replace the digit sequences with 'u<digit sequence>(t)'
str= regexprep(str,'(\d)+','u$&(t)');
u= sym(str);