IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

fonction factor de sympy


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 30
    Points : 31
    Points
    31
    Par défaut fonction factor de sympy
    Bonjour,
    Je souhaite factoriser des polynômes avec la fonction factor de sympy.
    Pour x^4-1 j'obtiens la bonne factorisation, par contre pour x^4+1 cela ne fonctionne pas.
    Je suppose que c'est lié au type des racines.
    Mais, malgré la lecture de l'aide je n'arrive pas à contourner le problème.
    Merci d'avance pour votre aide.

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Pour x^4-1 j'obtiens la bonne factorisation, par contre pour x^4+1 cela ne fonctionne pas.
    Une factorisation aux facteurs irréductibles se fait par rapport ou par référence au certain corps de nombres soujaçant entendu. Par conséquence, si j'entends bien, vous voulez factoriser jusqu'aux facteurs de 'polynôme' au premier ordre et c'est bien une factorisation bien spéciale ... Si quelqu'un se contente de s'arrêter au milieu, ce n'est pas nécessairement qu'il n'a pas réussit à faire la factorisation, ou la méthode factor() ne fonctionne pas - on parle d'un différent objectif, c'est tout.

    Pour factoriser x^4+1 dans ce sens précis, il faut faire deux extensions successives à partir du corps de nombres rationnals qui est le point de départ pour sympy.factor() sans qualifications en options. Voici comment pour y arriver.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    import sympy
    x, y, z=sympy.symbols('x, y, z')
    y=x**4+1
    z=sympy.factor(y, extension=[sympy.I, sympy.sqrt(2)])
    print(z)
    #ou une autre façon d'écrire bien équivalente
    z=sympy.factor(y, extension=[sympy.sqrt(-1), sympy.sqrt(2)])
    print(z)
    Voilà !

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2016
    Messages : 30
    Points : 31
    Points
    31
    Par défaut
    Merci beaucoup votre réponse est très claire.
    Si j'ai bien compris, le corps de départ est celui des rationnels et avec le paramètre extension on peut obtenir une extension du corps par exemple Q[sqrt(2)].
    Par contre peut-on travailler dans R ?
    Sachant qu'i s'agira bien sûr de flottant et non de réel.
    Je pensait que le paramètre domain me permettait de le faire, mais visiblement cela de fonctionne pas.

  4. #4
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Par contre peut-on travailler dans R ?
    Dans ce cas, je vois mal comment peut-on faire symboliquement, sympy.factor() aidant ... La fonction factor() par du corps de nombres rationnels et qu'elle permet de faire des extensions (donc, forcément dénombrable). Or, on n'arriverait pas au corps réel qui est indénombrable ... Une autre façon de dire est que Q[X] n'a pas R comme du corps de décomposition. Bref ...

    Je peux apercevoir ce que vous voulez dire de partir de R: je pense vous voulez dire qu'on part du théoreme fondamental d'algebre, et on veut trouver les racines plûtot du polynôme du quartième degré montré au départ: là au lieu de sympy, numpy peut porter secours.

    Visiblement évident, on peut représenter le polynôme x^4+1 par ses coefficients dans un tableau de nombres, ici de cinq éléments [1, 0, 0, 0, 1]. A partir de là, on fait appeler la méthode roots de numpy, comme ça.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import numpy
    coef=[1,0,0,0,1]
    r=numpy.roots(coef)
    print(r)
    Mais ça c'est de numpy 101 et je crains que vous savez très bien déjà Donc, je m'en doute si c'est nécessaire pour moi d'étaler tout ça. Voilà !

Discussions similaires

  1. fonction lamdify de sympy
    Par dveissi dans le forum Calcul scientifique
    Réponses: 4
    Dernier message: 11/07/2019, 17h26
  2. Réponses: 6
    Dernier message: 30/03/2015, 15h20
  3. [NumPy ou symPy] Tableau de valeurs d'une fonction
    Par rambc dans le forum Calcul scientifique
    Réponses: 10
    Dernier message: 29/11/2008, 13h41
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo