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

Algorithmes et structures de données Discussion :

Programmation d'une fonction dans Rn


Sujet :

Algorithmes et structures de données

  1. #1
    Membre confirmé
    Avatar de simone.51
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 525
    Points
    525
    Par défaut Programmation d'une fonction dans Rn
    Bonjour,
    Voilà, mon problème :
    Je veux effectuer des opérations sur une fonction dans Rn (dérivé, résolution F(X)=0 avec Newton, ...), mais je n'arrive pas à programmer ma fonction...

    Je programme en Ada, voici ce que j'ai tenté de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function F( X : Vecteur ) return Vecteur is
        valeur : Vecteur(1..X'length);
    begin
        valeur(1) := 3*X(1) + 4*X(2)+2;
        valeur(2) := X(1) - 3*X(2) + 6;
        return valeur;
    end F;
    Donc, ça, ça marche, mais là où ça coince, c pour le calcul numérique de la dérivé...

    Je sais que la formule est :
    dij = (fj(x1,...,xi+h,xn) - fj(x1,...,xn) ) / h
    Mais, j'arrive pas à la calculer, j'arrive pas à avoir Xi+h

    Le problème aussi (que j'ai oublié de mentionner), c que j'ai jamais fait d'informatique numérique de ce style

    Merci de votre aide

  2. #2
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut
    il me semble que tu calcules la transposée de ta matrice jacobienne.
    autrement je ne vois pas ce qui cloche. fixes-tu ton pas h ?
    quel est ton ensemble d'arrivée ?

  3. #3
    Membre éprouvé Avatar de Nemerle
    Inscrit en
    Octobre 2003
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 106
    Points : 1 213
    Points
    1 213
    Par défaut
    Attention: si tu as une fonction f:R^n-->R que je note f(X1,...,Xn) comme toi, la dérivée partielle en Xi se calcule:

    1) En considérant que f est une fonction de R dans R, soit f(Xi). Tu considères que "les autres" variables Xj sont des constantes: ici, la dérivée de Xj si j<>i est 0.

    2) donc si tu veux avoir une formule en limite:

    Fi'(X1,...,Xn)= Lim(h->0) [ F'i(X1,...,Xi+h,...,Xn)/h]


    Un exemple: si F(X1,X2,X3)=2X1X2^2-3sin(X2X3) alors

    F'1(X1,X2,X3)=2X2^2
    F'2(X1,X2,X3)=4X1-3X3cos(X2X3)
    F'3(X1,X2,X3)=0-3X2cos(X2X3)

    Pour rappel, j'ai utilisé (aX^2)'=2ax, sin(aX)'=acos(aX).

    Voili-voilou

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 277
    Points : 230
    Points
    230
    Par défaut
    A première vue, sa fonction est R^2 -> R^2. Un premier probleme semble être qu'il veut calculer f(x1+h,x1) - f(x1,x2), ce qui est une opération entre éléments de R^2 et je serais étonné que ce soit implémenté (mais je connais pas ADA).

    Il faudrait que tu programmes une opération "1ère coordonnée" et une opération "2nde coordonnée).

  5. #5
    Membre confirmé
    Avatar de simone.51
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 525
    Points
    525
    Par défaut
    Citation Envoyé par Le Furet
    A première vue, sa fonction est R^2 -> R^2. Un premier probleme semble être qu'il veut calculer f(x1+h,x1) - f(x1,x2), ce qui est une opération entre éléments de R^2 et je serais étonné que ce soit implémenté (mais je connais pas ADA).

    Il faudrait que tu programmes une opération "1ère coordonnée" et une opération "2nde coordonnée).
    C tout à fait ça, mais, je comprends pas trop comment je dois proceder....

  6. #6
    Membre confirmé
    Avatar de simone.51
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 525
    Points
    525
    Par défaut
    En fait, c bon, j'ai reussi, à faire ce que je voulais....


    Et hop, mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     function Derive(valX : Vecteur ; i : Integer ; x : Integer) return Float is
            val : Float;
        	 h : Float := 0.0001;
            valXTemp,Fi,Fih : Vecteur(1..valX'length);
        begin
            valXTemp := valX;
            -- On modifie valX selon le x pour lequel on dérive f
            valXTemp(x) := valX(x)+h;
     
            Fih := F(valXTemp);
            Fi := F(valX);
     
            val := (Fih(i)-Fi(i)) / h;
     
            return val;
    end Derive;
    Je sais pas pourquoi je me suis pris la tete, en fait, c'était tout con...

    Merci de vos réponse en tout cas

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Appel d'une fonction dans un programme
    Par sheridan08 dans le forum PL/SQL
    Réponses: 1
    Dernier message: 11/11/2011, 17h59
  2. Réponses: 2
    Dernier message: 02/12/2010, 14h29
  3. appeler une fonction dans un autre programme
    Par elghadi_mohamed dans le forum Langage
    Réponses: 3
    Dernier message: 19/10/2007, 19h58
  4. comment utiliser un programme comme une fonction dans une macro exel
    Par ERICKO dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/10/2007, 23h39
  5. Réponses: 4
    Dernier message: 26/01/2005, 13h08

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