![]() |
Sekantenverfahren programmieren
Hat jemand von euch schon mal ein Sekantenverfahren für ganzrationale Fkt. bei Delphi programmiert? Wir verzweifeln seit 3 Tagen daran und brauchen Hilfe!
:gruebel: |
Re: Sekantenverfahren programmieren
Hi Anja,
wie weit seid ihr denn schon gekommen. Wo genau happert es? Evtl. zeigst Du schon mal etwas Code :zwinker: Welche Delphi-Version. Bitte genauer angeben. ...:cat:... |
Re: Sekantenverfahren programmieren
|
Re: Sekantenverfahren programmieren
Zitat:
...:cat:... |
Re: Sekantenverfahren programmieren
Zur Delphi Version: Delphi 7.0 Personal
Zur Frage: Wir wollten es kurz und schmerzlos fragen. Zu unserem Zustand: Wir haben bereits die Funktion erfolgreich eingelesen, zwei Punkte berechnet und die Sekante dazwischen zum Schnittpunkt mit der x-Achse gebracht. (Im Quelltext bis zur While-Schleife). Wir scheitern an der Berechnung der Nullstelle (Ab while-Schleife.)
Delphi-Quellcode:
Helft uns :roteyes: , wir sehen nicht mehr durch.
var
Form1: TForm1; var a,s,c,x,y,o,p : real; n,f,z:integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin f:=f+3; stringgrid1.Cells[f-1,0]:=edit2.text; stringgrid1.cells[f,0]:=edit1.text; stringgrid1.cells[f-2,0]:=edit3.text; end; procedure TForm1.Button3Click(Sender: TObject); begin f:=-1; n:=strtoint(edit1.Text); stringgrid1.colcount:=3*n+3; label5.Visible:=false; edit4.Visible:=false; edit5.Visible:=false; label6.Visible:=false; end; procedure TForm1.Button2Click(Sender: TObject); begin label5.Visible:=true; edit4.Visible:=true; edit5.Visible:=true; label6.Visible:=true; end; procedure TForm1.Button4Click(Sender: TObject); var i,g: integer; begin a:=strtofloat(edit4.text); z:=strtoint(edit5.text); edit4.Visible:=false; label5.visible:=false; edit5.Visible:=false; label6.Visible:=false; g:=0; y:=0; o:=0; x:=0; for i:= 1 to n+1 do begin g:=g+3; if stringgrid1.cells[g-3,0]<>'-' then begin o:=power(z,(strtoint(stringgrid1.cells[g-1,0])))*(strtoint(stringgrid1.cells[g-2,0])); y:=power(a,(strtoint(stringgrid1.cells[g-1,0])))*(strtoint(stringgrid1.cells[g-2,0])); end else begin o:=-power(z,(strtoint(stringgrid1.cells[g-1,0])))*(strtoint(stringgrid1.cells[g-2,0])); y:=-power(a,(strtoint(stringgrid1.cells[g-1,0])))*(strtoint(stringgrid1.cells[g-2,0])); end; p:=p+o; x:=x+y; end; label7.caption:=floattostr(x); label8.caption:=floattostr(p); while abs(x)>1/10 do begin s:=z-((p*a-p*z)/(x-p)); a:=s; g:=0; y:=0; for i:= 1 to n-1 do begin g:=g+3; if stringgrid1.cells[g-3,0]<>'-' then y:=power(a,(strtoint(stringgrid1.cells[g-1,0])))*(strtoint(stringgrid1.cells[g-2,0])) else y:=-power(a,(strtoint(stringgrid1.cells[g-1,0])))*(strtoint(stringgrid1.cells[g-2,0])); end; x:=x+y; showmessage(floattostr(s)); end; label10.Caption:=floattostr(x); label9.Caption:=floattostr(s); end; end. |
Re: Sekantenverfahren programmieren
Zitat:
Zitat:
...:cat:... |
Re: Sekantenverfahren programmieren
Moin Leute!
Die ersten Fragen haben sich erledigt und geklärt :coder2: aber hier schon die nächste!: :wall: Kennt einer von euch Abbruchbedingungen für das Sekantenverfahren (und weiß auch noch wie man die programmieren kann?) |
Re: Sekantenverfahren programmieren
Wir haben mittlerweile (antwortet ja keiner... :cry: ) einige Sachen hingekriegt, sind im Moment aber dabei, die erste Ableitung auf Nullstellen zu prüfen. (Ein Abbruchkriterium.)
Die Schleife soll einen bestimmten Bereich überprüfen, ob in diesem Intervall die Funktion irgendwann mal 0 wird (z.B. ob 3x^2 +5=0 möglich ist) Das Problem ist folgendes: Bei einer Schleife kann man (?) doch nur Integer-Werte durchlaufen lassen, wie kann man mit kleineren Abständen prüfen lassen (z.B. 0,1)??? Bitte meldet euch :!: |
Re: Sekantenverfahren programmieren
Servus,
dann benutzt einfach: Schrittweite := Schleifenvariable / 10 mfg Georg Härting |
Re: Sekantenverfahren programmieren
Danke davör, sind noch am ausprobieren, köönt aber klappen :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz