AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Kurvendiskussion - Nullstellen Extrema usw. mit Tchart
Thema durchsuchen
Ansicht
Themen-Optionen

Kurvendiskussion - Nullstellen Extrema usw. mit Tchart

Ein Thema von SeriousToni · begonnen am 25. Mär 2007 · letzter Beitrag vom 22. Apr 2007
Antwort Antwort
Seite 2 von 3     12 3      
SeriousToni

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

Re: Kurvendiskussion - Nullstellen Extrema usw. mit Tchart

  Alt 25. Mär 2007, 20:08
hier einmal ein Bild- der rote Graph ist die Darstellung von Tchart - der grüne den ich mit der Hand gezeichnet hab, wäre aber richtig!
Miniaturansicht angehängter Grafiken
func1_419.jpg  
Jeder mag dicke Brüste!
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#12

Re: Kurvendiskussion - Nullstellen Extrema usw. mit Tchart

  Alt 25. Mär 2007, 20:15
Das ist natürlich Unsinn, da die Grenzen des Intervalls einzufügen...
Dieses n, das ich eingeührt habe, steht grob für die n-te NS der Funktion. Mal dir mal den Sinus auf und beschrifte die Nullstellen mit 0*pi,1*pi usw. und du wirst den Fehler sehen.

Wenn deine untere Intervallgrenze (a,b) positiv ist, müsstest du es so machen:
n=floor(a/pi);

