我有以下千里马代码:
m:sum(x[i],i,1,N)/N;
Run Code Online (Sandbox Code Playgroud)
然后我想计算 $m^2$。
m2:m^2, sumexpand;
Run Code Online (Sandbox Code Playgroud)
然后我得到双重求和:
sum(sum(x[i1]*x[i2],i1,1,N),i2,1,N)/N^2
Run Code Online (Sandbox Code Playgroud)
我想要实现的是将其扩展为两个总和。
第一个是sum(x[i]^2,i,1,N)
,第二个是rest over non-equal indices
。我该怎么做?我应该如何使用 的任意权力来做到这一点m
?
sum
默认情况下未声明为线性;您可以将其声明为线性并重新简化。请注意,要获得预期的效果,您必须声明 的名词形式sum
。
(%i1) m:sum(x[i],i,1,N)/N;
N
====
\
> x
/ i
====
i = 1
(%o1) --------
N
(%i2) m2:m^2, sumexpand;
N N
==== ====
\ \
> > x x
/ / i1 i2
==== ====
i1 = 1 i2 = 1
(%o2) ---------------------
2
N
(%i3) declare (nounify(sum), linear);
(%o3) done
(%i4) ''%o2;
N N
==== ====
\ \
( > x ) > x
/ i1 / i2
==== ====
i1 = 1 i2 = 1
(%o4) -----------------------
2
N
Run Code Online (Sandbox Code Playgroud)