2010-09-06 12 views

Répondre

1

Vous pouvez probablement écrire votre propre telle commande en utilisant package this.

0

Ceci est une vieille question, mais apparu dans mes recherches pour ce problème, donc j'ajoute une réponse ici.

J'ai utilisé la fonction solve de maxima. Wrangling l'entrée/sortie à/de maxima est un peu un défi, mais peut être fait.

  1. préparer le système d'équations sous la forme d'une liste séparée par des virgules - par exemple, EQs="C[1]+C[2]=1,C[1]-C[2]=2". Je voulais une solution pour un nombre inconnu de variables, donc j'ai utilisé C[n], mais vous pouvez utiliser des noms de variables.
  2. préparer une liste de variables que vous souhaitez résoudre pour - EQ_VARS="C[1],C[2]"
  3. Maxima fera écho à toutes les entrées, wrap utilisation de la ligne, et le retour d'une solution sous la forme [C[1]=...,C[2]=..]. Nous devons résoudre tous ces problèmes.

Pris ensemble, cela devient

OUT_VALS=(\ 
    $(maxima --very-quiet \ 
     --batch-string="display2d:false\$linel:9999\$print(map(rhs,float(solve([$EQs],[$EQ_VARS]))[1]))\$" \ 
     | tail -n 1 \ 
     | tr -c '0-9-.e' ' ')) 

qui placera les valeurs de solution dans le tableau $OUT_VALS. Notez que ceci ne gère correctement cette sortie Maxima que si votre problème est correctement contraint - si vous avez zéro, ou plus d'une solution, la sortie ne sera pas analysée correctement.