Wolfram mathematica 当定义了mathematica的一部分时,如何让mathematica执行求和?

Wolfram mathematica 当定义了mathematica的一部分时,如何让mathematica执行求和?,wolfram-mathematica,sum,Wolfram Mathematica,Sum,我有一个这样的总数: Sum[1 + x[i], {i, 1, n}] Mathematica不再简化它了。我需要做什么才能将其转化为: n + Sum[x[i],{i,1,n}] AFAIKSum根本不会给出部分答案。但您始终可以手动或半自动拆分添加零件。以你为例, In[1]:= sigma + (x[i] - X)^2 // Expand Out[1]= sigma + X^2 - 2 X x[i] + x[i]^2 在不了解x[i]的情况下,我们无法处理包含x[i]的部分,因此我

我有一个这样的总数:

Sum[1 + x[i], {i, 1, n}]
Mathematica不再简化它了。我需要做什么才能将其转化为:

n + Sum[x[i],{i,1,n}]

AFAIK
Sum
根本不会给出部分答案。但您始终可以手动或半自动拆分添加零件。以你为例,

In[1]:= sigma + (x[i] - X)^2 // Expand

Out[1]= sigma + X^2 - 2 X x[i] + x[i]^2
在不了解
x[i]
的情况下,我们无法处理包含
x[i]
的部分,因此我们将其余部分拆分为:

In[2]:= Plus @@ Cases[%, e_ /; FreeQ[e, x[i]]]

Out[2]= sigma + X^2

In[3]:= Sum[%, {i, 1, n}]

Out[3]= n (sigma + X^2)


无关:最好不要使用以大写字母开头的符号,以避免与内置符号冲突
N
已经有了一个含义,您不应该将其用作变量。

一种快速而肮脏的方法是使用
线程
,例如

Thread[Sum[Expand[sigma + (x[i] - X)^2], {i, 1, n}], Plus, 1]

更简单的方法是

Total[Sum[#, {i, 1, n}] & /@ {sigma, x[i]}]

如果表达式较长,则无需手动拆分术语即可得到答案

expr = sigma + (x[i] + i)^2 + Cos[Sin[i - x[i]]];
Total[Sum[#, {i, 1, n}] & /@ Level[expr, {1}]]

这也可以通过规则以易于理解的方式完成:

sumofsumsrule = Sum[a_+b_,{i_,c_,d_}] :> Sum[a,{i,c,d}]+Sum[b,{i,c,d}];
expandsummandrule = Sum[a_,{i_,c_,d_}] :> Sum[Expand[a],{i,c,d}];
MyRules = {sumofsumsrule, expandsummandrule};
现在,如果你在胡闹,你可以用这个(这里有一些例子):

也许是这个

Distribute[Sum[1 + x[i], {i, 1, n}]]
返回:

n + Sum[x[i], {i, 1, n}]

我不相信它会自动做到这一点。也许如果您描述了为什么需要这个,或者发布了您的实际问题,那么我们可以帮助您,我不知道这个函数有什么问题
Sum[1,{i,1,N}]
的计算结果应该是
N
。在我的例子中,我想计算错误传播,所以具体的函数是:
Sum[sigma+(x[I]-x)^2,{I,1,N}]
。您使用的是
N
作为结束参数,这在Mathematica中有特殊意义吗?改为尝试小n。确定-将n固定为小。老实说,我现在很困惑,因为这种转换在纸上看起来很简单,在Mathematica中也很复杂。Mathematica虽然有很多能力,但它只是一个碰巧能做代数的巨型计算器。因此,虽然有些事情很简单,但另一些事情可能更复杂,往往令人疯狂。有时,试着把一个函数分成实部和虚部,特别是当它们有数值系数时,比如
1+I
。此外,不要急于简化,有时简化可能会导致遗漏某些内容,这就是为什么Mathematica在使用简化时非常保守的原因。
n + Sum[x[i], {i, 1, n}]