Thema: Delphi Bisektionsverfahren

Einzelnen Beitrag anzeigen

KeyBe

Registriert seit: 22. Nov 2007
Ort: Sachsen
24 Beiträge
 
Delphi 7 Enterprise
 
#1

Bisektionsverfahren

  Alt 8. Dez 2007, 10:50
Hallo!

ich soll für die schule n programm schreiben, das mit dem bisektionsverfahren nullstellen errechnet.
ich hab bisher alles so eingerichtet, dass das programm mit gleichungen bis achten grades rechnen kann.
wie sollte es jedoch anders sein, bekomme ich die prozedure für den "ermitteln"-button nich hin.

bisher sieht das so aus. ich seh selber, was falsch is, aba ich weiß nich, wie ichs anders machn soll, da ich grad erst mit delphi angefangen hab...(also bidde habt verständnis)
Code:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var Hoch1, Hoch2, Hoch3, Hoch4, Hoch5, Hoch6, Hoch7, Hoch8, n, e, a, b, fa, fb, a2, a3, a4, a5, a6, a7, a8, b2, b3, b4, b5, b6, b7, b8, c, fc, c2, c3, c4, c5, c6, c7, c8, d, fd, d2, d3, d4, d5, d6, d7, d8, Betragfd : real;
begin
Hoch1:=strtofloat(edit8.text);
Hoch2:=strtofloat(edit7.text);
Hoch3:=strtofloat(edit6.text);
Hoch4:=strtofloat(edit5.text);
Hoch5:=strtofloat(edit4.text);
Hoch6:=strtofloat(edit3.text);
Hoch7:=strtofloat(edit2.text);
Hoch8:=strtofloat(edit1.text);
n:=strtofloat(edit9.text);
e:=strtofloat(edit10.text);
a:=strtofloat(edit11.text);
b:=strtofloat(edit12.text);
a2:=a * a;
a3:=Power(a, 3);
a4:=Power(a, 4);
a5:=Power(a, 5);
a6:=Power(a, 6);
a7:=Power(a, 7);
a8:=Power(a, 8);
b2:=b * b;
b3:=Power(b, 3);
b4:=Power(b, 4);
b5:=Power(b, 5);
b6:=Power(b, 6);
b7:=Power(b, 7);
b8:=Power(b, 8);
fa:=(Hoch1*a)+(Hoch2*a2)+(Hoch3*a3)+(Hoch4*a4)+(Hoch5*a5)+(Hoch6*a6)+(Hoch7*a7)+(Hoch8*a8)+n;
fb:=(Hoch1*b)+(Hoch2*b2)+(Hoch3*b3)+(Hoch4*b4)+(Hoch5*b5)+(Hoch6*b6)+(Hoch7*b7)+(Hoch8*b8)+n;
if fa = 0 then
edit13.Text:=floattostr(a);
if fb = 0 then
edit13.Text:=floattostr(b);
if (fa <> 0) and (fb <>0) then
begin
if fa > 0 then
begin
repeat
c:=(a+b)/2;
c2:=c * c;
c3:=Power(c, 3);
c4:=Power(c, 4);
c5:=Power(c, 5);
c6:=Power(c, 6);
c7:=Power(c, 7);
c8:=Power(c, 8);
fc:=(Hoch1*c)+(Hoch2*c2)+(Hoch3*c3)+(Hoch4*c4)+(Hoch5*c5)+(Hoch6*c6)+(Hoch7*c7)+(Hoch8*c8)+n;
if fc > 0 then
begin
d:=(a+c)/2;
d2:=d * d;
d3:=Power(d, 3);
d4:=Power(d, 4);
d5:=Power(d, 5);
d6:=Power(d, 6);
d7:=Power(d, 7);
d8:=Power(d, 8);
fd:=(Hoch1*d)+(Hoch2*d2)+(Hoch3*d3)+(Hoch4*d4)+(Hoch5*d5)+(Hoch6*d6)+(Hoch7*d7)+(Hoch8*d8)+n;
if fd > 0 then
Betragfd:=fd
else
Betragfd:=-fd;
end;
until Betragfd < e;
edit13.Text:=floattostr(d)
end;
end;
if fb > 0 then
begin
repeat
c:=(a+b)/2;
c2:=c * c;
c3:=Power(c, 3);
c4:=Power(c, 4);
c5:=Power(c, 5);
c6:=Power(c, 6);
c7:=Power(c, 7);
c8:=Power(c, 8);
fc:=(Hoch1*c)+(Hoch2*c2)+(Hoch3*c3)+(Hoch4*c4)+(Hoch5*c5)+(Hoch6*c6)+(Hoch7*c7)+(Hoch8*c8)+n;
if fc > 0 then
begin
d:=(b+c)/2;
d2:=d * d;
d3:=Power(d, 3);
d4:=Power(d, 4);
d5:=Power(d, 5);
d6:=Power(d, 6);
d7:=Power(d, 7);
d8:=Power(d, 8);
fd:=(Hoch1*d)+(Hoch2*d2)+(Hoch3*d3)+(Hoch4*d4)+(Hoch5*d5)+(Hoch6*d6)+(Hoch7*d7)+(Hoch8*d8)+n;
if fd > 0 then
Betragfd:=fd
else
Betragfd:=-fd;
end;
until Betragfd < e;
edit13.Text:=floattostr(d)
end;
end;
kann mir jmd helfen?

(Hoch1 bis Hoch8 stehn für die zahlen, welche bei der funktionsgleichung vor x bis x^8 stehn und e steht für epsylon...)
Laien halten Computer für unfehlbar.
Anfänger halten sich für unfehlbar und suchen den Fehler beim Computer.
Profis halten den Computer für fast unfehlbar und suchen den Fehler bei sich selbst.
  Mit Zitat antworten Zitat