loakle Ableitung zum bestimmen von Hoch - und Tiefpunkten
-
Hi alle Zusammen!
Ich versuche gerade lokale Hoch und Tiefpunkte (Wendepunkte) in einer Kurve zu bestimmen. Die Kurve kann nicht durch eine Formel ausgedrueckt werden, so dass mathematische Berechnungen schon mal wegfallen! Im moment loese ich das so:
for(x = (range+1); x<(CL1.CLlength-(range+1)); x++) { if(((fabs((CL1.CLdata[1][(x-range)] + CL1.CLdata[1][(x+range)]))/2) < (fabs((CL1.CLdata[1][(x-(range+1))] + CL1.CLdata[1][(x+(range-1))]))/2)) && ((fabs((CL1.CLdata[1][(x-range)] + CL1.CLdata[1][(x+range)]))/2) < (fabs((CL1.CLdata[1][(x-(range-1))] + CL1.CLdata[1][(x+(range+1))]))/2))) { CL1.CLlp[lpcount1]=x; lpcount1++; } if(((fabs((CL1.CLdata[1][(x-range)] + CL1.CLdata[1][(x+range)]))/2) > (fabs((CL1.CLdata[1][(x-(range+1))] + CL1.CLdata[1][(x+(range-1))]))/2)) && ((fabs((CL1.CLdata[1][(x-range)] + CL1.CLdata[1][(x+range)]))/2) > (fabs((CL1.CLdata[1][(x-(range-1))] + CL1.CLdata[1][(x+(range+1))]))/2))) { CL1.CLhp[hpcount1]=x; hpcount1++; } }
CL1.CLdata ist der Speicherort der Kurve. Dies findet mir auch die lokalen HP und LP doch ist es sehr empfindlich gegenueber Schwankungen in der Kurve.
Es gibt da Garantiert eine bessere Loesung als die Meinige!vielen Dank fuer eure Gedanken, moegen sie auch noch so abwegig sein!
gruss Brandtson
-
Was für Daten hast du denn? Liegen die gegebenen Stellen dicht oder weit
auseinander?Im ersten Fall würde ich mir die Tangenten zwischen je zwei benachbarten Punkten
anschauen. Wenn sich das VZ der Steigung der Tangente von einer zur nächsten ändert,
hast du ein lokales Extremum. Geht bestimmt auch besser, aber erste Ergebnisse
wirst du bekommen. Du kannst dein Ergebiss aber nicht besonders gut eingrenzen,
es macht also nur Sinn, wenn die Punkte recht dicht liegen.Du könntest z.B. die Funktion interpolieren (als Polynom oder
kubischen Spline) und diese dann auf lokale Extrema und Wendepunkte
untersuchen. Dann hast du auch eine ganze Menge Theorie zur Fehlerabschätzung
zur Hand.
-
brandtson schrieb:
Die Kurve kann nicht durch eine Formel ausgedrueckt werden, so dass mathematische Berechnungen schon mal wegfallen!
Warum nicht?
-
@brandtson
ich habe vor kurzer zeit ein programm in vb geschrieben das die extremwerte einer beliebigen funktion berechnen kann. ich habe das mit regula falsi gelöst.
eine weiter möglichkeit zur numerischen ermittlung wäre das newton sekanten verfahren.wenn du das mittels regula falsi löst muss du natürlich die startpunkte festlegen.
gruss tobias