Enseignement > Programmation orientée objet > Java > Travaux Pratiques > TP N°7 - Polynomes  

 TP n°9 - Polynomes

1. Classe Monome

Un monome est une fonction mathméathique qui s'écrit sous la forme axn où a est une nombre réel et n un nombre entier.
Ecrire une classe Monome permettant de modéliser de telles fonctions mathémathiques. Encapsuler correctement cette classe.
Ne pas utiliser la fonction statique Math.pow(double,double) qui est très gourmande en temps CPU, mais écrire une méthode statique puissance récursive en la définition suivante :
xn=x*xn-1
x0=1

Ecrire une fonction calcul(double x) permettant de calculer la valeur du monome pour une valeur de x passée en paramètre.
Redéfinir la méthode equals : 2 monomes sont égaux si a et n sont égaux
Redéfinir la méthode compareTo : les monomes sont triés par ordre croissant de n, puis en cas d'égalité selon la valeur 
Prendre soin de redéfinir la méthode toString.

2. Classe Polynome

Un polynome est une somme de monomes. Exemple : 3x2 - 4x3 + x4
Ecrire une classe polynome sous la forme d'une collection de Monome.
Reecrire la méthode add permettant d'ajouter un monome à la collection. En effet, il faut éviter d'avoir 2 monomes de même degré dans le polynome. Si on ajoute un monome à un polynome qui contient déja un monome de même degré n, on fera la somme des coefficients a.
Ecrire une fonction calcul(double x) permettant de calculer la valeur du polynome pour une valeur de x passée en paramètre.
Ecrire une méthode permettant de sauvegarder un polynome dans un fichier dont on précise le nom et une autre permettant de relire ce type de fichier pour créer un polynome.
Prendre soin de redéfinir de manière judicieuse la méthode toString.

3. Programme principal

Ecrire un programme proposant un menu permettant
1. Afficher le polynome
2. Ajouter un monome
3. Calculer la valeur du polynome pour une valeur x
4. Sauvegarder le polynome dans un fichier
5. Relire un polynome depuis un fichier

4. Optimisation

 

La méthode de Horner consiste à considérer un polynome comme suit :
P(x_0) = ((...((a_nx_0 + a_{n-1})x_0 + a_{n-2})x_0 + ... ) x_0+ a_1)x_0 + a_0\,
Avec cette méthode, il est possible d'améliorer la vitesse de calcul en évitant de répéter le calcul de xn.