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 

Formation d'un système matriciel AX=B à partir d'équations

 
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: 24 Aoû 2011 9:41    Sujet du message: Formation d'un système matriciel AX=B à partir d'équations Répondre en citant

Bonjour,

J'aimerais à partir de 4 équations formées un système de la forme AX=B. Y a-t-il une fonction qui fait celà ?

Dans mon cas, X = (C D E F)

Voici les 4 équations ci-dessous:

Code:
Phi:=x->C*sin(x/lambda)+D*cos(x/lambda)+E*sinh(x/lambda)+F*cosh(x/lambda);
Theta:=x->diff(Phi(x),x);
eq1:=Phi(0)=0;
eq2:=Theta(0)=0;
eq3:=Phi(L)=0;
eq4:=Theta(L)=0;


Rq: Au passage, ma deuxième équation est mal identifié dans maple. Est-ce que vous sauriez me dire ce que je dois rectifier?

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: 647

MessagePosté le: 24 Aoû 2011 10:18    Sujet du message: Re: Répondre en citant

Bonjour,
Voici ce que je vous propose:
Pour la seconde fonction, ce qui posait problème était le remplacement de x par 0 dans diff(Phi(x),x); par la commande eq2:=Theta(0)=0;
J'ai donc utilsé D(Phi) qui donne la fonction dérivée première de Phi.

Pour la matrice, je construis une séquence double des coefficients de vars[k] dans eq||i , où vars=[C,D,E,F] désigne la liste des 4 variables, sur laquelle j'applique matrix.


Code:

> Phi:=x->C*sin(x/lambda)+D*cos(x/lambda)+E*sinh(x/lambda)+F*cosh(x/lambda); 
> Theta:=D(Phi);
> eq1:=Phi(0)=0;
> eq2:=Theta(0)=0;
> eq3:=Phi(L)=0;
> eq4:=Theta(L)=0;
>

                      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


                 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

> vars:=[C,D,E,F]:
> A:=matrix([seq([seq(coeff(lhs(eq||i),vars[k]),k=1..nops(vars))],i=1..4)]);

  A :=

        [0 , 1 , 0 , 1]

        [  1            1       ]
        [------ , 0 , ------ , 0]
        [lambda       lambda    ]

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

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

> X:=matrix([seq([vars[k]],k=1..nops(vars))]);

                                    [C]
                                    [ ]
                                    [D]
                               X := [ ]
                                    [E]
                                    [ ]
                                    [F]

> B:=matrix([  seq([rhs(eq||i)],i=1..4) ]   );

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

> evalm(A) &* evalm(X) = evalm(B);

        [0 , 1 , 0 , 1]

        [  1            1       ]
        [------ , 0 , ------ , 0]
        [lambda       lambda    ]

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

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

           [C]   [0]
           [ ]   [ ]
           [D]   [0]
        &* [ ] = [ ]
           [E]   [0]
           [ ]   [ ]
           [F]   [0]



A bientôt sur ce forum.
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: 24 Aoû 2011 11:29    Sujet du message: Répondre en citant

Super merci pour ton aide.

J'arrive à ce code

Code:
Phi:=x->C*sin(x/lambda)+D*cos(x/lambda)+E*sinh(x/lambda)+F*cosh(x/lambda);
Theta:=D(Phi);
eq1:=Phi(0)=0;
eq2:=Theta(0)=0;
eq3:=Phi(L)=0;
eq4:=Theta(L)=0;
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);
(solve(det(A)=0,lambda));


J'ai par contre encore un petit soucis:
En gros, il faut que je résolve une équation avec du cos, ch, sin, sh. Par contre, une résolution avec un solve me donne un réponse avec un rootOf. Comment est-ce que je peux faire pour spécifier un intervalle dans la résolution de mon solve pour ne pas avoir de RootOf.

Avec ceci

Code:

L:=1.350;
assume(0 < lambda, lambda < 100);
solve(det(A)=0,lambda);
J'obtiens float infini


Merci d'avance pour ton 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: 24 Aoû 2011 12:10    Sujet du message: Répondre en citant

Autre chose, J'espère ne pas être trop casse bonbons...
Comment est-ce que je peux faire pour simplifier les lambda constants dans les équations eq2 et eq4 ?
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: 25 Aoû 2011 7:30    Sujet du message: Répondre en citant

Bonjour,

Utilise plutôt fsolve pour les résolutions approchées, et en plus on peut spécifier un intervalle, ici lambda=0..100.
La fonction det est dans la package linalg.

Code:

> L:=1.350:
> fsolve(linalg[det](A),lambda=0..100);
                             0.1227762958


Citation:

Comment est-ce que je peux faire pour simplifier les lambda constants dans les équations eq2 et eq4 ?


On applique la fonction qui multiplie par lambda sur les 2 équations, et on développe:

Code:

> eq2:=expand(map(x->x*lambda,eq2));

                           eq2 := C + E = 0

> eq4:=expand(map(x->x*lambda,eq4));

               1.350           1.350            1.350
  eq4 := C cos(------) - D sin(------) + E cosh(------)
               lambda          lambda           lambda

                  1.350
         + F sinh(------) = 0
                  lambda


A plus tard.
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.