2016-08-08 8 views
2

Ich habe Maple V5 in 92 verwendet, um einige Funktionen zu schreiben, um einige Probleme mit Groebner zu lösen. Seitdem habe ich Maple für einfache Berechnungen verwendet und deshalb sind meine Programmierkenntnisse längst vergessen. Die meisten der Funktionen, die ich zu der Zeit geschrieben und benutzt habe, funktionieren nicht mehr und ich versuche, sie auf die Maple Version zu aktualisieren, die ich derzeit habe, nämlich Maple 18.Maple V5 zu Maple 18 - Wie erstellt man eine Liste von Variablen?

Fragen: a) Gibt es eine automatisches Tool zum Aktualisieren alter Maple-Funktionen? b) Befehle wie vars := [x.(1 .. n)] funktionieren zwar, funktionieren aber nicht mehr. Die Idee war, eine Liste mit x1, x2, .. xn zu erstellen. Ich weiß, dass seq(x[i], i = 1 .. 5) eine Liste mit x_1, x_2, ... erstellen würde, aber es ist nicht genau dasselbe. c) Tipps und Vorschläge, wie Sie den Prozess der Aktualisierung glätten können, sind sehr willkommen.

Dank

Ed

Antwort

1

Es gab einige Änderungen an der Sprache zwischen Maple V Release 5 und Maple 6 und den Ersatz von . mit || war einer von denen.

Maple 6 (und 7, wenn ich mich erinnere) geliefert mit einer zusätzlichen binären updtsrc, die auf Maple-Quelldateien wirken und den Text ersetzen könnte. Zum Beispiel, wenn ich mit einer Klartextdatei starten var.mpl nur diese enthält,

vars := [x.(1 .. n)]; 

und dann den Shell-Befehl anwenden updtsrc var.mpl ich diese Ausgabe erhalten,

`.` has been replaced by `||`; see ?|| 
vars := [x||(1 .. n)]; 

ich, dass auf Ubuntu 14.04.4 LTS tat Linux, unter Verwendung der (redhat) updtsrc Binärdatei heruntergeladen von der HTTP-Link für Linux auf this Seite.

Wenn sich Ihre Maple V-Quellen in einer .mws-Arbeitsblattdatei befinden, müssen Sie die Eingabe möglicherweise in eine Nur-Text-Datei exportieren.

Ich habe nicht versucht (in einer Klartextdatei, in einem DOS-Fenster oder Powershell) auf MS-Windows (obwohl die Zip-Datei von dieser Seite in eine updtsrc.exe Datei entpackt wurde).

Wenn Sie also viele alte Codes mit Sprachinkompatibilitäten zwischen Maple V und Maple 6 haben, können Sie diese Route versuchen, um die Konvertierung zu automatisieren.

Es wurden einige Befehle zwischen Maple 6 und Maple 18 veraltet (z. B. Kleinbuchstaben vector), aber nur wenige weitere Sprachänderungen (Rückwärtsinkompatibilität).

Ich schlage vor, dass Sie die Hilfeseiten in Ihrem Maple 18 für die Sprachupdates lesen.Blick auf die Hilfeseiten für diese Hilfethemen insbesondere ich Ihnen vorschlagen (diese in der Hilfe Brower der Suchleiste eingeben):

updtsrc 

updates,Maple6,compatibility 

Was Sie zweites Beispiel beteiligt vector, ist es wahr, dass vector veraltet und superceded durch den Vector Befehl.

Aber selbst in MapleV R5 sollten Sie nicht wirklich op(f) auf Vektor f verwenden. Korrekter wäre eval(f) oder evalm(f) gewesen. ZB

f:=vector([-x1^2,x2*u]); 

              [ 2  ] 
             f := [-x1 , x2 u] 

var:=u; 

              var := u 

subs(var=cat(var,0), eval(f)); 

             [ 2  ] 
             [-x1 , x2 u0] 

