unit Unit7; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Grafisch, Contours; type TForm1 = class(TForm) Image1: TImage; procedure Toetsdruk(Sender: TObject; var Key: Char); procedure Scheppen(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} function macht(x,p : double) : double; begin macht := exp(ln(x)*p); end; procedure Schetsen(eps : double); const grens : integer = 75; var i,j,k,g,ii,jj : integer; x,y,f : double; min,max,nivo : double; bewaar : array of array of double; O : Omtrekken; begin ClearDevice; min := 10; max := -10; SetLength(bewaar,Wijd,Hoog); ii := 0; jj := 0; for j := 0 to Hoog-1 do begin y := j2y(j); for i := 0 to Wijd-1 do begin x := i2x(i); f := x/macht(4*(sqr(y)*y+1),1/3) + y/(x+1) + 1/(x+y) - sqrt(9/4+sqr(x-y)/(x*y+x+y)); if max < f then max := f; if min > f then begin min := f; ii := i; jj := j; end; bewaar[i,j] := f; end; end; Writeln(min,' < f <',max); Writeln('f(',i2x(ii),',',j2y(jj),') = ',min); O := Omtrekken.Create; O.Scherm := Form1.Image1.Picture.Bitmap; O.afmetingen(Wijd,Hoog); for j := 0 to Hoog-1 do begin for i := 0 to Wijd-1 do begin Form1.Image1.Canvas.Pixels[i,j] := Grijs((bewaar[i,j]-min)/(max-min)); if bewaar[i,j] < eps then Form1.Image1.Canvas.Pixels[i,j] := clBlue; end; end; for g := 0 to grens do begin nivo := min + (g/grens)*(max-min); for j := 0 to Hoog-1 do begin for i := 0 to Wijd-1 do begin O.funktie[i,j] := bewaar[i,j]-nivo; end; end; O.Rondom(false); for k := 0 to O.Aantal do O.Schetsen(k,Grijs((max-nivo)/(max-min)),2); end; end; procedure TForm1.Toetsdruk(Sender: TObject; var Key: Char); begin Exit; end; procedure TForm1.Scheppen(Sender: TObject); begin xmin := 0; xmax := 2; ymin := 1; ymax := 2; TV(Form1.Image1); ClearDevice; Schetsen(0.001); Form1.Image1.Picture.SaveToFile('jensen.bmp'); end; end.