问题描述
expand(product(1-P*a[i],i,1));
现在我要用复数值代替a [0]和a [1]:
subst(array_make([(-%i)-1,%i-1]),a,expand(product(1-P*a[i],1)));
请帮助!
解决方法
Maxima对数组的处理有些不一致。这里有一些想法,以获得想要的结果。
(我注意到您的第一个输入有%1
而不是%i
,我想这是一个印刷错误。)
(1)为每个下标变量替换一个值。
myexpr: expand (product (1 - p*a[i],i,1));
subst ([a[0] = (-%i)-1,a[1] = %i - 1],myexpr);
(2)替换数组的值。我将使用ev
来执行此操作,因为看来subst
中存在错误;我将提交有关此问题的错误报告。
Maxima没有内置函数来创建具有列表内容的数组,因此我将为此定义一个辅助函数array_from
。
myexpr: expand (product (1 - p*a[i],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),1)))));