die ersten n NS (von x=0 an gezählt) liegen also nicht in deinem Intervall, also schaust du dir nur die Nullstellen die zu floor(a/pi)<n<ceil(b/pi) liegen. (+-1 an jeder Seite, so genau habe ich da jetzt nicht nachgedacht. Ähnliche Überlegungen kannst du dann auch machen, wenn dein Intervall teilweise negativ ist.

Wie siehts denn mit den Polynomen aus?

// Zum Schaubild
Wenn du dabei Hilfe brauchst mache einen eigenen Thread dafür auf und füge noch den passenden Code hinzu. Wenn du nicht verräts, was du geschrieben hast, kann dir auch niemand deinen Fehler sagen.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
SeriousToni

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

Re: Kurvendiskussion - Nullstellen Extrema usw. mit Tchart

  Alt 25. Mär 2007, 20:18
den grünen hab ich ja auch mit der Hand gezeichnet - aber ich glaub ich hab den Fehler jetzt gefunden und es müsste wieder Funktionieren!

So, also bleiben wir beim sinus-Problem, ok ich werde mir den mal aufzeichnen und deinen Hinweis anschauen - vielleicht bekomm ichs hin

btw welche Polynome? die x³ Funktion?? Umm ich glaub die mach ich wieder raus weil das is mir zu kompliziert mit der Polynomdivision usw. Das pack ich nich
Jeder mag dicke Brüste!
  Mit Zitat antworten Zitat
SeriousToni

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

Re: Kurvendiskussion - Nullstellen Extrema usw. mit Tchart

  Alt 25. Mär 2007, 21:14
So du hast mir schonmal ein wenig auf die Sprünge geholfen, ich habe jetzt folgenden Code:
Delphi-Quellcode:
//Nullstelle positiv
form1.ListBox1.clear;
a:=0;
b:=strtofloat(form1.Edit11.text);
c:=0;
d:=strtofloat(form1.Edit17.text);
while a<d do begin
  xo1:=c*(pi/b);
  form1.ListBox1.Items.Add(floattostr(xo1));
  a:=a+(pi/b);
  c:=c+1; end;

//Nullstelle negativ
a:=0;
b:=strtofloat(form1.Edit11.text);
c:=0;
d:=-1*(strtofloat(form1.Edit16.text));
if (strtofloat(form1.Edit17.text))>=0 then begin
  while a<d do begin
    xo1:=-1*(c*(pi/b));
    if xo1<>0 then begin
      form1.ListBox1.Items.Add(floattostr(xo1)); end;
    a:=a+(pi/b);
    c:=c+1; end;
  end;
Die Formel für die Funktion lautet y:=a*sin(b*x) Das einzigste Problem ist, dass man hier keinen Intervall eingeben darf, der nicht durch 0 geht (z.B. -15 bis -10 oder 10 bis 15) - aber ich denke das muss ich wohl in Kauf nehmen.

edit: hab die Formel etwas umgebaut und sie Funktioniert jetzt auch für die Kosinusnullstellen!
Jeder mag dicke Brüste!
  Mit Zitat antworten Zitat
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
SeriousToni

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

Re: Kurvendiskussion - Nullstellen Extrema usw. mit Tchart

  Alt 26. Mär 2007, 16:26
also die Extrema für a*x*x+b*x+c funktionieren jetzt! Hatte einen Geistesblitz, ich brauch ja nur den Scheitelpunkt berechnen ^^
Ich hänge aber noch an den Wendepunkten und Extrema von Sinus und Cosinusfunktionen Weis jemand, wie ich das am besten berechnen kann? Das Problem ist, das die Funktionen ja a*sin(b*x) bzw. cos sind, a und b sind variabel vom Nutzer einzugeben.
Jeder mag dicke Brüste!
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#17

Re: Kurvendiskussion - Nullstellen Extrema usw. mit Tchart

  Alt 26. Mär 2007, 16:45
Noch ein paar Hinweise:

- Gib deinen Labels passende Namen. Sonst ist es kaum zu verstehen.
- Schreib den Inhalt aus den Labels in passende Floatvariablen, damit du nachher nicht immer bei den Berechnungen ein strtofloat(Edit.text) schreiben musst, was sehr die lesbarkeit einschränkt.
- Rücke sinnvoll ein! Such mal nach einem Styleguide, sonst wird dein Lehrer deinen Text auch nicht gerne lesen, was sicher Punktabzug bedeutet.

Zitat:
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!
bei ax^2+bx+c: Nullstellen per PQ-Formel ausrechnen. Dann ableiten: 2ax+b=0 -> x=-b/2a (natürlich erst mal auf a<>0 testen) zweite Ableitung: 2a und damit entscheiden, ob du einen Hoch oder einen Tiefpunkt hast.
Also alle Möglichen Ableitung fest in dein Programm schreiben und dann nur mit den Werten füttern.

Nimm dir erst mal ein Papier und leite deine möglichen Funktionen ab und forme sie passende um und schau was passieren kann, wenn verschiedene Teile kleiner als Null (pq-Formel) oder gleich null sind, wo du also noch Spezialfälle einbauen willst.
Wenn du damit fertig bist, kannst du das hier mal veröffentlichen und später dann implementieren. Also erst denken und dann an den Computer setzen.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
SeriousToni

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

Re: Kurvendiskussion - Nullstellen Extrema usw. mit Tchart

  Alt 26. Mär 2007, 16:56
ah mein Helfer ist wieder hier
Also mit der quadrat. Funktion das funktioniert jetzt, danke, wie gesagt, ich weis nicht wie ich die Extrema und WP von cos und sin Funktionen herausbekommen soll wenn a und b variabel sind??
Jeder mag dicke Brüste!
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#19

Re: Kurvendiskussion - Nullstellen Extrema usw. mit Tchart

  Alt 26. Mär 2007, 17:06
Wie sehen denn die ersten beiden Ableitungen aller Funktionen aus? Hast du schon die Nullstellen der normalen Sinusfunktion berechnet?
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
SeriousToni

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

Re: Kurvendiskussion - Nullstellen Extrema usw. mit Tchart

  Alt 26. Mär 2007, 17:16
Die Ableitung zu sinus:
Delphi-Quellcode:
//Ableitungen
a:=strtofloat(form1.Edit10.text) ;
b:=strtofloat(form1.Edit11.text) ;
form1.Label9.Caption:=a+'*sin('+b+'*x)';
form1.Label10.Caption:='2*a*cos(b*x)';
form1.Label11.Caption:='-2*a*sin(b*x)';
form1.Label12.caption:='-2*a*cos(b*x)';
Label9 - Funktion
Label10- 1.Ableitung
Label11- 2.A.
Label12- 3.A.

Zu cosinus wäre das:
a*cos(b*x)';
2*a*cos(b*x);
-2*a*sin(b*x);
-2*a*cos(b*x);

Die Nullstellenberechnung habe ich mir selber ausgedacht, sie funktioniert einmal von 0 bis Intervallstart (negativ) und dann von 0 bis Intervallende (positiv). Daher funktioniert sie nicht, wenn das Intervall der Sinusfunktion nicht durch 0 geht (also z.B. wenn als Intervall -5 bis -2 festgelegt wurde), wie ich auch schon gestern hier geschrieben habe.

Ist ziemlich schwer zu verstehen, aber es funktioniert wenigstens, solange man halt nen Intervall eingibt der durch 0 geht, aber das ist schon ok für mich
Ich weis nicht wie ich auf Extrema und WP bei sin und cos Funktionen kommen soll mit delphi?
edit16 = Intervallstart und edit17 = Intervallende!
Delphi-Quellcode:
//Nullstelle positiv
form1.ListBox1.clear;
a:=0;
b:=strtofloat(form1.Edit11.text);
c:=0;
d:=strtofloat(form1.Edit17.text);
while a<d do begin
  xo1:=c*(pi/b);
  form1.ListBox1.Items.Add(floattostr(xo1));
  a:=a+(pi/b);
  c:=c+1; end;

//Nullstelle negativ
a:=0;
b:=strtofloat(form1.Edit11.text);
c:=0;
d:=-1*(strtofloat(form1.Edit16.text));
if (strtofloat(form1.Edit17.text))>=0 then begin
  while a<d do begin
    xo1:=-1*(c*(pi/b));
    if xo1<>0 then begin
      form1.ListBox1.Items.Add(floattostr(xo1)); end;
    a:=a+(pi/b);
    c:=c+1; end;
  end;
Ähnliches gilt für die cosinusfunktion.
Jeder mag dicke Brüste!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz