Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Manipulation de fraction rationnelle

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Polynômes et fractions rationnelles
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
bendesarts



Inscrit le: 27 Fév 2009
Messages: 234

MessagePosté le: 28 Sep 2010 16:39    Sujet du message: Manipulation de fraction rationnelle Répondre en citant

Bonjour,

En physique ou en automatique, on utilise souvent des fonctions de transfert. Afin d'étudier ces fonctions de transfert, il faut les mettre sous forme canonique.
Pour celà, il faut généralement créer un 1 au dénominateur puis faire une succession de changement de variables.

Code:
                                          6     2  2       
                        0.5000000000 omega  Ct Y  m         
                 -------------------------------------------
                  2             2          4  2     2      2
                 k  - 2. k omega  m + omega  m  + Ct  omega
> .5000000000*omega^6*Ct*Y^2*m^2/k^2*(k^2/(k^2-2.*k*omega^2*m+omega^4*m^2+Ct^2*omega^2));
                                          6     2  2       
                        0.5000000000 omega  Ct Y  m         
                 -------------------------------------------
                  2             2          4  2     2      2
                 k  - 2. k omega  m + omega  m  + Ct  omega


Aussi, pour mettre ma fraction rationnelle sous une forme qui me convient (forme canonique), j'aimerais diviser le numérateur et le dénominateur de ma fonction de transfert par k^2 pour faire apparaitre ma pulsation propre w^2=k/m.

Donc, la question est la suivante comme je peux manipuler ma fraction rationnel pour la mettre sous forme canonique?

Une fois que j'aurais pu mettre sous la bonne forme pour aussi faire des changements de variables. Je devrais y arriver avec la fonction algsubs

Si mon message manque un peu de clarté, n'hésitez pas à me préciser les points qui ne font pas.

Je vous remercie d'avance pour votre aide.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
bendesarts



Inscrit le: 27 Fév 2009
Messages: 234

MessagePosté le: 28 Sep 2010 23:05    Sujet du message: Répondre en citant

Afin de clarifier ma demande, voilà ce que j'aimerais arriver à faire en maple. Il s'agit de manipulations sur une fraction rationnelle visant à mettre cette fraction rationnelle sous forme canonique.

Voici les calculs analytiques fait à la main que j'aimerais réaliser avec maple.





Merci d'avance pour votre aide
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 632

MessagePosté le: 29 Sep 2010 6:10    Sujet du message: Répondre en citant

Bonjour,

Pour le début, ça se passe bien, mais à la fin je n'obtiens pas tout à fait le résultat escompté.

Code:

> P[tot]:=0.5*omega^6*Ct*Y^2*m^2/k^2*(k^2/(k^2-2.*k*omega^2*m+omega^4*m^2+Ct^2*omega^2));

                                    6     2  2           

                           0.5 omega  Ct Y  m             

     P[tot] := -------------------------------------------

                2             2          4  2     2      2

               k  - 2. k omega  m + omega  m  + Ct  omega

> num:=numer(P[tot])/k^2; den:=expand(denom(P[tot])/k^2);

                                   6     2  2

                          0.5 omega  Ct Y  m

                   num := -------------------

                                   2         

                                  k         

                           2          4  2     2      2

                   2. omega  m   omega  m    Ct  omega

        den := 1 - ----------- + --------- + ----------

                        k            2            2   

                                    k            k     

> num:=algsubs(m=k/omega[n]^2,num); den:=expand(algsubs(m/k=1/omega[n]^2,den));

                                    6     2

                           0.5 omega  Ct Y

                    num := ----------------

                                      4   

                              omega[n]     

                        4                2     2      2

                1. omega         2. omega    Ct  omega

         den := --------- + 1. - --------- + ----------

                        4                2        2   

                omega[n]         omega[n]        k     

> canonique:=proc(P,x)

> local a,b,c:

> a:=coeff(P,x,4): b:=coeff(P,x,2): c:=coeff(P,x,0):

> a*( (x^2+b/(2*a))^2+(4*a*c-b^2)/(4*a^2) )

> end proc;

         canonique := proc(P, x)

         local a, b, c;

           a := coeff(P, x, 4);

           b := coeff(P, x, 2);

           c := coeff(P, x, 0);

           a*(x^2 + b/(2*a)^2 + (4*a*c - b^2)/(4*a^2))

         end proc

> canonique(2*x^4+3*x^2+17/8,x);

>

                                  2   

                          / 2   3\     

                        2 |x  + -|  + 1

                          \     4/     

> den:=canonique(den,omega);

                 /   /                                                     2

                 |   |/                      /                2\          \

           1     |   ||     2                |     2.       Ct |         4|

den := --------- |1. ||omega  + 0.5000000000 |- --------- + ---| omega[n] |

               4 |   ||                      |          2    2 |          |

       omega[n]  \   \\                      \  omega[n]    k  /          /



                  /                               2\          \\

                  |            /                2\ |          ||

                  |   4.       |     2.       Ct | |         8||

   + 0.2500000000 |--------- - |- --------- + ---| | omega[n] ||

                  |        4   |          2    2 | |          ||

                  \omega[n]    \  omega[n]    k  / /          //

> P[tot]:=num/den;

                                     /

                                     |

          /                  6     2\|

P[tot] := \0.5000000000 omega  Ct Y /|

                                     |

                                     \



                                                       2

  /                      /                2\          \

  |     2                |     2.       Ct |         4|

  |omega  + 0.5000000000 |- --------- + ---| omega[n] |

  |                      |          2    2 |          |

  \                      \  omega[n]    k  /          /



                  /                               2\          \

                  |            /                2\ |          |

                  |   4.       |     2.       Ct | |         8|

   + 0.2500000000 |--------- - |- --------- + ---| | omega[n] |

                  |        4   |          2    2 | |          |

                  \omega[n]    \  omega[n]    k  / /          /





Désolé. A+
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
bendesarts



Inscrit le: 27 Fév 2009
Messages: 234

MessagePosté le: 29 Sep 2010 10:29    Sujet du message: Répondre en citant

Super merci pour ton aide.
J'y suis presque grâce ton aide.
En fait, j'ai posé un deuxième changement de variables qui fallait faire et j'arrive presque au résultat escompé.

Soit epsilon = Ct / (2*m*wn)

Le seul soucis qui reste c'est la dernière factorisation à faire au niveau du numérateur.

Code:

P[tot]:=int(omega/(2*Pi)*Ct*evalf(diff(z(t), t)^2), t=0..((2*Pi)/omega));
                                          6     2  2       
                        0.5000000000 omega  Ct Y  m         
                 -------------------------------------------
                  2             2          4  2     2      2
                 k  - 2. k omega  m + omega  m  + Ct  omega
> num := numer(P[tot])/k^2;
                                          6     2  2
                        0.5000000000 omega  Ct Y  m
                        ----------------------------
                                      2             
                                     k             
> den := expand(denom(P[tot])/k^2);
                              2          4  2     2      2
                      2. omega  m   omega  m    Ct  omega
                  1 - ----------- + --------- + ----------
                           k            2            2   
                                       k            k     
> num := algsubs(m = k/omega[n]^2, num); den := expand(algsubs(m/k = 1/omega[n]^2, den));
                                            6     2
                          0.5000000000 omega  Ct Y
                          -------------------------
                                          4       
                                  omega[n]         
                           4                2     2      2
                   1. omega         2. omega    Ct  omega
                   --------- + 1. - --------- + ----------
                           4                2        2   
                   omega[n]         omega[n]        k     
num := subs(Ct = 2*epsilon*m*omega[n], num);
                                        6            2
                       1.000000000 omega  epsilon m Y
                       -------------------------------
                                          3           
                                  omega[n]           
den := subs(Ct = 2*epsilon*m*omega[n], den);
                 4                2            2  2         2      2
         1. omega         2. omega    4 epsilon  m  omega[n]  omega
         --------- + 1. - --------- + ------------------------------
                 4                2                  2             
         omega[n]         omega[n]                  k               
> canonique := proc (P, x) local a, b, c; a := coeff(P, x, 4); b := coeff(P, x, 2); c := coeff(P, x, 0); a*(x^2+(1/4)*b/a^2+(1/4)*(4*a*c-b^2)/a^2) end proc;
proc(P, x)  ...  end;
den := canonique(1+omega^4/omega[n]^4-2*omega^2/omega[n]^2, omega);
                                 2   1         6
                            omega  - - omega[n]
                                     2         
                            --------------------
                                         4     
                                 omega[n]       
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
bendesarts



Inscrit le: 27 Fév 2009
Messages: 234

MessagePosté le: 30 Sep 2010 16:53    Sujet du message: Répondre en citant

Bonjour,

J'arrive presque au résultat que je souhaite. Il ne reste qu'à factoriser l'expression ci-dessous

Code:
den := 1.*omega^4/omega[n]^4+1.-2.*omega^2/omega[n]^2+4.*epsilon^2*omega^2/omega[n]^2


pour arriver à:



J'ai essayé la fonction factor et collect mais je n'y suis pas arrivé. Est-ce que vous auriez une idée pour me débloquer?

Merci d'avance pour votre aide.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 632

MessagePosté le: 01 Oct 2010 6:37    Sujet du message: Re: Répondre en citant

Bonjour,
pour le premier carré, on peut faire:

Code:

> canonique(op(1,den)+op(2,den)+op(3,den),omega)+op(4,den);

               2                       2 2             2      2
      1. (omega  - 1.000000000 omega[n] )    4. epsilon  omega
      ------------------------------------ + ------------------
                           4                             2
                   omega[n]                      omega[n]


Pour le deuxième, on peut simplifier la racine carrée avec
Code:

> radsimp(sqrt(op(4,den)));

                         2.000000000 epsilon omega
                    s := -------------------------
                                 omega[n]

Mais quand on reprend le carré Maple revient à la forme de départ.

Je ne vois pas trop comment s'en sortir.
Pose peut-être la question en anglais sur mapleprimes.com.
ALS
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
bendesarts



Inscrit le: 27 Fév 2009
Messages: 234

MessagePosté le: 01 Oct 2010 8:05    Sujet du message: Répondre en citant

Merci en tout cas pour tes conseils.
J'ai posé la question sur mapleprimes.
Wait and See.
En tout cas, merci pour ton aide.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Polynômes et fractions rationnelles Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


phpBB

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com


Apprendre Maple - ©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.