Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Sekantenverfahren programmieren (https://www.delphipraxis.net/39959-sekantenverfahren-programmieren.html)

Anja87 9. Feb 2005 15:14


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:

sakura 9. Feb 2005 15:15

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:...

Christian S. 9. Feb 2005 15:20

Re: Sekantenverfahren programmieren
 
Zitat:

Zitat von sakura
wie weit seid ihr denn schon gekommen.

zwei Seiten :roll:

sakura 9. Feb 2005 15:21

Re: Sekantenverfahren programmieren
 
Zitat:

Zitat von Christian S.
Zitat:

Zitat von sakura
wie weit seid ihr denn schon gekommen.

zwei Seiten :roll:

:lol: Und warum hat man da so schön vorbildlich gefragt und bei uns nicht :cry:

...:cat:...

Anja87 9. Feb 2005 15:27

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:
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.
Helft uns :roteyes: , wir sehen nicht mehr durch.

sakura 9. Feb 2005 15:29

Re: Sekantenverfahren programmieren
 
Zitat:

Zitat von Anja87
Zur Delphi Version: Delphi 7.0 Personal

Dann ändere bitte den ersten Beitrag und markiere die RadioBox Delphi Win32

Zitat:

Zitat von Anja87
Zur Frage:
Wir wollten es kurz und schmerzlos fragen.

Ja, aber damit konnte keiner das Problem einsehen :zwinker: Jetzt ists schon viel besser.

...:cat:...

Anja87 10. Feb 2005 08:03

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?)

Anja87 10. Feb 2005 09:59

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 :!:

stefangeorg 10. Feb 2005 10:08

Re: Sekantenverfahren programmieren
 
Servus,

dann benutzt einfach: Schrittweite := Schleifenvariable / 10

mfg

Georg Härting

Anja87 10. Feb 2005 10:34

Re: Sekantenverfahren programmieren
 
Danke davör, sind noch am ausprobieren, köönt aber klappen :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:14 Uhr.
Seite 1 von 2  1 2   

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf