Math Maxima:如何计算出一个有限和?
这个问题是关于最大输出的人性化表示 简言之,我该怎么做Math Maxima:如何计算出一个有限和?,math,symbolic-math,maxima,Math,Symbolic Math,Maxima,这个问题是关于最大输出的人性化表示 简言之,我该怎么做 b*d4 + b*d3 + b*d2 + b*d1 + a*sin(c4 + alpha) + a*sin(c3 + alpha) + a*sin(c2 + alpha) + a*sin(c1 + alpha) 像 b*sum_{i=1}^{4} d_i + a*sum_{j=1}^{4}sin(c_i + \alpha) 其中sum_{*}^{*}*是一个求和符号和一个带下标的表达式 或更深入的,如何在此处正确建模有限的项集 考虑一组
b*d4 + b*d3 + b*d2 + b*d1 + a*sin(c4 + alpha) + a*sin(c3 + alpha) + a*sin(c2 + alpha) + a*sin(c1 + alpha)
像
b*sum_{i=1}^{4} d_i + a*sum_{j=1}^{4}sin(c_i + \alpha)
其中sum_{*}^{*}*是一个求和符号和一个带下标的表达式
或更深入的,如何在此处正确建模有限的项集
考虑一组有限的实体$x_i$(这里试着说tex),它们的编号从1到n,其中n是已知的。让函数$F$依赖于这些实体的几个特征$c_ji=c_j(x_i),j=1..k$(k-也已知),因此$F=F(c_11,…,c_kn)$
现在,当我尝试在Maxima中实现它并用它做一些事情时,它会产生各种类型的和和和积,其中编号的项表示为$c_1*a+c_2*a+c_3*a+d_1*b+d_2*b+d_3*b+d_4*b$,你可以在纸上写为$a*\sum_{I=1}{c_I+b*sum{I=1}{4}I}d
那么我怎样才能让Maxima做这种表达式收缩呢
更具体地说,下面是一个实际的代码示例:
(最大输出标记为“>>>”)
总之,这里有三个问题:
提前谢谢。这里有一个方法可以实现我认为你想要的
(%i1) n: 4 $
(%i2) F(i) := a*sin(alpha + c[i]) + b*d[i];
(%o2) F(i) := a sin(alpha + c ) + b d
i i
(%i3) 'sum(F(i), i,1,4);
4
====
\
(%o3) > (a sin(c + alpha) + b d )
/ i i
====
i = 1
(%i4) declare (nounify(sum), linear);
(%o4) done
(%i5) 'sum(F(i), i,1,4);
4 4
==== ====
\ \
(%o5) a > sin(c + alpha) + b > d
/ i / i
==== ====
i = 1 i = 1
(%i6)
这里最重要的是,我已经将我们称之为“c sub I”和“d sub I”分别写成c[I]
和d[I]
。这些是名为c
和d
的索引变量,i
是索引。没有必要实际存在名为c
或d
的数组或列表,i
可能有也可能没有特定的值
我已经编写了F
作为一个普通函数。我通过concat
避免了变量名的构造,并避免了将这些名称替换为表达式。我想强调的是,这种行动几乎肯定不是最好的方式
在%i3
中,请注意,我将求和写成了'sum(…)
,这使得它成为了一个所谓的名词表达式,这意味着它是以符号形式维护的,而不是经过计算的
默认情况下,总和不被视为线性,因此在%i4
中,我将总和声明为线性,以便%o5
中的结果与预期一致
Maxima没有办法将诸如
a1+a2+a3这样的表达式收集回符号求和,但也许您不需要这样的运算。谢谢您的回答。顺便问一下,我如何计算实际值列表c_I
和d_I
的总和?更棘手的是,当实际值仅为所有索引变量的子集所知时?比如,如果我们在1..4
中有(a_i+b_i)^2
之和,但我们只知道a[i]
在[4,5,6,7]
中,而b[i]
未知,那么预期结果将是126+sum(b_i^2)+8*b_1+…
。不确定这是否可能也不是必需的(也许在这种情况下,我们人类应该介入并做这件事),但好奇Maxima是否提供了这样做的方法;总和((a[i]+b[i])^2,i,1,4)代码>产生(b[4]+7)^2+(b[3]+6)^2+(b[2]+5)^2+(b[1]+4)^2
。由此,展开(%)代码>产生b[4]^2+14*b[4]+b[3]^2+12*b[3]+b[2]^2+10*b[2]+b[1]^2+8*b[1]+126
。所以a有值和b没有值没有问题,尽管结果的形式有些混乱。一般来说,Maxima对某些变量有值而某些变量没有值的表达式感到满意。
(%i1) n: 4 $
(%i2) F(i) := a*sin(alpha + c[i]) + b*d[i];
(%o2) F(i) := a sin(alpha + c ) + b d
i i
(%i3) 'sum(F(i), i,1,4);
4
====
\
(%o3) > (a sin(c + alpha) + b d )
/ i i
====
i = 1
(%i4) declare (nounify(sum), linear);
(%o4) done
(%i5) 'sum(F(i), i,1,4);
4 4
==== ====
\ \
(%o5) a > sin(c + alpha) + b > d
/ i / i
==== ====
i = 1 i = 1
(%i6)