如何给最大值的数组变量一个值



我有

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)))));

相关内容

  • 没有找到相关文章

最新更新