我试图在函数中实现以下双重求和:
f(x,y)=\sum_{k=0}^{S}\sum_{l=0}^{S}{a_{kl}x^ky^l}
。
这是我的第一次尝试:
function [ a ] = MyFun( S )
a=randi([0 9],S+1);
syms x y k l;
f(x,y)=symsum(symsum(a(k,l)*x^k*y^l,l,1,S+1),k,1,S+1);
f(1,2)
end
实际上,我的代码稍后会在循环中评估f
,但这似乎与此无关。尝试MyFun(3)
之类的内容会导致错误:
使用sym / subsindex时出错(第766行)索引或函数无效 定义。定义函数时,请确保参数为 符号变量和函数体是SYM表达式。 索引时,输入必须是数字,逻辑或“:”。
MyFun出错(第4行) F(X,Y)= symsum(symsum(一个(K,L)* X ^(K-1)* Y ^(L-1)中,l,1,S + 1)中,k,1,S + 1 );
如果a(k,l)*
从内部symsum
中删除,那么一切正常,所以我怀疑索引有问题。是否无法使用符号变量k
和l
作为索引?如果没有,我该如何解决?
答案 0 :(得分:0)
使用符号值索引矩阵似乎不起作用。作为替代方案,您可以使用元素乘法,如下所示:
function f = MyFun( S )
a=randi([0 9],S+1);
k = repmat((0:S)', 1, S+1);
l = repmat((0:S), S+1, 1);
syms x y;
f(x, y) = sum(sum(a .* x.^k .* y.^l));
end