Hi,...
mal ein kleines Programm zur Berechnung von Nullstellen. Ihr werdet sehen die Gleichung ist doch etwas komplizierter. Man kann gerne etwas damit rumspielen, beispielsweise die Gleichung mal ändern oder die Genauigkeit, etc
[code:1]procedure TForm1.btn1Click(Sender: TObject);
var fwl, fwr , fwk, fwk1, xl , xr, nst, xm, fm: real;
t,k, n:integer;
existnst: boolean;
begin
existnst := false;
for k:=-1000 to 1000 do
begin
fwk:=2*k*k*k-2*k+0.75;
fwk1:=2*(k+1)*(k+1)*(k+1)-2*(k+1)+0.75;
if fwk * fwk1 <= 0 then
begin
fwl := fwk;
fwr := fwk1;
xl := k;
xr := k+1;
existnst := true;
end;
end;
if existnst then
begin
if fwl = 0 then nst := xl
else if fwr = 0 then nst := xr
else
begin
repeat
n := n+1;
xm := (xl + xr) / 2;
fm := 2*xm*xm*xm-2*xm+0.75;
if fm * fwl < 0 then xr := xm;
if fm * fwr < 0 then xl := xm;
until abs( fm ) < ( 1 / 1000 );
nst := xm;
end;
edit1.text := floattostr( nst );
showmessage (inttostr(n));
end;
end;
end.[/code:1]
mfg KC
mal ein kleines Programm zur Berechnung von Nullstellen. Ihr werdet sehen die Gleichung ist doch etwas komplizierter. Man kann gerne etwas damit rumspielen, beispielsweise die Gleichung mal ändern oder die Genauigkeit, etc
[code:1]procedure TForm1.btn1Click(Sender: TObject);
var fwl, fwr , fwk, fwk1, xl , xr, nst, xm, fm: real;
t,k, n:integer;
existnst: boolean;
begin
existnst := false;
for k:=-1000 to 1000 do
begin
fwk:=2*k*k*k-2*k+0.75;
fwk1:=2*(k+1)*(k+1)*(k+1)-2*(k+1)+0.75;
if fwk * fwk1 <= 0 then
begin
fwl := fwk;
fwr := fwk1;
xl := k;
xr := k+1;
existnst := true;
end;
end;
if existnst then
begin
if fwl = 0 then nst := xl
else if fwr = 0 then nst := xr
else
begin
repeat
n := n+1;
xm := (xl + xr) / 2;
fm := 2*xm*xm*xm-2*xm+0.75;
if fm * fwl < 0 then xr := xm;
if fm * fwr < 0 then xl := xm;
until abs( fm ) < ( 1 / 1000 );
nst := xm;
end;
edit1.text := floattostr( nst );
showmessage (inttostr(n));
end;
end;
end.[/code:1]
mfg KC