DMUG-Archiv 2000

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

Re: C und FORTRAN in Mathematica

Hallo,

also ich nehme mal an, Du willst kein MathLink Programm schreiben
das die Terme nur numerisch auswertet ?

sondern Du willst gern den symbolischen Ausdruck einlesen.
Also Pointer alla sin(*p++) klappen nicht, auch sin(x>0 ? x: 0)
wird nicht gehen. Die FORTRAN Programme
sollten alle in Kleinbuchstaben sein.

Nehmen wir mal ein en prima C-Ausdruck wie "x*pow(y,0.5)-sin(z)"
Dann wird mit

pow[a_, x_] := a^x

ToExpression["x*pow(y,0.5)-sin(z)", TraditionalForm]


Probieren wir das mal mit die FORTRAN Syntax

ToExpression["x* y**0.5*z-sin(z)", TraditionalForm] /. 
  NonCommutativeMultiply[a_, b_] :> a^b

geht auch. Nat"urlich brauchst Du eventuell auch regeln die
andere C/FORTRAN Funktionen in ihr Mathematica-"Aquivalent
"ubertragen sofern das geht.

Mit dem Zeilenende nach der 72 Spalte und dem Anh"angen von Zeilen hast
Du nat"urlich Pech.

Mit den in numerischen Programmen "ublichen Gleitkommazahlen wirst
Du nicht gl"ucklich werden.

Du kannst Dir auch die Lex/Yacc Quellen f"ur eine C-Grammatik besorgen
(die "uberall im www-rumliegen) und die Parser-Regeln so umstricken, das
richtiges Mathematica raus kommt. Falls Du auch irgenwo die Lex/Yacc
Definitionen f"ur FORTRAN findest kannst Du das nat"urlich auch mit
FORTRAN machen (die m"ussen aber ein kleiner Alptraum sein). Das ist
auf jeden Fall die beste Methode.


Viel Spass dabei ;-)
  Gruss
    Jens

Stefan Lorenz wrote:
> 
> Hallo,
> 
> ich sitze hier mit Dateien, in denen Terme/Gleichungen im C-Syntax oder
> Fortran-Syntax abgelegt sind. Um mit Mathematica diese Gleichungen in
> weitere Berechnungen einbinden zu können, suche ich einen eleganten Weg,
> wie ich diese Files einlesen (und in Mathematica-Syntax konvertieren)
> kann.
> 
> Gruß
> Stefan Lorenz


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html