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