1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
// Type des fonctions du genre y = f(x) à passer en tant que paramètre à la
// procedure de tracé des courbes :
type tFonc = function (X : Extended; Coeffs : array of Extended) : Extended;
var FF: tFonc;
// Exemples de fonctions
function ynum1(x : Extended; Coeffs : array of Extended) : Extended;
// équations polynomiales de degré N
// ex : y1 = a0*x^5 + a1*x^4 + a2*x^3 + a3*x² + a4*x + a5
var i : integer; degre : integer;
begin Result:=0; degre:=length(Coeffs) - 1;
for i:=0 to High(Coeffs)
do Result:=Result + Coeffs[i]*Power(X, degre - i);
end;
function ynum2(x : Extended; Coeffs : array of Extended) : Extended;
// ton ex : y2 = (2*x*x+5)/(x*x*x+5)
begin Result:=(Coeffs[0]*x*x + Coeffs[1]*)/(x*x*x+Coeffs[2]); end;
function ynum22(x : Extended; Coeffs : array of Extended) : Extended;
// ex : y22 = a0.[e^-x].sin(a1*x)
begin Result:=Coeffs[0]*Exp(-x)*sin(Coeffs[1]*x); end;
procedure tForm1.TraceMesCourbes( Fonction : tFonc; imageCible : tImage; DeX,JusquaX : Extended; coulCourbe : tColor);
begin ...
end;
procedure tForm1.RadioButton1Click(Sender: TObject);
begin // Selon la fonction choisie :
if radioButton1.checked then FF:=ynum1 else
if radioButton2.checked then FF:=ynum2 else
....
if radioButton22.checked then FF:=ynum22;
TraceMesCourbes( FF, image1, DeX,JusquaX, clRed );
end;
// Ce canvas de code suppose qu'au moment du RadioButton1Click les valeurs
// de DeX et de JusquaX (intervalle du tracé de courbe) ainsi que les valeurs
// des coefficients (Coeffs : array of Extended) à utiliser par la fonction
// y= f(x) visée aient été initialisées ailleurs. |
Partager