Wie kann ich einer Array-Variablen in Maxima einen Wert geben?

Aug 29 2020

ich habe

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

Jetzt möchte ich a [0] und a [1] durch einen komplexen Wert ersetzen:

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

Hilfe bitte!

Antworten

2 RobertDodier Sep 01 2020 at 04:08

Maximas Umgang mit Arrays ist etwas inkonsistent. Hier sind einige Ideen, um das gewünschte Ergebnis zu erzielen.

(Ich stelle fest, dass Ihre erste Eingabe %1stattdessen %ieinen typografischen Fehler enthält.)

(1) Ersetzen Sie jede tiefgestellte Variable durch einen Wert.

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

(2) Ersetzen Sie das Array durch einen Wert. Ich werde das verwenden ev, weil es den Anschein hat, dass substes einen Fehler enthält. Ich werde einen Fehlerbericht darüber einreichen.

Maxima verfügt nicht über eine integrierte Funktion zum Erstellen eines Arrays mit dem Inhalt einer Liste. Daher werde ich dafür eine Hilfsfunktion definieren 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]));
1 FrankPuck Aug 29 2020 at 00:52
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)))));