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

Langage C++ Discussion :

matrice jacobienne


Sujet :

Langage C++

  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2011
    Messages : 3
    Points : 3
    Points
    3
    Par défaut matrice jacobienne
    Bonsoir,

    Je dois calculer la matrice jacobienne d'une fonction avec le C++, mais je ne sais pas comment peut on calculer les dérivés partielles premières de la fonction, qui sont les membres de la matrice jacobienne,

    J'attends votre aide...

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Ce n'est pas une question liée au langage.
    Il te faut une bibliothèque qui implémente les algorithmes d'algèbre linéaire.

    La plus populaire est LAPACK.

    <Note de modération> C'est moi (Flob90) qui est déplacé le message (il était dans une discussion sans rapport), je l'ai mis dans langage dans le sens "comment faire ceci en C++ (quel syntaxe) ?" sans m'occuper de l'existence ou non de bibliothèque d'algèbre linéaire, l'OP est libre de m'indiquer de redéplacer le sujet mais il ne l'a pas encore fait (si tu le sens le besoin de répondre sur ce point fait le en mp si possible )</Note de modération>
    Boost ftw

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    En général on (dans mon cas en fait) cherche à calculer une telle matrice pour l'utiliser dans un solveur. On cherche donc cette matrice en un point particulier.

    Il y a alors plusieurs solutions :
    1- programmer les dérivées formellement, ce qui peut être long en temps de calcul, et en temps de développement.
    2- on peut faire un framework en surchargeant les opérateurs et fonctions mathématiques pour calculer les valeurs des dérivées en même temps que les valeurs des dérivées, c'est long et fastidieux et pose des problème de temps de calcul à cause des opérateurs binaires.
    3- faire des dérivées numériques f'(x) = (f(x+dx)-f(x-dx))/(2*dx) ce qui peu poser des soucis aux bornes du domaine de définition de la fonction...

    Je sais que beaucoup pensent que le 3 est très long en termes de calcul (deux évaluations de f(x) par dérivées....) mais (uv)' = uv'+u'v ce qui veut dire que l'évaluation de la dérivée formelle de uv prendra sans doute autant de temps que deux évaluations de uv.... voir plus si u et v sont compliquées...

  4. #4
    Membre confirmé
    Avatar de Le Farfadet Spatial
    Homme Profil pro
    En cours de précision…
    Inscrit en
    Avril 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En cours de précision…

    Informations forums :
    Inscription : Avril 2008
    Messages : 186
    Points : 604
    Points
    604
    Par défaut
    Salut à tous !

    Citation Envoyé par Gandalf Voir le message
    3- faire des dérivées numériques f'(x) = (f(x+dx)-f(x-dx))/(2*dx) ce qui peu poser des soucis aux bornes du domaine de définition de la fonction...
    Cette approche a deux avantages : elle est facile à mettre en œuvre et elle est efficace. La difficulté est de choisir une bonne valeur pour dx : trop importante et l´approximation est grossière, trop faible elle se perd dans le bruit numérique. En première approche tu peux prendre dx = x / 1000 (ce n´est qu´un point de départ).

    Sinon, il est possible de mettre en place un système de différentiation automatique en gros en associant à chaque variable sa dérivée, mais cela demande une bonne compétence de base de C++ et les temps d´exécution peuvent parfois être assez importants. Cet ouvrage en parle :

    Computational differentiation
    A. GRIEWANK
    Springer

    Pour savoir ce qui est le plus approprié pour toi, dans quel contexte dois-tu réaliser le calcul de ta matrice Jacobienne ? Quel est ton niveau en C++ ?

    À bientôt.

    Le Farfadet Spatial

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    Citation Envoyé par Le Farfadet Spatial Voir le message
    Salut à tous !


    Sinon, il est possible de mettre en place un système de différentiation automatique en gros en associant à chaque variable sa dérivée, mais cela demande une bonne compétence de base de C++ et les temps d´exécution peuvent parfois être assez importants. Cet ouvrage en parle :

    Computational differentiation
    A. GRIEWANK
    Springer
    C'est le cas 2 dans ma description, et c'est ce que j'utilise, mais dans le cas d'une fonction à n variables, il y n dérivées, et là ca deviens lourd d'utilisation.

  6. #6
    Membre confirmé
    Avatar de Le Farfadet Spatial
    Homme Profil pro
    En cours de précision…
    Inscrit en
    Avril 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : En cours de précision…

    Informations forums :
    Inscription : Avril 2008
    Messages : 186
    Points : 604
    Points
    604
    Par défaut
    Salut à tous !

    Citation Envoyé par Gandalf Voir le message
    C'est le cas 2 dans ma description
    Tout à fait. Je ne l’ai pas bien fait apparaître, mais je voulais juste la préciser un peu, car c’est une méthode assez générique, souvent très appropriée.

    Citation Envoyé par Gandalf Voir le message
    dans le cas d'une fonction à n variables, il y n dérivées, et là ca deviens lourd d'utilisation.
    C’est surtout un problème pour l’implémentation (un bon moyen de devenir dingue avec les surcharges) et dans la définition des fonctions. Également, si l’on désire des dérivés à l’ordre n, pour une variable, il n’y a non plus une valeur, mais n + 1, l’occupation mémoire peut devenir importante.

    Bref, à toi Gandalf je n’apprends rien, mais j’espère que cela donne des éléments utiles à Solarium.

    À bientôt.

    Le Farfadet Spatial

  7. #7
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Ceci pourrait intéresser les gens qui veulent en savoir plus sur la différentiation automatique : http://homepage.mac.com/sigfpe/paper.pdf

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/11/2008, 16h42
  2. Matrice Jacobienne - représentation 3D
    Par hudson++ dans le forum MATLAB
    Réponses: 11
    Dernier message: 06/06/2008, 16h43
  3. Calcul de matrice jacobienne
    Par malikakika dans le forum C++Builder
    Réponses: 1
    Dernier message: 04/05/2008, 02h17
  4. matrice jacobienne pour une image
    Par hanane78 dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 23/11/2007, 14h53
  5. Comment définir le type matrice ?
    Par charly dans le forum Langage
    Réponses: 7
    Dernier message: 15/06/2002, 21h01

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