Delphi-PRAXiS

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 14: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 14: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 14:20

Re: Sekantenverfahren programmieren
 
Zitat:

Zitat von sakura
wie weit seid ihr denn schon gekommen.

zwei Seiten :roll:

sakura 9. Feb 2005 14: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 14: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 14: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 07: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 08: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 09:08

Re: Sekantenverfahren programmieren
 
Servus,

dann benutzt einfach: Schrittweite := Schleifenvariable / 10

mfg

Georg Härting

Anja87 10. Feb 2005 09:34

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

Anja87 10. Feb 2005 09:40

Re: Sekantenverfahren programmieren
 
Ok, hier das aktuellste Problem :gruebel: :

for n:= Ax to Bx do
....

wobei Ax und bx vom Typ Real sind.

Eigentlich sollte n nun in 0,1-Schritten laufen, wie geht das mit Real??

stefangeorg 10. Feb 2005 09:51

Re: Sekantenverfahren programmieren
 
Servus,

Delphi-Quellcode:
     var dCount : Double;
     ...
     dCount := Ax;
     repeat
          // Rechnen
          dCount := dCount + 0.1;
     until dCount > Bx;
mfg
Georg Härting

Anja87 10. Feb 2005 10:35

Re: Sekantenverfahren programmieren
 
Wie kann man eine Schleife abbrechen, wenn eine bestimmte Bedingung erfüllt ist??

Manne 10. Feb 2005 10:37

Re: Sekantenverfahren programmieren
 
mit
Delphi-Quellcode:
exit

tr909 10. Feb 2005 10:38

Re: Sekantenverfahren programmieren
 
:gruebel:

Anja87 10. Feb 2005 10:43

Re: Sekantenverfahren programmieren
 
Danke, läuft schon!! :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 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