DMUG-Archiv 2004

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

RE: FindMinimum die zweite

hi jens,

danke für dein interesse an meinem problem.

die funktion die ich rufen will ist in wirklichkeit ein FEM programmpaket (der zugriff auf den sourcecode ist nicht 
wirklich praktikabel) das feldberechnungen durchführt.
die qulität der konfiguration wird als ergebniss solch einer feldberechnung mit errechnet genau nach dieser qualität 
will ich optimieren (die konfiguration ändern um die qualität zu verbessern).
am liebsten mit NMinimize da aber FindMinimum das gleiche verhalten an den tag legt habe ich damit begonnen.

ich glaube das der hund darin begraben liegt das FindMinimum den zu minimierenden ausdruck irgendwie nicht 
standardmässig evaluiert schliesslich muss es ja z.b. bei nur einem startwert den ausdruck auch differenzieren können.

bei dem beispiel:
FindMinimum[Input@ToString@x, {x, 1, 2}]
bricht ja das ganze sofort nach der ersten eigabe ab, nach nur einem einzigen zahlenwert.
was soll da numerisch differenziert werden mit nur einem einzigen zahlenwert ?
ausserdem wird Input[] zwar von FindMinimum aufgerufen doch wird nicht ein x aus dem wertebereich an FindMinimum 
übergeben (in einen string gewandelt weil Input["prompt"] es korrekterweise als string will) sondern nur als "x". 
korrekterweise müsste ja ein x aus dem wertebreich übergeben werden (bei der ersten iteration wohl den startwert), für 
welchen die zu minimierende funktion den funktionswert ausrechnen und abliefern müsste. diesen vorgang wollte ich 
zunächst mal manuell simulieren um den problem auf den grund zu gehen.

darum habe ich auch meine bedenken ob das mit einer MathLink funktion klappen würde.

in mma gibt es doch funktionen die ihre argumente "in a not standard way" evaluieren. ist das nicht solch ein problem ?


grüsse robert

-----Original Message-----
From: Jens-Peer Kuska [mailto:kuska@XXXXXXX.de] 
Sent: Tuesday, August 31, 2004 10:45 AM
To: Nowak Robert
Cc: Deutsche Mathematica News Group
Subject: Re: FindMinimum die zweite


Hallo,

*mit* MathLink w"are es am elegantesten Punkt.

also 
ich kann mir keine Funktion vorstellen f"ur die man wieder eine shell starten muss.

MathLink funkioniert auch "uber ein TCP/IP Netzwerk wie man
z. B. am Parallel Computing Toolkit sieht. Im Notfall muss man die Verbining per Hand mit -linkcreate und 
Install[LinkConnect[]] 
aufrufen.

Wenn ich den Quelltext bekommen erkl"are ich  mich auch bereit eine MathLink binary daraus zu basteln.

Ansonsten kann das Programm einfach die bin"aren Daten/Datum
in eine Datei schreiben die man z. B. via NFS oder Samba an die Windows-Kiste angeh"angt hat und die liesst man dan 
halt ein.

Weil bei dem ganzen runden der Eingabe und Ausgabe Stellen verloren 
gehen die man beim Berechnen der Abeiltung braucht. Das Berechne der Ableitung l"oscht ganz massiv Stellen in der Zahl, 
so ca die H"alfte der Stellen ist dabei Schrott. Wenn man da keine 64 Bit Zahlen nimmt ist die Genauigkeit ganz schnell 
im Eimer und genau das berichtet auch Mathematica. 

Gruss
  Jens


Nowak Robert wrote:
> 
> hi jens, mit RUN[] wäre es halt am einfachsten und am elgantesten.
> 
> die funktion die ich rufen will müsste ich erst recht wieder mit einem 
> shell aufruf aus C heraus starten. (die funktion um die es geht wird 
> eigentlich mittel ssh / rsh von windows remote auf einer linux 
> maschine gestartet und auf der linux berechnet) die berechnunug dauert 
> sowieso sehr lange d. h. die aufrufzeit wäre vernachlässigbar.
> 
> warum funktioniert FindMinimum[] "so" eigntlich nicht ?
> 
> ist das ein bug oder ein feature ?
> würde es mit mathlink sicher funktionieren ?
> 
> grüsse robert
> 
> -----Original Message-----
> From: Jens-Peer Kuska [mailto:kuska@XXXXXXX.de]
> Sent: Monday, August 30, 2004 10:45 PM
> To: Nowak Robert
> Cc: Deutsche Mathematica News Group
> Subject: Re: FindMinimum die zweite
> 
> Hallo,
> 
> tja und warum kein MathLink Programm schreiben???
> Das geht dann auch viieeeeeel schneller.
> 
> Gruss
>   Jens
> 
> Nowak Robert wrote:
> >
> > liebe MMA user,
> >
> > habe mein grosses WARUM umformuliert.
> > eigentlich will ich FindMinimum[] mit einer funktion welche extern 
> > über das RUN[] kommando evaluiert wird laufen lassen. das exterene 
> > kommando liefert z.b. das quadrat seiner input zahl.
> >
> > dazu habe ich folgendes herumexperimentiert:
> >
> > Table[Input@ToString@x, {x, 1, 3}]
> >
> > das hat zur folge das 3 mal eine inputbox erscheint jeweils mit 
> > einer 1 einer 2 und eienr 3 als "prompt", man kann dann 3 male 
> > jeweils einen wert eingeben und erhält als ergebnis eine tabelle mit 
> > den 3 werten.
> >
> > so weit so gut ......
> >
> > jetzt habe ich mir gedacht will ich eine funktion minimieren deren 
> > funktionswerte ich jeweils manuell eingebe (wie lange das auch immer 
> > dauern mag)
> >
> > FindMinimum[Input@ToString@x, {x, 1, 2}]
> >
> > .... doch anstatt wie erhofft ein prompt mit werten für x zu 
> > bekommen für welche mma den funktionswert abzufragen wünscht 
> > promptet mathematica in der input box lediglich den buchstaben "x"
> >
> > und bricht gleich beim ersten mal nach eingabe eines beliebigen 
> > wertes mit der folgender meldung ab:
> >
> > FindMinimum::cvmit: Failed to converge to the requested accuracy or 
> > precision \ within 100 iterations
> >
> > @jens wenn es nur das rundungsproblem wäre das könnte man sicher in 
> > den griff bekommen.
> >
> > wer weiss rat ?
> >
> > lieber thomas danke für das kleine warum.
> >
> > danke robert



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

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