我对使用symsum函数的MATLAB中的总和有疑问。
我想实现这个函数,其中ti是数组中的第i个值:
t = {2,5,6,10}作为n = 4
的示例和U是一个符号变量。
在某种程度上可能吗?
syms i, u
t={2, 5, 6, 10}
symsum((u-i+1)*t{i},i,1,10);
然后,Matlab给了我错误:
Error using sym/subsindex (line 769)
Invalid indexing or function definition. When defining a function, ensure that the arguments are
symbolic variables and the body of the function is a SYM expression.
有人能帮助我吗? 提前致谢
修改:更改了示例公式
答案 0 :(得分:1)
您正在混合数值计算和符号计算。哪个也写在错误信息中:
函数参数必须是符号变量和函数体 必须是sym表达。
t
不是符号表达式,它是数字(它只包含数字)。解决方案是将您的方法与任一方向对齐。在这种情况下,它意味着数字版本,因为符号索引没有意义。
<强>数值强>
使用标准金额(这也是最快的):
i = 1:4
syms U0
t = [2, 5, 6, 10];
f(U0) = sum((U0-i+1).*t);