Einzelnen Beitrag anzeigen

SeriousToni

Registriert seit: 12. Jan 2007
39 Beiträge
 
Delphi 2005 Personal
 
#15

Re: Kurvendiskussion - Nullstellen Extrema usw. mit Tchart

  Alt 26. Mär 2007, 12:58
Ich lasse nun auch die Ableitungen berechnen, das ist ja an sich nicht schwer da die Formel ja einfach ist, hier ein Beispiel aus meinem Program
Delphi-Quellcode:
//Ableitungen
form1.Label9.Caption:=form1.Edit1.Text+'*x*x + '+form1.Edit2.Text+'*x + '+form1.Edit3.Text;
a:=strtofloat(form1.Edit1.Text)*2;
form1.Label10.Caption:=floattostr(a)+'*x + '+form1.Edit2.text;
form1.Label11.Caption:=floattostr(a);
form1.Label12.caption:='0';
Dies ist die Funktion a*x*x+b*x+c
a,b und c kann der Benutzer eingeben.
Label 9 ist die normale Funktionsformel f(x).
Label 10 die erste Ableitung f'(x),
Label 11 und 12 die zweite und dritte Ableitung f''(x) f'''(x).

In Mathe müssen wir bei einer Kurvendiskussion immer die Extrema (Hochpunkt/Tiefpunkt) und die Wendepunkte (Lr-WP/Rl-WP) berechnen.
Will ich die Extrema berechnen, setze ich die erste Ableitung f'(x)=0.
Aus dem Ergebnis ergibt sich der x-Wert, den ich in f(x) einsetze und damit y erhalte. Setze ich x in f''(x) ein, so erhalte ich bei x<0 einen Hochpunkt und bei x>0 einen Tiefpunkt.
Ähnlich macht man es bei den Wendepunkten (die nächst höhere Ableitung, gleicher Prozess).

Aber wie kann ich das in Delphi lösen? Weil ich kann ja nicht einfach sagen "setz mal die erste Ableitung 0 und stelle nach x um!" Ich hab halt verschiedene Formeln, es gibt z.B.
a*x*x+b*x+c oder m*x+n oder a*sin(b*x) und auch a*cos(b*x). Je nachdem was der Nutzer für a, b, c, n oder m eingibt sehen ja die Formeln anders aus!

Ich wollte gerne die Extrema und WP mit ihren x und y Koordinaten und der Art des Extremas/WPs in einer Listbox ausgeben. Das kann ich mit form1.listbox1.items.add(...) machen

Die Funktionen stelle ich mit Tchart dar:
Delphi-Quellcode:
x:=strtofloat(form1.Edit16.Text);
while x<= strtofloat(form1.Edit17.Text) do
  begin
  y:=(a*x*x)+(b*x)+c;
  form2.series1.addxy(x,y);
  form2.Series2.addxy(x,0);
  form2.Series3.AddXY(0,y);
  x:=x+0.01;
  end;
Für die Funktion f(x)=m*x+n lasse ich einfach "Keine" in der Listbox erscheinen, da die Funktion ja keine Extrema oder Wendepunkte haben kann
Jeder mag dicke Brüste!
  Mit Zitat antworten Zitat