ich habe da ein Problem, und zwar: Ich möchte ein Programm schreiben, dass mithilfe des Newtonverfahrens (falls jemand wissen möchte, was es ist, hier ein Link: https://www.mathematik.de/ger/fragenant ... ahren.html" onclick="window.open(this.href);return false;) die Nullstelle einer mathematischen Funktion berechnet. Ich habe dafür schonmal einen Quellcode vorgefertigt:
Code: Alles auswählen
unit NewtonverfahrenProgramm;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
ExtCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
funktion2: TEdit;
funktion1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Memo1: TMemo;
Panel1: TPanel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Memo1Change(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
function f(x:real):real;
function f_1_Abl(x:real):real;
end;
var x,x0:real;i,anz:integer;
Form1: TForm1;
implementation
{$R *.lfm}
function TForm1.f(x:extended):extended;
begin
Result:=x*x*x-9;
end;
function TForm1.f_1_Abl(x:real):real;
begin
Result:=3*x*x;
end;
procedure TForm1.Button1Click(Sender: TObject);
var a: array [1..1,1..32000] of String;
begin
x0:= strtofloat (funktion1.Text);
anz:= strtoint (funktion2.Text);
for i:=1 to (anz) do
begin
x := (x0)-(f(x0)/f_1_Abl(x0));
x0:=x;
a[1,i]:=floattostr (x0)
end;
for i:=1 to (anz-1) do
begin
Memo1.lines.add(a[1,i]);
end;
Label1.Caption:= floattostr (x0);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
funktion1.Text:= '';
funktion2.Text:= '';
x:=0;x0:=0;
for i:=1 to (anz) do begin
Memo1.lines[i]:= ''
end;
i:=0;anz:=0;
Label1.Caption:= 'Näherungswert'
end;
procedure TForm1.Memo1Change(Sender: TObject);
begin
end;
end.
Code: Alles auswählen
function TForm1.f(x:real):real;
begin
Result:=x*x*x-9;
end;
function TForm1.f_1_Abl(x:real):real;
begin
Result:=3*x*x;
end;
Hat einer eine Idee, wie man es machen könnte ?
Ich sag schonmal Danke für jeden Comment oder Lösungsvorschlag.

masterm