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 

Problème d'affectation de variables

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Maple en analyse
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
bendesarts



Inscrit le: 27 Fév 2009
Messages: 234

MessagePosté le: 29 Aoû 2011 10:57    Sujet du message: Problème d'affectation de variables Répondre en citant

Bonjour,

J'ai un programme qui utilise une variable lambda que j'utilise à plusieurs reprises. Mais, j'ai des problèmes d'affectation de sa valeur. Les lignes de code à partir de "Détermination du mode propre 2" ne fonctionne plus et j'aimerais les faire fonctionner. J'ai par contre du mal à expliquer mon soucis car je ne comprends pas l'erreur. J'espère que vous allez pouvoir à partir de mon code m'indiquer les corrections à faire.

Je vous remercie d'avance pour votre aide

Code:

restart;
with(linalg):
with(LinearAlgebra):
Détermination des pulsations propres et modes propres
Phi:=x->C_*sin(x/lambda)+D_*cos(x/lambda)+E_*sinh(x/lambda)+F_*cosh(x/lambda);
Theta:=D(Phi);

#Equations du système

eq1:=Phi(0)=0;
eq2:=Theta(0)=0;
eq2:=expand(map(x->x*lambda,eq2)); 
eq3:=Phi(L)=0;
eq4:=Theta(L)=0;
eq4:=expand(map(x->x*lambda,eq4));

#Mise sous forme matricielle du système

vars:=[C_,D_,E_,F_]:
A:=matrix([seq([seq(coeff(lhs(eq||i),vars[k]),k=1..nops(vars))],i=1..4)]);
X:=matrix([seq([vars[k]],k=1..nops(vars))]);
B:=matrix([seq([rhs(eq||i)],i=1..4)]);
evalm(A) &* evalm(X) = evalm(B);

#Détermination des valeurs propres

L:=1.350;

lambda[1]:=fsolve(det(A)=0,lambda=0.2..0.5);
beta[1]:=1/lambda[1]:
XX[1]:=beta[1]^2*L^2;

lambda[2]:=fsolve(det(A)=0,lambda=0.15..0.2);
beta[2]:=1/lambda[2]:
XX[2]:=beta[2]^2*L^2;

lambda[3]:=fsolve(det(A)=0,lambda=0.10..0.15);
beta[3]:=1/lambda[3]:
XX[3]:=beta[3]^2*L^2;

lambda[4]:=fsolve(det(A)=0,lambda=0..0.15);
beta[4]:=1/lambda[4]:
XX[4]:=beta[4]^2*L^2;

E:=210*10^9;
b:=25*10^(-3);
h:=4*10^(-3);
s:=b*h;
Iq:=(b*h^3)/12;
rho:=7800;

omega[1]:=evalf(1/lambda[1]*sqrt((E*Iq)/(rho*s)));
omega[2]:=evalf(1/lambda[2]*sqrt((E*Iq)/(rho*s)));
omega[3]:=evalf(1/lambda[3]*sqrt((E*Iq)/(rho*s)));
omega[4]:=evalf(1/lambda[4]*sqrt((E*Iq)/(rho*s)));

#Détermination du mode propre 1

C_:=1;
lambda:=lambda[1];
s:=solve({eq2,eq3,eq4},{D_,E_,F_});
assign(s);
evalm(A&*X);
plot(Phi(x),x=0..L);

#Détermination du mode propre 2

C_:=1;
unsassign(lambda);
unsassign(s);
lambda:=lambda[2];
s:=solve({eq2,eq3,eq4},{D_,E_,F_});
assign(s);
evalm(A&*X);
plot(Phi(x),x=0..L);
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 30 Aoû 2011 8:19    Sujet du message: Répondre en citant

Bonjour,
Le problème était la perte de la valeur de lambda[2] suite à l'instruction unsassign(lambda);
J'ai donc baptisé les valeurs propres l[k] plutôt que lambda[k] pour ne plus avoir ce problème, et je désaffecte les valeurs de D_,E_,F_ avec les instructions D_:='D_': E_:='E_': F_:='F_':
Tout semble normalement fonctionner maintenant.

Code:

