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

Mathématiques Discussion :

inverser matrice, complexité


Sujet :

Mathématiques

  1. #21
    Membre régulier
    Homme Profil pro
    Collégien
    Inscrit en
    Mars 2003
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Afghanistan

    Informations professionnelles :
    Activité : Collégien

    Informations forums :
    Inscription : Mars 2003
    Messages : 192
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par GuiYom00 Voir le message
    Il s'agit de méthodes optimisées donc meme dans le cas qui t'interesse elles peuvent s'averer interessantes. Au pire fais un test rapide pour voir
    Ouais faudrait peut-etre tester... Mais en général je préfère coder quand je suis sûr de mon coup pour ne pas perdre de temps.
    Par exemple, quand on fait une résolution d'équation par les différences finies, comment intègre-t-on ? Est-ce qu'on inverse la matrice une bonne fois pour toute ? Est-ce qu'on utilise une méthode itérative ? Fourier ? Il doit bien y avoir une façon "standard".


    Ensuite les methodes spectrales, je n'ai que peu d'experience dans ce domaine, mais par ex, est tu deja allé voir si tu ne trouvais pas ton bonheur dans le "Journal of Computational Physics" http://www.sciencedirect.com/science/journal/00219991 ?
    Je trouve en général les articles assez peu pédagogique, je préfère voir des cours etc... surtout que je ne sais pas trop nommer ce que je cherche.

    Une question qui reste en suspend quand même est, est tu sur que des simu en 1024x1024 sont raisonnablement faisables dans ton cas? Pour moi des que une simu passe les 15j, il faut commencer peut être a revoir les choses enfin ceci n'est qu'un avis personnel
    Hum, Disons que qui peut le plus peu le moins, je ne vais pas utiliser un truc pour tourner en 100x100 et me recasser la tete le jours ou je veux faire un truc plus important. Donc l'optimal ce serai l'utilisation d'une bibliotheque/technique qui soit efficace, approuvée et dans la suite parallelisable/parallelisée mais c'est un autre pb.


    Au fait je reviens sur un de tes message précedent :

    en condition périodique sur une des 2 dimension juste? c'est ce qui est fait en general pour le cas du tearing "avec collisions"

    Pour le moment je suis non périodique uniquement suivant Y, et périodique en X. Mais ça ne va pas forcément durer, donc pareil, qui peut le plus peu le moins c'est mon raisonnement.


    J'ai également entendu parlé de méthodes "quart de période" et "demi période". L'idée consisterait à doubler (demi période) la boite dans les deux directions, on la quadrupler dans les deux direction en appliquant des symétries successives.

    Je n'ai pas tout pigé, mais par exemple le résultat était que si l'on voulait des conditions de neumann sur les bords, il fallait quadrupler le signal en appliquant une symétrie de parité. puis en faisant une FFT ça revient à projetter notre signal sur une base exp(2ipi/(4L)x), donc beaucoup de coefficients sont nuls (ceux des sinus, il faudrait une transformation en cosinus mais bon, commencer par fftw avec les 0 partout). L'inconvénient c'est que je n'ai pas des conditions de neumann pour toutes les composantes de B. J'ai Bn1 = Bn2 (derivée normale de la composante normale = 0, donc neumann) par contre j'ai Bt2 = Bt1 + Js, (Js le courant surfacique au bord de la boite) donc la dérivée normale de la composante tangentielle n'est pas nulle.
    --
    Heimdall

  2. #22
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 42
    Points : 35
    Points
    35
    Par défaut
    Citation Envoyé par Heimdall Voir le message
    Ouais faudrait peut-etre tester... Mais en général je préfère coder quand je suis sûr de mon coup pour ne pas perdre de temps.
    En general il est plus rapide d'utiliser une librairie testée et approuvée, surtout pour des algo ou la question de temps et fiabilité est importante (fft, resolution syst lineaires...)
    Tu verras que si tu peux t'epargner une phase de test de l'algo en lui meme tu gagneras un temps precieux
    Et comme tu disais ca ne sert à rien de reinventer la roue.

    Citation Envoyé par Heimdall Voir le message
    Par exemple, quand on fait une résolution d'équation par les différences finies, comment intègre-t-on ? Est-ce qu'on inverse la matrice une bonne fois pour toute ? Est-ce qu'on utilise une méthode itérative ? Fourier ? Il doit bien y avoir une façon "standard".
    Justement il n'y a pas de facon standard je veux dire par la facon qui marche avec tous les problemes. Il y a des facons standards par "type" de probleme à la rigueur.
    Mais ce qui est sur c'est que, comme le disait Jean Marc Blanc, en general on n'inverse pas la matrice (on passerait dans ton cas d'une matrice creuse à une matrice pleine à stocker entre autre inconvenient)

    Citation Envoyé par Heimdall Voir le message
    Je trouve en général les articles assez peu pédagogique, je préfère voir des cours etc... surtout que je ne sais pas trop nommer ce que je cherche.
    Malheureusement pour toi, je dirai que c'est dans ce genre de revue (meme surement elle) que tu trouveras les meilleurs algo adaptés à ton probleme.
    Il y a "l'equivalent" pour les algo paralleles


    Citation Envoyé par Heimdall Voir le message
    Hum, Disons que qui peut le plus peu le moins, je ne vais pas utiliser un truc pour tourner en 100x100 et me recasser la tete le jours ou je veux faire un truc plus important. Donc l'optimal ce serai l'utilisation d'une bibliotheque/technique qui soit efficace, approuvée et dans la suite parallelisable/parallelisée mais c'est un autre pb.
    Tout depend du temps dont tu disposes aussi pour faire le tout
    Mais par ex si tu peux du 100x100, est tu sur que tes algo seront stables si tu passes en 1024x1024?
    Ensuite le point de la parallelisation est un point crucial pour ton probleme.

    Le type de probleme que tu as fais partie des problemes qualifiés d'elliptiques, autrement dit, tu as besoin de l'information sur tous le domaine pour trouver la solution en 1 point. Si jamais tu envisages une parallelisation avec une decoupe de ton domaine en sous domaine, dans ce cas tu vas avoir d'enormes problemes de communication entre les processeurs donc regarde peut etre a passer directement aux methodes iteratives (gradient conjugué etc etc)
    L'avantage est que ces methodes sont plus facilement parallelisables.
    Ca c'est si tu veux tout faire "à la main" sinon apres solution facile, tu prends une des librairie que je t'ai conseillé plus haut donc tu vois que ca pourrait etre interessant de regarder ton probleme de maniere plus "globale" afin d'eviter de reprendre certains trucs dans 6mois/1an ou plus



    Citation Envoyé par Heimdall Voir le message
    Pour le moment je suis non périodique uniquement suivant Y, et périodique en X. Mais ça ne va pas forcément durer, donc pareil, qui peut le plus peu le moins c'est mon raisonnement.
    Est tu sur que tu vas changer cela? Quelles infos tu penses que tu pourrais avoir en plus pour la resolution de la reconnexion dans ce cas?
    Car dans l'etat actuel, si tu es periodique en X, ca arrange sacrement les choses (vive la routine tridiag du numerical recipes )
    Ton laplacien peut alors s'ecrire : Nabla² = -kx²+ d²/dy²
    Tu as alors pour la resolution de ton systeme lineaire besoin d'uniquement 3 vecteurs de taille Nx*Ny. De meme la precision que tu auras sur ton schema n'en sera que meilleure qu'avec les differences finies.


    Citation Envoyé par Heimdall Voir le message
    J'ai également entendu parlé de méthodes "quart de période" et "demi période". L'idée consisterait à doubler (demi période) la boite dans les deux directions, on la quadrupler dans les deux direction en appliquant des symétries successives.

    Je n'ai pas tout pigé, mais par exemple le résultat était que si l'on voulait des conditions de neumann sur les bords, il fallait quadrupler le signal en appliquant une symétrie de parité. puis en faisant une FFT ça revient à projetter notre signal sur une base exp(2ipi/(4L)x), donc beaucoup de coefficients sont nuls (ceux des sinus, il faudrait une transformation en cosinus mais bon, commencer par fftw avec les 0 partout). L'inconvénient c'est que je n'ai pas des conditions de neumann pour toutes les composantes de B. J'ai Bn1 = Bn2 (derivée normale de la composante normale = 0, donc neumann) par contre j'ai Bt2 = Bt1 + Js, (Js le courant surfacique au bord de la boite) donc la dérivée normale de la composante tangentielle n'est pas nulle.
    Je ne connais pas ca si j'ai 2minutes j'essaierai de regarder

Discussions similaires

  1. Inversion matrice 6X6 complex rapide
    Par pdufranc dans le forum Fortran
    Réponses: 3
    Dernier message: 20/04/2015, 10h53
  2. Probleme Inversion matrice avec Eigen
    Par med.doc dans le forum C++
    Réponses: 7
    Dernier message: 18/09/2013, 13h36
  3. Inversion matrice langage C
    Par PasdeBoogie dans le forum C
    Réponses: 3
    Dernier message: 26/05/2013, 17h31
  4. Inversion matrice bande (et non pas "résolution")
    Par mathieu1 dans le forum Fortran
    Réponses: 10
    Dernier message: 15/04/2010, 09h38
  5. [E-07] inverse matrice - matrice non inversible - gestion d'erreur
    Par Lnmex dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/12/2008, 23h51

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