|
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
bendesarts
Inscrit le: 27 Fév 2009 Messages: 234
|
Posté le: 28 Sep 2010 16:39 Sujet du message: Manipulation de fraction rationnelle |
|
|
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 |
|
|
bendesarts
Inscrit le: 27 Fév 2009 Messages: 234
|
Posté le: 28 Sep 2010 23:05 Sujet du message: |
|
|
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 |
|
|
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 29 Sep 2010 6:10 Sujet du message: |
|
|
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 |
|
|
bendesarts
Inscrit le: 27 Fév 2009 Messages: 234
|
Posté le: 29 Sep 2010 10:29 Sujet du message: |
|
|
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 |
|
|
bendesarts
Inscrit le: 27 Fév 2009 Messages: 234
|
Posté le: 30 Sep 2010 16:53 Sujet du message: |
|
|
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 |
|
|
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 01 Oct 2010 6:37 Sujet du message: Re: |
|
|
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 |
|
|
bendesarts
Inscrit le: 27 Fév 2009 Messages: 234
|
Posté le: 01 Oct 2010 8:05 Sujet du message: |
|
|
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 |
|
|
|
|
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
|
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.
|