> restart;
> with(linalg):
> with(LinearAlgebra):
> #Détermination des pulsations propres et modes propres
> Phi:=x->C_*sin(x/lambda)+D_*cos(x/lambda)+E_*sinh(x/lambda)+F_*cosh(x/lambda);
> Theta:=D(Phi);
>
> #Equations du système
>
> eq1:=Phi(0)=0;
> eq2:=Theta(0)=0;
> eq2:=expand(map(x->x*lambda,eq2)); 
> eq3:=Phi(L)=0;
> eq4:=Theta(L)=0;
> eq4:=expand(map(x->x*lambda,eq4));
>
> #Mise sous forme matricielle du système
>
> vars:=[C_,D_,E_,F_]:
> A:=matrix([seq([seq(coeff(lhs(eq||i),vars[k]),k=1..nops(vars))],i=1..4)]);
> X:=matrix([seq([vars[k]],k=1..nops(vars))]);
> B:=matrix([seq([rhs(eq||i)],i=1..4)]);
> evalm(A) &* evalm(X) = evalm(B);
>
>

                       x                x                 x
  Phi := x -> C_ sin(------) + D_ cos(------) + E_ sinh(------)
                     lambda           lambda            lambda

                     x
         + F_ cosh(------)
                   lambda


                         x                x                 x
                C_ cos(------)   D_ sin(------)   E_ cosh(------)
                       lambda           lambda            lambda
  Theta := x -> -------------- - -------------- + ---------------
                    lambda           lambda           lambda

                     x
           F_ sinh(------)
                   lambda
         + ---------------
               lambda


                          eq1 := D_ + F_ = 0


                               C_       E_
                      eq2 := ------ + ------ = 0
                             lambda   lambda


                          eq2 := C_ + E_ = 0


                  L                L                 L
  eq3 := C_ sin(------) + D_ cos(------) + E_ sinh(------)
                lambda           lambda            lambda

                     L
         + F_ cosh(------) = 0
                   lambda


                  L                L                 L
         C_ cos(------)   D_ sin(------)   E_ cosh(------)
                lambda           lambda            lambda
  eq4 := -------------- - -------------- + ---------------
             lambda           lambda           lambda

                     L
           F_ sinh(------)
                   lambda
         + --------------- = 0
               lambda


                  L                L                 L
  eq4 := C_ cos(------) - D_ sin(------) + E_ cosh(------)
                lambda           lambda            lambda

                     L
         + F_ sinh(------) = 0
                   lambda


  A :=

        [0 , 1 , 0 , 1]

        [1 , 0 , 1 , 0]

        [      L             L              L              L    ]
        [sin(------) , cos(------) , sinh(------) , cosh(------)]
        [    lambda        lambda         lambda         lambda ]

        [      L              L              L              L    ]
        [cos(------) , -sin(------) , cosh(------) , sinh(------)]
        [    lambda         lambda         lambda         lambda ]


                                   [C_]
                                   [  ]
                                   [D_]
                              X := [  ]
                                   [E_]
                                   [  ]
                                   [F_]


                                    [0]
                                    [ ]
                                    [0]
                               B := [ ]
                                    [0]
                                    [ ]
                                    [0]


        [0 , 1 , 0 , 1]

        [1 , 0 , 1 , 0]

        [      L             L              L              L    ]
        [sin(------) , cos(------) , sinh(------) , cosh(------)]
        [    lambda        lambda         lambda         lambda ]

        [      L              L              L              L    ] &*
        [cos(------) , -sin(------) , cosh(------) , sinh(------)]
        [    lambda         lambda         lambda         lambda ]

        [C_]   [0]
        [  ]   [ ]
        [D_]   [0]
        [  ] = [ ]
        [E_]   [0]
        [  ]   [ ]
        [F_]   [0]

> #Détermination des valeurs propres
>
> L:=1.350;
>
> l[1]:=fsolve(det(A)=0,lambda=0.2..0.5);
> beta[1]:=1/l[1]:
> XX[1]:=beta[1]^2*L^2;
>
> l[2]:=fsolve(det(A)=0,lambda=0.15..0.2);
> beta[2]:=1/l[2]:
> XX[2]:=beta[2]^2*L^2;
>
> l[3]:=fsolve(det(A)=0,lambda=0.10..0.15);
> beta[3]:=1/l[3]:
> XX[3]:=beta[3]^2*L^2;
>
> l[4]:=fsolve(det(A)=0,lambda=0..0.15);
> beta[4]:=1/l[4]:
> XX[4]:=beta[4]^2*L^2;
>
> E:=210*10^9;
> b:=25*10^(-3);
> h:=4*10^(-3);
> s:=b*h;
> Iq:=(b*h^3)/12;
> rho:=7800;
>
> omega[1]:=evalf(1/l[1]*sqrt((E*Iq)/(rho*s)));
> omega[2]:=evalf(1/l[2]*sqrt((E*Iq)/(rho*s)));
> omega[3]:=evalf(1/l[3]*sqrt((E*Iq)/(rho*s)));
> omega[4]:=evalf(1/l[4]*sqrt((E*Iq)/(rho*s)));
>

                              L := 1.350


                         l[1] := 0.2854098036


                         XX[1] := 22.37328545


                         l[2] := 0.1719043454


                         XX[2] := 61.67282285


                         l[3] := 0.1227762958


                         XX[3] := 120.9033916


                        l[4] := 0.07813060814


                         XX[4] := 298.5555353


                          E := 210000000000


                              b := 1/40


                              h := 1/250


                             s := 1/10000


                          Iq := 1/7500000000


                             rho := 7800


                       omega[1] := 20.99243550


                       omega[2] := 34.85337663


                       omega[3] := 48.79970400


                       omega[4] := 76.68501549

> #Détermination du mode propre 1
>
> C_:=1;
> lambda:=l[1];
> s:=solve({eq2,eq3,eq4},{D_,E_,F_});
> assign(s);
> evalm(A&*X);
> plot(Phi(x),x=0..L);
>

                               C_ := 1


                        lambda := 0.2854098036


         s := {D_ = -1.017809414, E_ = -1., F_ = 1.017809411}


                             [       -8]
                             [-0.3 10  ]
                             [         ]
                             [   0.    ]
                             [         ]
                             [      -7 ]
                             [0.2 10   ]
                             [         ]
                             [      -7 ]
                             [0.2 10   ]


> #Détermination du mode propre 2
>
> C_:=1;
> lambda:=l[2];
> D_:='D_': E_:='E_': F_:='F_':
> s:=solve({eq2,eq3,eq4},{D_,E_,F_});
> assign(s);
> evalm(A&*X);
> plot(Phi(x),x=0..L);
>

                               C_ := 1


                        lambda := 0.1719043454


        s := {D_ = -0.9992242786, E_ = -1., F_ = 0.9992232915}


                            [          -6]
                            [-0.9871 10  ]
                            [            ]
                            [     0.     ]
                            [            ]
                            [     0.     ]
                            [            ]
                            [     0.     ]



A plus tard.
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 Aoû 2011 9:08    Sujet du message: Répondre en citant

Merci beaucoup pour votre aide.
D'autant que j'ai trouvé que je n'étais pas particulièrement clair dans la question précédente...
Moralité, quand on utilise [] pour faire une notation sur des variables, mieux vaut repartir sur une nouvelle variable (ici l à la place de lambda).
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 -> Maple en analyse 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.