Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Opgave4A;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
- type
- TForm1 = class(TForm)
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- Label4: TLabel;
- Label5: TLabel;
- Label6: TLabel;
- Label7: TLabel;
- Label8: TLabel;
- Label9: TLabel;
- Bereken: TButton;
- Wis: TButton;
- Deelintervallen: TEdit;
- Bovengr: TEdit;
- Ondergr: TEdit;
- Resultaat: TMemo;
- memFout: TMemo;
- procedure WisClick(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure BerekenClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- ondergrens, bovengrens, deelinterval, Fx, Fboven, Fonder, Fnum, Fout, FoutMax: Real;
- stap, i: integer;
- x_rij: array of Real;
- FIarr: array of Real;
- Farr: array of Real;
- FnumIarr: array of Real;
- implementation
- {$R *.dfm}
- function FI(x: real):real;
- begin
- FI := (0.25 * x*x*x*x) - ((5/3) * x*x*x) + (x*x) + 3 * x;
- end;
- function F(x: real):real;
- begin
- F := (x*x*x) - 5 *(x*x) + 2*x + 3;
- end;
- procedure TForm1.BerekenClick(Sender: TObject);
- begin
- ondergrens:=StrtoFloat(ondergr.Text);
- bovengrens:=StrtoFloat(bovengr.Text); // ik krijg steeds invalid floating point value bij kommagetal, weet niet hoe ik het moet fixen
- stap:=StrToInt(DeelIntervallen.Text);
- i:=0;
- SetLength(x_rij, stap + 2);
- SetLength(Farr, stap + 2);
- SetLength(FIarr, stap + 2);
- SetLength(FnumIarr, stap + 2);
- deelinterval:=(bovengrens-ondergrens)/stap;
- Fnum:=0;
- FoutMax:=0;
- while (i <= stap) do
- begin
- x_rij[i] := ondergrens + deelinterval * i;
- Farr[i] := F(x_rij[i]);
- FIarr[i] := FI(x_rij[i]) - FI(ondergrens);
- Fonder := Farr[i];
- Fboven := Farr[i-1];
- FnumIarr[i] := deelinterval * 0.5 * (Fboven + Fonder) + FnumIarr[i-1];
- if i = 0 then FnumIarr[i] := 0;
- Resultaat.lines.add(Format('%10.4f %21.8f %21.8f',[x_rij[i], FIarr[i], FnumIarr[i]]));
- Fout := abs(FIarr[i] - FnumIarr[i]);
- if Fout > FoutMax then FoutMax := Fout;
- i := i + 1;
- end;
- memFout.Text := Format(' %3.8f',[FoutMax]);
- end;
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- Resultaat.Clear;
- memFout.Clear;
- end;
- procedure TForm1.WisClick(Sender: TObject);
- begin
- Resultaat.Clear;
- memFout.Clear;
- end;
- end.
Add Comment
Please, Sign In to add comment