Robię właśnie program wyliczający deltę, miejsca zerowe funkcji kwadratowej, wyświetla on wynik w Memo, i zapisuje go do pliku.
Chce jeszcze zrobić aby z podanych danych generował się wykres funkcji, ale nie pamiętam jak to powinno być.
Robiliśmy coś takiego na jednej lekcji w tamtym roku, ale jedyne co pamiętam to to że chyba ten wykres nie był linią ciągłą tylko zbiorem punktów, ale mniejsza z tym.
CODE
procedure TForm1.ComboBox1Change(Sender: TObject);
var i: Integer;
begin
Image1.Canvas.Pen.Color := clBlack;
// rysowanie osi poziomej
Image1.Canvas.MoveTo(0,Image1.Height div 2);
Image1.Canvas.LineTo(Image1.Width,Image1.Height div 2);
// rysowanie osi pionowej
Image1.Canvas.MoveTo(Image1.Width div 2,0);
Image1.Canvas.LineTo(Image1.Width div 2,Image1.Height);
Image1.Canvas.Pen.Color := clRed;
Image1.Canvas.MoveTo(0,Image1.Height div 2);
for i := 0 to Image1.Width do
begin
// rysowanie sinusa
if (ComboBox1.ItemIndex = 0) then
Image1.Canvas.LineTo(i, (Image1.Height div 2) + round( 100*sin(i*2*pi/Image1.Width) ) );
// rysowanie cosinus
if (ComboBox1.ItemIndex = 1) then
Image1.Canvas.LineTo(i, (Image1.Height div 2) + round( 100*cos(i*2*pi/Image1.Width) ) );
// rysowanie f. kwadrayowej
if (ComboBox1.ItemIndex = 2) then
Image1.Canvas.LineTo(i, (Image1.Height div 2) + round( 100*sqrt(i*2*pi/Image1.Width) ) );
end;
Z synusem czy kosinusem jest bardzo prosto ponieważ wiadomo że jego zakres jest od -1 do 1 zaś dziedzinę można wybrać dowolnie w przykładzie powyżej jest to od 0 do 2*Pi.
Z funkcją kwadratową nie jest to takie proste ale przy ustaleniu min i max dla każdej osi - nie ma problemu.
var W,H,I,V:Integer;Hmin=-7;Hmax=7;Wmin=-3;Wmax=4;A=1;B=-1;C=-6;scale(Bmin,Bmax:Integer;Amin,Amax,A:Double):Integer;begin:=Round((Bmax*(A-Amin)+Bmin*(Amax-A))/(Amax-Amin));end;unscale(Bmin,Bmax:Double;Amin,Amax,A:Integer):Double;begin:=(Bmax*(A-Amin)+Bmin*(Amax-A))/(Amax-Amin);end;fun(X:Double):Double;begin:=(A*X+B)*X+C;end;begin:=Image1.Width;H:=Image1.Height;with Image1.Canvas dobegin.Color:=clBlack;V:=scale(H,0,Hmin,Hmax,0);MoveTo(0,V);LineTo(W,V);V:=scale(0,W,Wmin,Wmax,0);MoveTo(V,0);LineTo(V,H);Pen.Color:=clRed;