我有
expand(product(1-p*a[i], i, 0, 1));
现在我想用一个复数值来代替[0]和[1]:
subst(array_make([(-%i)-1,%i-1]), a, expand(product(1-p*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
中似乎有一个bug;我会为此提交一份错误报告。
Maxima没有内置函数来创建一个包含列表内容的数组,所以我将为此定义一个辅助函数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]));
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)))));