Kurvendiskussion < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 12:26 Di 13.11.2007 | Autor: | mat_k |
Aufgabe | Die Funktion SelectRealZeros[list_] soll aus einer Liste list von Lösungen einer Gleichung alle reellen Lösungen herausfiltern.
Modifizieren Sie die Funktion Curve[f_] aus EinführungInMathematica.nb derart, dass auch Funktionen mit weniger als 2 Nullstellen, Extremwerten bzw. Wendepunkten dargestellt werden. Verwenden Sie bei der Bestimmung dieser speziellen Punkte ihre Funktion SelectRealZeros. |
Hallo,
meine Funktion SelectRealZeros[list_] sieht so aus:
SelectRealZeros[list_] := Select[list, FreeQ[#, Complex] &]
Das gegebene Modul lautet:
Curve[f_] := Module[{x, Zeros, Extremes,
Inflections, ZerosCoord, ExtremesCoord,
InflectionsCoord, AllPoints, Xmin, Xmax},
Zeros = Solve[f[x] == 0, x];
Extremes = Solve[f'[x] == 0, x];
Inflections = Solve[f''[x] == 0, x];
ZerosCoord = Point[{x, f[x]}] /. Zeros;
ExtremesCoord = Point[{x, f[x]}] /. Extremes;
InflectionsCoord = Point[{x, f[x]}] /. Inflections;
AllPoints = x /. Join[Zeros, Extremes, Inflections] // N // Sort;
Xmin = AllPoints1 - 1;
Xmax = AllPoints-1 + 1;
Plot[f[x], {x, Xmin, Xmax}, PlotRange -> All,
Epilog -> {PointSize[
0.02], Prepend[ZerosCoord, RGBColor[1, 0, 0]], Prepend[ExtremesCoord,
RGBColor[0, 1, 0]], Prepend[InflectionsCoord, RGBColor[0, 0, 1]]}]]
Wir sitzen hier schon einige Stunden und kommen nicht drauf, wie wir das Bsp. lösen können.
Wäre echt dankbar für einen kleinen Denkanstoß!
Mat
|
|
|
|
Hallo,
SelectRealZeros hätte ich mit Cases[] und Kapitel 2.3.4 im Mathematica Book gelöst, aber so geht es auch.
Diese Funktion verwendest du einfach zusätzlich bei der Berchnung von AllPoints.
Ich denke, der Spezialfall, der noch behandelt werden muss, tritt erst bei weniger als einem Punkt auf, also wenn weder Nullstellen noch Extremstellen noch Wendestellen vorhanden sind.
Hier musst du bei der Berechnung von Xmin und Xmax nur per If prüfen, ob AllPoints die Länge 0 hat und in dem Fall willkürliche Grenzen (z.B. -5 und 5) setzen, sonst eben das erste und letzte Element von AllPoints um 1 verschoben. Eben durch diese Verschiebung funktioniert das Ganze auch ohne Anpassung bei nur einem Punkt.
Gruß
Martin
|
|
|
|