我怎样才能给最大值中的数组变量一个值?

how can I give an array variable in maxima a value?

我有

expand(product(1-p*a[i], i, 0, 1));

现在我想用一个复数值代替 a[0] 和 a[1]:

subst(array_make([(-%i)-1,%i-1]), a, expand(product(1-p*a[i], i, 0, 1)));

请帮忙!

expand(subst(1.0*%i-1.0, a(1), subst(-1.0*%i-1.0, a(0), expand(product(1-s/a(i), i, 0, 1)))));

Maxima 对数组的处理有些不一致。这里有一些想法来获得你想要的结果。

(我注意到您的第一个输入有 %1 而不是 %i,我猜这是一个印刷错误。)

(1) 为每个下标变量代入一个值。

myexpr: expand (product (1 - p*a[i], i, 0, 1));
subst ([a[0] = (-%i)-1, a[1] = %i - 1], myexpr);

(2) 用一个值代替数组。我将使用 ev 来做到这一点,因为 subst 似乎有一个错误;我会就此提交错误报告。

Maxima 没有 built-in 函数来创建包含列表内容的数组,因此我将为此定义一个辅助函数 array_from

myexpr: expand (product (1 - p*a[i], i, 0, 1));
array_from(l) := fillarray (make_array (any, length(l)), l);
ev(myexpr, a = array_from([(-%i)-1, %i - 1]));