Supposons que j'ai un polynôme de troisième degré avec des racines à -2, 1 et 3, comment puis-je trouver son équation? Est-ce que cela résolvable avec La fonction peut aimer et je veux résoudre Pendant ce que le polynôme est en cinquième degré? P > Mise à jour: strong> p> Merci pour les réponses. Il semble que l'utilisation de la formule de Vieta a simplifié la question. Mais parfois, le nombre de racines pour un polynôme de n-ème degré ne correspond pas à N. Par exemple, un polynôme de cinquième degré peut être exprimé comme suit: p> si Alors, est-ce encore résolu? p> S'il vous plaît voir ma solution ci-dessous pour cette mise à jour em> p> p> p> symboly code> ou peut-être qu'il existe d'autres manières avec Python en général?
A code>,
B Code>,
C code>,
d code>. p>
5 Réponses :
Utiliser sortie: p> symboly code> pour construire un polynôme à partir des racines, puis obtenir les coefficients:
Poly(x**7 - 20*x**6 + 154*x**5 - 560*x**4 + 889*x**3 - 140*x**2 - 1044*x + 720, x, domain='ZZ')
[1, -20, 154, -560, 889, -140, -1044, 720]
def polyn(*roots): def _polyn(x): val = 1 for r in roots: val *= x - r return val return _polyn f3 = polyn(-2, 1, 2) for i in range(-10, 11): assert f(i) == f3(i) # Above code passed on Win 10, 3.7.2
Il y a un ensemble de fonctions de base Les valeurs sur une plage de valeurs peuvent également être évaluées avec : p> poly code> dans
numpy code>:
Cela devrait faire l'affaire pour un polynôme à n'importe quel degré. Le symbole d'astérisque permet de tout nombre d'arguments.
def c_find(*roots): from sympy import Symbol x = Symbol('x') whole =1 for root in roots: whole *=(x-root) print('f(x) =',whole.expand())
Merci pour la solution, mais si vous avez un polynôme de cinquième degré mais seulement avec trois racines?
Si vous voulez un polynôme au 5ème degré avec seulement trois racines, ajoutez deux zéros! Pour un polynôme au nième degré avec des racines numériques X Ajoutez (n-x) zéros aux racines transmises à la fonction. Bonne question
De cette façon, je pense que vous ajoutez à une racine de 0
Ouais, whoops - tu as raison. Vous devez si vous êtes des racines 3,4,5 Vous auriez besoin de deux autres numéros supplémentaires à l'argument transmis à la fonction et que ces deux chiffres devraient provenir des trois racines que vous connaissez déjà.
Si je dois transmettre une liste comme argument dans votre fonction. Que dois-je ajouter? Je reçois typeError: type (s) d'opérande non pris en charge pour -: «Symbole» et 'Liste' Code>.
Hmm, je ne sais pas pourquoi c'est. Tant que vous définissez la fonction exactement comme indiqué ci-dessus, cela devrait être bien. Pour appeler la fonction Tout ce que vous faites est de type C_Find () remplissant la parenthèse avec toutes vos racines séparées par des virgules. Je couronne Python 3.7. Cela pourrait être quelque chose de spécifique à votre construction et je jouerais avec elle pour voir si vous pouvez trouver l'erreur.
Désolé pour ça. J'utilise réellement une liste de liste et j'ai essayé de boucler correctement pour le transmettre comme l'argumentaire de la fonction. Cela me donne un stratagème de haut degré car je me trompe mal. Je ne comprends pas la bonne façon.
Il suffit de poster ma réponse et de l'avoir enfin. Merci pour votre fonction.
Merci pour toutes les réponses. Après avoir joué avec vos solutions. Pour ma mise à jour forte> avec des racines répétées, j'ai proposé la solution suivante: par exemple: p> Retournera: p>
Je voudrais juste prendre l'approche mathématique et utiliser les formules de Vieta. Si un polynôme N degré N est raconté A, B, C, D ..., alors le polynôme peut être représenté comme c (X-A) (XB) (XC) (XD) ..., avec C étant une constante inconnue . C est là parce que vous pouvez multiplier un polynôme par tout et les racines resteront les mêmes, de sorte que vous ne savez pas ce que cela a été multiplié par.
@Primusa merci, je vais essayer et je regarde ce approche maintenant
@Primusa désolé je ne comprends pas tout à fait. J'ai lu votre solution, mais une liste de 7 racines a en effet renvoyé le polynôme de 7e degré. Par exemple, si j'ai une liste de racine4, 2, 5, comment pourrais-je obtenir un polynôme de 5ème degré? Est-ce que je manque quelque chose? (BTW, je lis toujours toutes les réponses et je lesesse)
Vous devez savoir combien de racines il y a, sinon vous ne pouvez pas connaître le maquillage exact du polynôme. Disons que vous avez un polynôme de 5ème degré et vous savez qu'il y a une double racine à 4, une double racine à 2, et une racine à 5. Vous pouvez transmettre [4, 4, 2, 2, 5] pour obtenir le polynôme résultant. Si vous savez simplement [4, 2, 5] et que c'est un 5ème degré, ce n'est pas assez d'informations pour faire un polynôme. Il peut être [4, 4, 4, 2, 5], ou [4, 2, 2, 5, 5] ... etc.