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
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
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)
C est pour la resolution d une edp qui depend d un parametre...........
ce n est pas un exos mais autre
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)
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
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.
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)
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
j'entends bien...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,
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...Cher Jean Marc, je ne suis pas physicien mais numericien,
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)
Aujourd'hui on fait quand même beaucoup mieux que ça en réduisant le fill-in et en faisant du reodering.alors que le stockage de son inverse nécessite n^2 cellules
Cf les solvers directs actuels tels que WSMP, SPOOLES, Pardiso, MUMPS....
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)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager