Einzelnen Beitrag anzeigen

Anja87

Registriert seit: 9. Feb 2005
Ort: Prenzlau
9 Beiträge
 
#5

Re: Sekantenverfahren programmieren

  Alt 9. Feb 2005, 14:27
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 , wir sehen nicht mehr durch.
  Mit Zitat antworten Zitat