|
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 |