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

Fortran Discussion :

Inverse de matrice avec paramètre


Sujet :

Fortran

  1. #1
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    Par défaut Inverse de matrice avec paramètre
    Bonjour ,
    je demande si on peut calculer (en Fortran ) l inverse d une matrice qui depend d un parametre sans donner une valeur a ce parametre,
    Ou bien de résoudre un systeme linéaire dépendant d un parametre?
    merci

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !

    Deux remarques préliminaires:

    1) Pourquoi veux-tu inverser une matrice, si ce n'est pas demandé explicitement dans un exercice de ton damné bouquin. En général, ça ne sert à rien.

    2) Ton problème n'est pas spécifique du Fortran. C'est plutôt la question d'un algorithme.

    Pour exprimer analytiquement la solution d'un système en fonction d'un paramètre, c'est du calcul formel et non du calcul numérique. Dans ce cas, il faut utiliser un logiciel spécialisé comme Mathematica ou Maple.

    Si, dans ton système, tu as un paramètre qui se trouve à une ou plusieurs places, et que tu veux le résoudre pour un nombre fini de valeurs de ce paramètre, tu peux utiliser les formules de Sherman-Morrison ou de Woodbury: Le temps de calcul sera en n3 pour la première valeur et en n2 seulement pour les suivantes. Personnellement, je n'ai jamais essayé, mais regarde dans Numerical Recipes.

    Bonne chance!
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  3. #3
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    Par défaut
    C est pour la resolution d une edp qui depend d un parametre...........
    ce n est pas un exos mais autre

  4. #4
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !

    1) Quelle est ton équation aux dérivées partielles?

    2) Quel est le domaine d'intégration?

    3) Quelles sont les conditions aux limites?

    4) Si la fonction cherchée dépend du temps, quelles sont les conditions initiales?

    5) Quelle méthode d'intégration utilises-tu?

    Quand tu auras répondu à ces questions, on pourra aller un peu plus loin.

    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  5. #5
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Salut !

    1) Quelle est ton équation aux dérivées partielles?

    2) Quel est le domaine d'intégration?

    3) Quelles sont les conditions aux limites?

    4) Si la fonction cherchée dépend du temps, quelles sont les conditions initiales?

    5) Quelle méthode d'intégration utilises-tu?

    Quand tu auras répondu à ces questions, on pourra aller un peu plus loin.

    Jean-Marc Blanc

    Je n entre pas trop en detail, on a une edo de forme (a(r)u')'=0, et a(r) de la forme 1+mr^2 ou meme autre, on connait u(R)=h par ex, (h constant) et on connait a(R)u'(R)=k par ex ,
    on est a la recherche de m, par difference finis, on obtient un systeme lineaire dependant de m, Mais on connait la valeur de u_N(m)=h, donc en resolvant le systeme lineaire on tire la valeur de u_N en fonction de m, et on aura une equation non lineaire en m a resoudre, on applique Newton par exemple, Mais le probleme c est la resolution du systeme lineaire
    Voila Jean Marc, j espere que c est claire

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2006
    Messages : 197
    Points : 185
    Points
    185
    Par défaut
    Une inversion de matrice, ça peut-etre très lourd.
    En général on évite de le faire...

    utilise plutot une méthode du genre cholesky par exemple (méthode directe) très simple à programmer (Numerical Recipe) ou un gauss (methode itérative).

    Je n'ai pas regardé en profondeur tes équations, tu devra peut-etre utiliser des méthodes un peu plus complexes, selon les systèmes que tu as a résoudre.

  7. #7
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !

    Désolé, mais ce n'est pas clair du tout. C'est pourquoi je pense utile de te rappeler la méthodologie de base du calcul "industriel". Au départ, tu connais:

    1) les lois qui régissent les phénomènes physiques que tu veux étudier (par ex.: conduction thermique en régime transitoire, avec sources);

    2) la géométrie de l'objet étudié (par ex.: cylindre de longueur finie);

    3) les caractéristiques des matériaux qui constituent ton objet (par ex.: chaleur spécifique, conductivité thermique);

    4) les actions qui s'exercent sur ton objet (par ex.: sources de chaleur interne);

    5) éventuellement les conditions aux limite (par ex.: température imposée, flux de chaleur imposé sur la surface extérieure);

    6) éventuellement les conditions initiales (par ex.: température initiale).

    Si tu n'as pas toi-même toutes ces informations, tu ne pourras jamais résoudre ton problème, et si tu ne nous les donnes pas, nous ne pourrons pas t'aider.

    A bientôt.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  8. #8
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Salut !

    Désolé, mais ce n'est pas clair du tout. C'est pourquoi je pense utile de te rappeler la méthodologie de base du calcul "industriel". Au départ, tu connais:

    1) les lois qui régissent les phénomènes physiques que tu veux étudier (par ex.: conduction thermique en régime transitoire, avec sources);

    2) la géométrie de l'objet étudié (par ex.: cylindre de longueur finie);

    3) les caractéristiques des matériaux qui constituent ton objet (par ex.: chaleur spécifique, conductivité thermique);

    4) les actions qui s'exercent sur ton objet (par ex.: sources de chaleur interne);

    5) éventuellement les conditions aux limite (par ex.: température imposée, flux de chaleur imposé sur la surface extérieure);

    6) éventuellement les conditions initiales (par ex.: température initiale).

    Si tu n'as pas toi-même toutes ces informations, tu ne pourras jamais résoudre ton problème, et si tu ne nous les donnes pas, nous ne pourrons pas t'aider.

    A bientôt.
    Jean-Marc Blanc
    Cher Jean Marc, je ne suis pas physicien mais numericien,
    Je te réexplique le probleme, Moi je demande seulement si c est possible de le faire en fortran seulement.
    on a une EDO de forme d/dr(a(r)d/dr(u(r)))=0, r est dans l interval [0,R] (c est un probleme unidimentionel) On est a la recherche de a(r)et a(r) de la forme 1+mr^2 ou meme autre, condition aux limites : u(R)=h par ex, (h constant) et a(R)d/dr(u)(R)=b par exemple
    on est a la recherche de m,
    On applique la méthode des difference finis, on obtient un systeme lineaire dependant de m (A(m°)U(m°)=B), avec A(m) est la matrice dépendante de m , i,j=1,N , Mais on connait la valeur de u_N(m)=u(R)=h, donc en resolvant le systeme lineaire on tire la valeur de u_N(m) en fonction de m, et on aura une equation non lineaire en m a resoudre : u_N(m)=h, on applique Newton par exemple,
    Le probleme est que le systeme est d ordre NxN et depend d un parametre m, donc c est tres difficile de le résoudre .
    Voila

  9. #9
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par gregory2526 Voir le message
    Une inversion de matrice, ça peut-etre très lourd.
    En général on évite de le faire...

    utilise plutot une méthode du genre cholesky par exemple (méthode directe) très simple à programmer (Numerical Recipe) ou un gauss (methode itérative).

    Je n'ai pas regardé en profondeur tes équations, tu devra peut-etre utiliser des méthodes un peu plus complexes, selon les systèmes que tu as a résoudre.
    Cher Gregory, ma matrice depend d un parametre , et elle est de taille NXN, avec N est grand, donc on ne peux pas appliquer les méthode classsique pour la resolution de telle probleme vu que ma matrice depend d un parametre,
    par exemple,
    A= m 2 3
    0 2m m
    3m 1 m-1

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Août 2006
    Messages : 197
    Points : 185
    Points
    185
    Par défaut
    Cher Gregory, ma matrice depend d un parametre , et elle est de taille NXN, avec N est grand, donc on ne peux pas appliquer les méthode classsique pour la resolution de telle probleme vu que ma matrice depend d un parametre,
    j'entends bien...
    Cependant, une inversion de matrice est quelque chose de lourd pour des grands systèmes (donc si tu as N grand...). Dans ton cas, ça risque d'être impossible à effectuer dans le cas de matrices telles que tu les donne. Certaines méthodes classques sont déjà lourdes. Si l'inversion de matrice était efficace, on aurait pas toutes ces méthodes de résolutions itératives ou directe... On ferait directement une inversion.

    Je pense que tu devrai chercher du coté de méthodes classiques, il est possible qu'une méthode spécifique existe à ton problème... Sinon, il doit être possible d'en adapter une.

    En plus, il y a quelque chose que je ne comprends pas. Ton paramètre m varie comment ? parce que si tu connait sa valeur à un moment donné, tu peux résoudre le problème... Lorsque sa valeur change, tu résoud le nouveau problème, etc... Peut-être pourrait-tu préciser...

    Cher Jean Marc, je ne suis pas physicien mais numericien,
    Il est bien évident qu'on peut être purement physicien, ou purement mathématicien, mais on ne peux pas être numéricien sans être une peu des deux. Il est nécessaire d'appréhender la physique sous-jacente au problème qu'on veut résoudre. C'est nécessaire, surtout pour pouvoir interpréter ses résultats par la suite, et vérifier que la solution que le calcul nous donne n'est pas irréaliste...

  11. #11
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Citation Envoyé par gregory2526 Voir le message
    Il est bien évident qu'on peut être purement physicien, ou purement mathématicien, mais on ne peux pas être numéricien sans être une peu des deux. Il est nécessaire d'appréhender la physique sous-jacente au problème qu'on veut résoudre. C'est nécessaire, surtout pour pouvoir interpréter ses résultats par la suite, et vérifier que la solution que le calcul nous donne n'est pas irréaliste...
    Bravo! Je souscris à 100% à l'opinion de gregory2526, mais je n'insisterai pas, parce que je pense que ce forum n'est pas le lieu idoine.

    En revanche, en ce qui concerne l'inversion de matrice, je te fais remarquer que, dans le cas d'une équation elliptique dans un espace à une seule dimension, on tombe sur une matrice tridiagonale symétrique définie positive dont le stockage nécessite un tableau à 2*n cellules, alors que le stockage de son inverse nécessite n^2 cellules. Imagine que tu discrétises sur 1000 intervalles: 500'000 cellules à la place de 2000 !

    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  12. #12
    Membre régulier Avatar de Fortran90
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 83
    Points : 82
    Points
    82
    Par défaut
    alors que le stockage de son inverse nécessite n^2 cellules
    Aujourd'hui on fait quand même beaucoup mieux que ça en réduisant le fill-in et en faisant du reodering.
    Cf les solvers directs actuels tels que WSMP, SPOOLES, Pardiso, MUMPS....

  13. #13
    Débutant
    Inscrit en
    Juillet 2007
    Messages
    386
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 386
    Points : 119
    Points
    119
    Par défaut
    Citation Envoyé par gregory2526 Voir le message
    j'entends bien...
    Cependant, une inversion de matrice est quelque chose de lourd pour des grands systèmes (donc si tu as N grand...). Dans ton cas, ça risque d'être impossible à effectuer dans le cas de matrices telles que tu les donne. Certaines méthodes classques sont déjà lourdes. Si l'inversion de matrice était efficace, on aurait pas toutes ces méthodes de résolutions itératives ou directe... On ferait directement une inversion.

    Je pense que tu devrai chercher du coté de méthodes classiques, il est possible qu'une méthode spécifique existe à ton problème... Sinon, il doit être possible d'en adapter une.

    En plus, il y a quelque chose que je ne comprends pas. Ton paramètre m varie comment ? parce que si tu connait sa valeur à un moment donné, tu peux résoudre le problème... Lorsque sa valeur change, tu résoud le nouveau problème, etc... Peut-être pourrait-tu préciser...



    Il est bien évident qu'on peut être purement physicien, ou purement mathématicien, mais on ne peux pas être numéricien sans être une peu des deux. Il est nécessaire d'appréhender la physique sous-jacente au problème qu'on veut résoudre. C'est nécessaire, surtout pour pouvoir interpréter ses résultats par la suite, et vérifier que la solution que le calcul nous donne n'est pas irréaliste...

    Je doit chercher mon parametre m, donc c est un inconnu, c est un probleme inverse

  14. #14
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !

    Si je t'ai bien compris, ce qui est loin d'être certain, ton paramètre m

    1) intervient dans ton système linéaire;

    2) doit prendre une valeur telle qu'une certaine condition soit remplie, c'est-à-dire qu'une certaine équation extérieure à ton système, et probablement non linéaire, soit satisfaite.

    Dans ce cas, tu résouts ton équation extérieure par une méthode idoine (regula falsi, Newton, etc.) avec la résolution de ton système linéaire à l'intérieur de ta boucle d'itération.

    Si ce n'est pas ça, tu expliques clairement ce que c'est!

    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

Discussions similaires

  1. Probleme Inversion matrice avec Eigen
    Par med.doc dans le forum C++
    Réponses: 7
    Dernier message: 18/09/2013, 13h36
  2. Minimisation avec paramètres dans des matrices
    Par sid85 dans le forum MATLAB
    Réponses: 2
    Dernier message: 27/06/2013, 15h23
  3. Réponses: 4
    Dernier message: 22/11/2011, 12h35
  4. Calculer un inverse de matrice avec boost?
    Par Clad3 dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 02/06/2005, 18h38

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