Как заполнить матрицу символическими выражениями в Matlab? - PullRequest
0 голосов
/ 26 января 2019

Я хочу заполнить строки матрицы символическими выражениями, используя цикл for.Код приведен ниже.

for r=1:N
%dL/dfidot
frst(r)=diff(L,fidot(r));
%d/dt*dL/dfidot
dfrst(r)=diff(frst(r),fi(r))*fidot(r)+diff(frst(r),fidot(r))*fiddot(r);
%dL/dfi
scnd(r)=diff(L,fi(r));
%EQ of Motion 
EqofMotion(r)=dfrst(r)-scnd(r)==0;
acc(r)=solve(EqofMotion(r),fiddot(r));
C=zeros(N,1);
C(r,1)=acc(r);
end

в соответствии с символьным массивом, C - матрица.Идея состоит в том, чтобы заполнить r-ю строку матрицы C с помощью acc (r) с помощью цикла.Программа выдает мне сообщение об ошибке:

The following error occurred converting from sym to double:
Error using symengine (line 58)
DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use VPA.

Error in Trying (line 56)
C(r,1)=acc(r);

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 26 января 2019

Вы пытаетесь присвоить символическое значение элементу двойного массива.Это незаконно, поскольку символические объекты не могут быть неявно преобразованы в double.Чтобы решить эту проблему, вы можете сделать массив C массивом символических объектов:

C = sym(zeros(N,1)); % now C is an array containing the symbolic expressions 'zero' 
C(r,1) = acc(r); 
...