Arrays &引用;MuPAD命令中出错:DOUBLE无法将输入表达式转换为双数组";

Arrays &引用;MuPAD命令中出错:DOUBLE无法将输入表达式转换为双数组";,arrays,matlab,mupad,Arrays,Matlab,Mupad,我试图找到这个简单的for循环问题的答案,但找不到任何关于它的教程。我试图计算列向量的特定条目,但错误“MuPAD命令中的错误:DOUBLE无法将输入表达式转换为DOUBLE数组”不断出现。我很确定for循环中的两个条目都应该作为u1,…,u20的标量函数出现,但我肯定做错了什么。我的脚本如下: U = sym('u', [21 1]); P(1,1) = 1; Q(1,1) = 0; for k = 1:20 P(k+1,1) = 1/20*(-.3*P(k,1) +.65*Q(k,1

我试图找到这个简单的for循环问题的答案,但找不到任何关于它的教程。我试图计算列向量的特定条目,但错误“MuPAD命令中的错误:DOUBLE无法将输入表达式转换为DOUBLE数组”不断出现。我很确定for循环中的两个条目都应该作为u1,…,u20的标量函数出现,但我肯定做错了什么。我的脚本如下:

U = sym('u', [21 1]);
P(1,1) = 1;
Q(1,1) = 0;
for k = 1:20
    P(k+1,1) = 1/20*(-.3*P(k,1) +.65*Q(k,1)+U(k,1))+P(k,1);
    Q(k+1,1) = 1/20*(-.65*Q(k,1) + .3*P(k,1)-U(k,1))+Q(k,1);
end
P(21,1)
Q(21, 1)

任何帮助都将不胜感激。

正如大卫所建议的,也许:

U = sym('u', [21 1]);
syms P Q
for k = 1:20
    P(k+1,1) = 1/20*(-.3*P(k,1) +.65*Q(k,1)+U(k,1))+P(k,1);
    Q(k+1,1) = 1/20*(-.65*Q(k,1) + .3*P(k,1)-U(k,1))+Q(k,1);
end
P(21,1)
Q(21, 1)

在其他地方看到了关于堆栈溢出的类似解释

尝试将
p
Q
初始化为符号对象。由于
p
Q
都是向量,因此最好预先分配它们:
p=sym(one(21,1))
Q=sym(零(21,1))