DMUG-Archiv 1999

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

LogPlot mit Modulen

Hallo,

bei LogPlot mit einem Modul unter Mathematica 4 habe ich das Problem,
dass immer bei dem "ersten" Wert, welcher von LogPlot berechnet wird,
der Parameter nicht ordnungsgemäß übergeben wird.

Beispiel einer einfachen Funktion (für die man eigentlich natürlich kein
Modul braucht, aber es geht nur um das Prinzip):

scl[sf_, pf0_, teufe_, geburtsjahr$pfeiler_, endzeitpunkt_, 
    h0_, \[Epsilon]_, \[Alpha]_, x_, a2_, n_, \[Mu]_, Q_, T_, 
    hoehe$zum$zeitpunkt$t$plus$dt$gespeichert_, auf$hmin$begrenzen_] :=
  Block[{senkung$berechnet, hoehe$zum$zeitpunkt$t$plus$dt, tage, dt =
1., m, 
      hmint, hoehe$zum$zeitpunkt$t$plus$dt$neu},
    If[Not[NumberQ[\[Epsilon] + \[Alpha] + a2 + n + \[Mu] + Q]], 
      Print["\[Epsilon]+\[Alpha]+a2+n+\[Mu]+Q=" <> 
          ToString[FullForm[\[Epsilon] + \[Alpha] + a2 + n + \[Mu] + Q]]
<> 
          " NumberQ[\[Epsilon]+\[Alpha]+a2+n+\[Mu]+Q]=" <> 
          ToString[
            FullForm[NumberQ[\[Epsilon] + \[Alpha] + a2 + n + \[Mu] +
Q]]]]];
    \[Epsilon] + \[Alpha] + a2 + n + \[Mu] + Q]

Man sieht, ich habe mit If NumberQ[....] einen Test eingebaut um zu
sehen, was intern passiert.

Wenn ich das Modul mal ausprobiere erhalte ich eine vernünftige Antwort:

scl[122, 60, 600, 1970, 1978, 8, 0, 50, 9, 10^-6, 2, 0, 1, 293, 13,
True]//N

53.

Bei Plot geht noch alles bestens:

Cell[BoxData[
    RowBox[{"Plot", "[", 
      RowBox[{
        RowBox[{"scl", "[", 
          RowBox[{
          "122", ",", "60", ",", "600", ",", "1970", ",", "1978", ",",
"8", 
            ",", "0", ",", "50", ",", "9", ",", 
            SuperscriptBox["10", 
              RowBox[{"-", "6"}]], ",", "2", ",", "0", ",", 
            SuperscriptBox["10", "expQ"], ",", "293", ",", "13", ",", 
            "True"}], "]"}], ",", 
        RowBox[{"{", 
          RowBox[{"expQ", ",", 
            RowBox[{"-", "15"}], ",", "15"}], "}"}], ",", 
        RowBox[{"PlotRange", "->", "All"}], ",", 
        RowBox[{"Compiled", "->", "True"}]}], "]"}]], "Input"]

Bei LogPlot gibte es aber Schwierigkeiten:

Cell[BoxData[{
    RowBox[{
      RowBox[{"Needs", "[", "\"\<Graphics`Graphics`\>\"", "]"}], ";"}],
"\n", 
  
    RowBox[{"LinearLogPlot", "[", 
      RowBox[{
        RowBox[{"scl", "[", 
          RowBox[{
          "122", ",", "60", ",", "600", ",", "1970", ",", "1978", ",",
"8", 
            ",", "0", ",", "50", ",", "9", ",", 
            SuperscriptBox["10", 
              RowBox[{"-", "6"}]], ",", "2", ",", "0", ",", 
            SuperscriptBox["10", "expQ"], ",", "293", ",", "13", ",", 
            "True"}], "]"}], ",", 
        RowBox[{"{", 
          RowBox[{"expQ", ",", 
            RowBox[{"-", "15"}], ",", "15"}], "}"}], ",", 
        RowBox[{"PlotRange", "->", "All"}], ",", 
        RowBox[{"Compiled", "->", "False"}]}], "]"}]}], "Input"]

Es erscheint zwar eine Grafik, aber die If NumberQ Bedingung zeigt, dass
die Variable expQ beim ersten Mal nicht ordnunggemäß als Zahl sondern
als 

Cell[BoxData["\<\"\[Epsilon]+\[Alpha]+a2+n+\[Mu]+Q=Plus[Rational[52000001,
\
1000000], Power[10, expQ]] \
NumberQ[\[Epsilon]+\[Alpha]+a2+n+\[Mu]+Q]=False\"\>"], "Print"]

(Power[10, expQ]) übergeben wird.

Bei dieser trivialen Funktion ist das sicher kein Problem, aber leider
habe ich eine Berechnung durchzuführen, bei der jedesmal ein Term aus
meheren tausend Summanden ausgegeben wird, und das stört sehr...

Kann jemnad helfen??

Gruß Peter Klamser


Antworten:
Re: LogPlot mit Modulen
Jens-Peer Kuska, 28.06.1999

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

DMUG-Archiv, http://www.mathematica.ch/dmug-liste.html; Letzte Änderung: 08.09.2003 20:45