Hallo,
also ich habe hier alles in ein Mathematica 3.0.2 auf einer SGI
Workstation kopiert und ein Mathematica 4 und kann das Verhalten *nicht*
best"atigen.
Beide Varianten laufen problemlos.
K"onntest Du mir ein vollst"andiges Notebook schicken ?
Gruss
Jens
Klamser wrote:
>
> 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
|