Entwickler-Ecke
Sonstiges (Delphi) - Nullstellen rechner
Nippey - Do 14.09.06 21:28
Titel: Nullstellen rechner
hi leute meine bisheriger versuch sieht so aus:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| var Form1: TForm1; vObergrenze : ReAl; vUntergrenze : rEaL; vSchrittweite : integer; implementation
{$R *.dfm}
procedure TForm1.btn_GOClick(Sender: TObject); var vX, vY : real; begin vObergrenze := strtofloat (edt_1.text); vUntergrenze := strtofloat(edt_2.text); vschrittWeite := strtoint(edt_3.text); vX := vUntergrenze; repeat begin vY := vX + vSchrittweite; if vX > (vObergrenze - vSchrittweite) then (if vY = 0 then lbl_0.caption := strtofloat (vY) else lbl_0.Caption := strtofloat ( 'Keine nullstelle')) else vX := vX + vSchrittweite; end until vY = 0 ; end;
end. |
ich kapier nicht warum es nicht funktioniert.
Moderiert von
AXMD: Delphi-Tags hinzugefügtModeriert von
Christian S.: Topic aus VCL (Visual Component Library) verschoben am Do 14.09.2006 um 21:44
Allesquarks - Do 14.09.06 21:44
Schau dir doch mal an, was du tust:
Du erhöhst vx immer um ne schrittweite. Und wenn vx größer als die Obergrenze - eine Schrittweite ist dann guckst du ob vy=0 ist, wobei vy immer vx+Schrittweite ist und erst dann gibst du was aus in deinem Label???
Dann könntest du auch immer schauen ob vx= obergrenze-schrittweite ist. Das ist einfach kein Kriterium für eine Nullstelle.
Desweiterenist das ganze Konzept überhaupt nicht klar: du willst offenbar überprüfen ob zwischen obergrenze und untergrenze eine Nullstelle liegt?? =>
Delphi-Quelltext
1: 2: 3: 4:
| function zerobetween(oben,unten:real):boolean; begin result:=(oben>0) and (unten<0); end; |
Christian S. - Do 14.09.06 21:45
Hallo!
Bitte beschreibe, was Du überhaupt machen willst und was daran nicht funktioniert. Wenn Du möchtest, dass andere Zeit für Dich aufwenden, indem sie Dir antworten, solltest auch Du Zeit aufwenden, um Deine Frage möglichst präzise und klar zu stellen.
Grüße
Christian
Nippey - Fr 15.09.06 07:28
Christian S. hat folgendes geschrieben: |
Hallo!
Bitte beschreibe, was Du überhaupt machen willst und was daran nicht funktioniert. Wenn Du möchtest, dass andere Zeit für Dich aufwenden, indem sie Dir antworten, solltest auch Du Zeit aufwenden, um Deine Frage möglichst präzise und klar zu stellen.
Grüße
Christian |
jA ich hab den auftrag (von der schule) dass ich die nullstlle der funktin Y=X mit einem delphi programm erechnen soll aber es läuft bei mir immer ins unendliche und dann hängt er sich auf.
Allesquarks - Fr 15.09.06 13:51
Die Nullstelle einer Funktion Y=X liegt bei x=0 Was kann man denn daran berechnen? Irgendwie dumm aber nun mal allgemein. Nullstellen kann man auf verschiedene Arten berechnen Intervallschachtelung Newtonverfahren etc.
Für eine auf [a,b] stetige Funktion f ex. eine Nullstelle zwischen c und d mit a <= c < d <= b wenn (f(c)<0 und f(d)>0) oder (f(c)>0 und f(d)<0) (OK die konstante Funktion f(x)=0 ist hierin nicht inbegriffen machts aber nur komplizierter)
Algorithmus:
nimm a und b und untennähernd obennähernd
if (meinefunktion(untennähernd)<0) and (meinefunktion(obennähernd)>0) or umgekehrt
then begin
//dazwischen ist Nullstelle grenzen neu setzen.
end;
Xion - Fr 15.09.06 14:17
machs doch einfach algebraisch, wie mans in der Schule lernt: bei f(x)=y ists natürlich doof, aber die Bedingung für ne Nullstelle ist doch, das f(x)=0 ist, oder. also musst du nur kucken, wann y=0 ist. natürlich wenn y 0 ist *g* aber bei einer anderen Funktion hast du z.B. f(x)=120x+10
aaalso: 120x+10=0 => 120x=-10 => *grübel* hmmm, y=-0.8333333...
Als Code würde ich das so machen:
(Bei einer einfachen Gleichung im Beispiel mit + also z.B. y=120x+10)
1) Position von + finden => einzelne Teile (120x und 10) in Variablen schreiben (dynamisches array?) im Bsp als a=120x und b=10
2) "Alles mit x auf eine Seite" => ein minus vor der variable mit einem x drin => a:=-a => a=-120x.
3) x aus a rauschneiden (a=-120) und dann b durch a teilen => ergebnis.
(Bei einer einfachen Gleichung im Beispiel y=3x)
nur schritt 3) aus obigem beispiel
bei quadratischen gleichungen natürlich schwerer, aber man muss einfach so vorgehen, wie man es auf einem Zettel tun würde.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!