Difference between revisions of "Polynomial evaluation/fr"
From Free Pascal wiki
Jump to navigationJump to searchm |
m (Fixed syntax highlighting) |
||
(3 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
+ | {{Polynomial_evaluation}} | ||
=Introduction= | =Introduction= | ||
− | Il est souvent utile de pouvoir évaluer un polynôme pour un x donné. La méthode ci-dessous permet | + | |
+ | Il est souvent utile de pouvoir évaluer un polynôme pour un x donné. La méthode ci-dessous permet ce calcul à l'aide de multiplication et d'addition sans utiliser de calcul de puissance. | ||
=Méthode de Horner= | =Méthode de Horner= | ||
Ne sont évalués que des polynômes de degré 1. Par exemple, 3.x^2 + 2.x + 1, est calculé avec une factorisation astucieuse, en effet on peut aussi l'écrire ((3.x +2).x + 1). | Ne sont évalués que des polynômes de degré 1. Par exemple, 3.x^2 + 2.x + 1, est calculé avec une factorisation astucieuse, en effet on peut aussi l'écrire ((3.x +2).x + 1). | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
program PolyTest; | program PolyTest; | ||
Line 48: | Line 50: | ||
End | End | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
=Voir aussi= | =Voir aussi= | ||
− | + | ||
+ | [https://fr.wikipedia.org/wiki/M%C3%A9thode_de_Ruffini-Horner| Méthode de Horner (wiki)] |
Latest revision as of 08:37, 23 February 2020
│
English (en) │
français (fr) │
Introduction
Il est souvent utile de pouvoir évaluer un polynôme pour un x donné. La méthode ci-dessous permet ce calcul à l'aide de multiplication et d'addition sans utiliser de calcul de puissance.
Méthode de Horner
Ne sont évalués que des polynômes de degré 1. Par exemple, 3.x^2 + 2.x + 1, est calculé avec une factorisation astucieuse, en effet on peut aussi l'écrire ((3.x +2).x + 1).
program PolyTest;
type
// le rang du coefficient dans le tableau est égal à son degré
TDegres = 0..10;
TPolynome = record
Deg: TDegres;
Coefs: array[TDegres] of Double;
end;
function PolyEval(const aPoly: TPolynome; X: Double): Double;
var
i: TDegres;
begin
with aPoly do
begin
Result := 0;
for i := Deg downto Low(Coefs) do
Result := Result * X + Coefs[i];
end;
End;
(* Exemples *)
var
P: TPolynome;
begin
P.Deg := 2;
P.Coefs[2] := 3;
P.Coefs[1] := 2;
P.Coefs[0] := 1;
(* l'idéal est d initialiser les autres coeffs avec des 0 *)
WriteLn('P(',7,') = ', PolyEval(7):10:2);
P.Deg := 0;
P.Coefs[2] := 0;
P.Coefs[1] := 0;
P.Coefs[0] := 1;
(* l'idéal est d initialiser les autres coeffs avec des 0 *)
WriteLn('P(',7,') = ', PolyEval(7):10:2);
End