Nun nehmen wir Sie stattdessen Vector in der oben verwenden. In diesem Fall mit op(f) in diesem subs Aufruf wird den Fehler, den Sie zitiert, weil im Gegensatz vector die Vector Biest nicht Nachname-Eval haben.

f:=Vector([-x1^2,x2*u]); 

               [ 2] 
              f := [-x1 ] 
               [ ] 
               [x2 u] 

var:=u; 

              var := u 

subs(var=cat(var,0), op(f)); 
Error, invalid input: subs received 2, which is not valid for 
its 2nd argument 

Sie könnten noch eval(f) hier verwenden, aber in Wirklichkeit ist es nicht erforderlich.

Zuletzt, versuchen Sie, die Punkt-Freigabe Ahorn 18.02 herunterzuladen und zu installieren, anstatt mit Ahorn 18.00 zu haften. Sie können das here finden.

+0

Vielen Dank. Ich habe updtsrc auf den Code und nur eine Kopie Nachrichten mit Bezug auf || und <> wurden ausgegeben. Der Update-Code funktioniert leider nicht. Ich werde jede einzelne Funktion durchlaufen müssen, um zu sehen, wo der Fehler liegt. Sie arbeiteten fehlerlos auf Maple V 5. –

+0

Einer der alten Befehle, linalg [Vektor] ([op (konvertieren (f, Liste)), Seq (dinvar [i] [2..11], i = 1. .nu)]); führte zu [-x1 * x2 + u0, x1^2-2 * x2, [u1, u2, u3, u4, u5, u6, u7, u8, u9, u10]], denke ich die Absicht war [-x1 * x2 + u0, x1^2-2 * x2, u1, u2, u3, u4, u5, u6, u7, u8, u9, u10], aber ich konnte nicht herausfinden, wie man das erreicht. Irgendwelche Vorschläge? –

+0

Es ist mir nicht klar, ob (oder wie) sich die Ausgabe dieses neuen Beispiels zwischen Maple V und Maple 18 geändert hat. Und es ist schwer zu adressieren, ohne genau zu wissen, was 'f',' dinvar' und 'nu' sind. Am besten wäre es, es als eine komplett neue Post hier oder auf Mapleprimes zu werfen. Wenn Sie den gesamten Code nicht veröffentlichen möchten, können Sie ihn als kleines eigenständiges Codebeispiel einrichten, indem Sie den Befehl 'lprint' verwenden, um genau zu sehen, was diesen Namen als Beispielsetup zugewiesen werden soll. – acer

2

Der Befehl für die Sie suchen ist

vars:= [x||(1..n)]; 

Maple V 5 im Jahr 1997. Fast alle dokumentierten Befehle in dieser Version verfügbar war veröffentlicht heute noch arbeiten. Die aktuelle Version in '92 war Maple V. Die aktuelle Version ist heute Maple 2016, nicht Maple 2018. Mir ist kein automatisches Update-Tool bekannt.

Lassen Sie mich wissen, wenn Sie mehr Code benötigen übersetzt.

+0

Vielen Dank. Entschuldige die Fehler. Maple V statt V 5, Maple 18 statt Maple 2018. Ich brauche definitiv mehr Code, aber ich weiß nicht, wie ich sie senden soll. Ich fürchte, der Thread wird mit kleinen Kommentaren für jeden einzelnen Code gefüllt. Was soll ich machen? –

+0

Ein anderes Beispiel. f: = vector ([- x1^2, x2 * u]) und var: = u dann subs (var = cat (var, 0), op (f)) Der letzte Befehl wird nicht mehr funktionieren: Subs erhalten 2 , die für das zweite Argument nicht gültig ist. –

+0

Es kann einfacher für Sie sein, Ihre Fragen auf www.mapleprimes.com zu stellen. Die Reihenfolge der oben genannten Befehle funktioniert im aktuellen Maple einwandfrei. Du musst etwas anderes machen. Versuchen Sie ** Neustart **. Der ** Vektor ** funktioniert immer noch, ist aber veraltet. Verwenden Sie stattdessen ** f: = <-x1^2, x2*u> **. –