Java Polynômes
Fermé
L3arning
Messages postés
5
Date d'inscription
vendredi 28 octobre 2022
Statut
Membre
Dernière intervention
1 novembre 2022
-
31 oct. 2022 à 21:54
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 1 nov. 2022 à 07:23
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 1 nov. 2022 à 07:23
A voir également:
- Java Polynômes
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel touche ✓ - Forum Logiciels
- Java bible - Forum Téléchargement
2 réponses
KX
Messages postés
16752
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 août 2024
3 019
31 oct. 2022 à 22:47
31 oct. 2022 à 22:47
Bonjour,
Tu peux faire ton calcul récursivement en appelant la même méthode sur des String de plus en plus petit auxquels tu appliqueras de moins en moins de calculs.
Exemple non testé (je code sur mon téléphone)
public double eval(String polynome, double x) { System.out.println(polynome); String[] plus = polynome.split("+"); if (plus.length > 1) { double result = 0; for (String s : plus) result += éval(s, x); return result; } String[] point = polynome.split("\\."); if (point.length > 1) { double result = 1; for (String s : point) result *= eval(s, x); return result; } String[] pow = polynome.split("\\^"); if (pow.length > 1) { return Math.pow(x, eval(pow[1])); } return Double.parseDouble(polynome); }
Je ne connais pas suffisamment Java pour te donner une réponse précise, mais j'ai déjà fait des choses semblables en Python.
C'est OK de faire des split sur le "+" au départ. Mais tu dois faire un split sur "." sur "chaque" terme de ton polynôme.
Et faire un split sur "^" sur chaque deuxième élément de tes termes.
En fait, puisque tu n'as en principe qu'une seule variable ("x"), tu n'en a pas vraiment besoin.
Tu auras une liste de tuples (coefficient, exposant), qqui s'évalue normalement assez facilement.
1 nov. 2022 à 00:11
Je crois que le programme marche mais moi je veux passer de :
etape 1 = 5.x^5+4.x^3+20.x^2+x+1
split par + = 5.x^5 4.x^3 20.x^2 x 1
split par . = 5 x^5 4 x^3 20 x^2 x 1
split par ^ = ...
Et après je dois trouvé un moyen de calculer le polynôme de n'importe quel ordre. Merci.
1 nov. 2022 à 07:23
C'est bien de vouloir tout spliter, mais si derrière tu n'arrives pas à faire ton calcul ça sert à quoi ?
Pour obtenir un résultat il faut remplacer x par sa valeur, or mathématiquement l'opération puissance est prioritaire, puis vient la multiplication et enfin la somme.
Alors certes ton traitement doit faire le cheminement inverse et commencer par le split sur +, mais tu ne pourras pas faire le calcul de la somme tant que tu n'auras pas calculé chacun des termes de la somme.
Donc pour moi l'algorithme devrait plutôt faire comme ça :
On ne fait pas tous les splits en premier, mais on va droit au calcul, si bien que lorsque l'on commence le split de "4.x^3" on connaît déjà la valeur de "5.x^5" pour pouvoir les sommer avant d'évaluer "20.x^2" etc.
Remarque : dans le cas général il faudrait aussi penser à gérer les valeurs négatives d'un polynôme.