如何给最大值中的数组变量赋值?

问题描述

我有

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...