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 :

Recherche de la racine mini d'une fonction inconnue


Sujet :

Algorithmes et structures de données

  1. #1
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 815
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 815
    Points : 7 644
    Points
    7 644
    Par défaut Recherche de la racine mini d'une fonction inconnue
    Bonjour,

    Je suis actuellement sur un problème de calcul de stabilité en mécanique. La méthode utilisée aboutit, pour la résolution du problème, à annuler le déterminant d'une matrice carrée de dimension n, tous les termes de la diagonale de la matrice étant fonction d'un paramètre que je note k.

    Mon gros soucis du moment est de trouver la valeur positive minimale de ce paramètre k.
    Par dichotomie, lorsque je parviens à trouver une valeur, rien ne me certifie que ce soit la valeur minimale.
    Pas de problème lorsque j'arrive à déterminer un intervalle probable de la valeur minimale, mais il se trouve quelques configurations où celui-ci ne peut être pré-déterminé assez précisément...

    Pour résumer:
    • connaissant une matrice carrée de taille n (avec n de l'ordre de 20 dans mes calculs actuels) dont les termes diagonaux sont fonction d'un paramètre k strictement positif
    • connaissant la valeur numérique du déterminant de la matrice pour toute valeur de k
    • sachant qu'il existe au moins une valeur de k pour laquelle le déterminant de la matrice est nul
    connaitriez-vous un algorithme permettant de trouver à coup sûr la valeur minimale de k qui annule le déterminant de la matrice?

    On pourrait aussi tourner le problème sous la forme: soit une fonction f(x) dont on ne connait pas l'expression arithmétique, mais dont on peut avoir la valeur pour tout x. Quel algorithme utiliser pour obtenir la plus petite racine de cette fonction?

    Bien évidemment, on parle d'un algorithme rapide! Pas question de passer toutes les valeurs de k par pas de 0.01 !

    Euh... dis comme ça, ça mérite un complément d'enquête sur Google! Mais je laisse le sujet au cas où quelqu'un aurait une idée...

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    je ne saurais que rop te recommander de t'interresser a l'analyse par intervalle, et en particulier a l'algorithme SIVIA.. c'est absolument ideal pour les problemes de stabilité, et c'est global, donc ca trouve TOUTES les olutions sur un intervalle donné.

    par contre, ce qui m'intrigue, c'est que si tu a la matrice, tu dois quand meme pouvoir bidouillerla fonction, la deriver.. c'est pas comme si tu ne la connaissais pas du tout !!

  3. #3
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 815
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 815
    Points : 7 644
    Points
    7 644
    Par défaut
    Citation Envoyé par jobherzt
    par contre, ce qui m'intrigue, c'est que si tu a la matrice, tu dois quand meme pouvoir bidouillerla fonction, la deriver.. c'est pas comme si tu ne la connaissais pas du tout !!
    Je pourrais, mais pour calculer le déterminant d'une matrice d'ordre 20, je suis déjà moyennement motivé... surtout que l'ordre peut évoluer en fonction de la précision que je recherche.
    Ensuite je vais me retrouver avec un polynôme de degré 20, dont il va falloir que je retrouve la racine mini. Et ça, je ne crois pas qu'on ait une méthode analytique...

    Donc même dans ce cas, il va me falloir une méthode numérique...

    Je vais aller voir ce que je trouve sur l'algo SIVIA... voir si ça répond à mon problème.
    Merci

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    l'algo sivia est une methode assez recente et assez generique, il y a peut etre plus simple...

    mais je ne comprends pas, vu que tu dis que pour tout x tu connais f(x), c'est bien que tu le calcule, ce determiant ? non ?

    pouquoi ne pas tenter une methode de newton en partant de k=0 (ou k=epsilon si tu ne peux pas avoir 0).. a priori, ca te menera a la racine la plus petite..

  5. #5
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 815
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 815
    Points : 7 644
    Points
    7 644
    Par défaut
    Citation Envoyé par jobherzt
    mais je ne comprends pas, vu que tu dis que pour tout x tu connais f(x), c'est bien que tu le calcule, ce determiant ? non ?
    oui, oui, c'est ce que j'ai mis dans mon premier post, je calcule le déterminant pour la valeur de k choisie.

    Citation Envoyé par jobherzt
    pouquoi ne pas tenter une methode de newton en partant de k=0 (ou k=epsilon si tu ne peux pas avoir 0).. a priori, ca te menera a la racine la plus petite..
    Je vais tester ça...
    Quoique à la limite, je vais partir sur la méthode de la sécante, ça m'évitera de bidouiller une dérivée...

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    ok, donc si tu calcule le determinant en onction de k, tu dois pouvoir calculer une approximation raisonnable de la dérivée, en calculant :

    (f(k+h)-f(k-h))/2h

    et donc utliser une methode de newton. si tu prend comme valeur initiale une proche de 0 (ton k est il positif ?? sinon, le "plus petit k" n'a pas beaucoup de sens..), vu que c'est polynomiale tu devrais tomber vers la plus petit racine.. le seul risque, c'est que ca part vers les negatifs,dans ce cas faut bidouiller un peu...

    ceci dit, peut etre pas la aintenant tout de suite, mais prend un peu de temps pour jeter un oeil a SIVIA.. c'est lourd a mettre en place le premier coup, mais c'est vraiment efficace, et a mon gout trop meconnu !!

  7. #7
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 815
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 815
    Points : 7 644
    Points
    7 644
    Par défaut
    Bon, j'ai fais quelques essais avec Newton, ça devrait faire l'affaire... quoiqu'il ait fallu bidouiller un peu pour vraiment tomber sur la racine mini, apparemment ma fonction a un comportement déroutant pour l'agorithme!

    Encore merci.

  8. #8
    Membre éclairé
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Points : 751
    Points
    751
    Par défaut
    Citation Envoyé par plegat
    apparemment ma fonction a un comportement déroutant pour l'agorithme!
    si c'est un polynome, normalement Newton marche a tous les coups.. apres, tu peux ameliorer avec un pas adaptatif (Levenberg-Marquardt)
    Citation Envoyé par plegat
    Encore merci.
    c'est un plaisir

  9. #9
    Expert éminent

    Profil pro
    Fabricant et casseur d'avions
    Inscrit en
    Avril 2004
    Messages
    3 815
    Détails du profil
    Informations personnelles :
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fabricant et casseur d'avions
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2004
    Messages : 3 815
    Points : 7 644
    Points
    7 644
    Par défaut
    Citation Envoyé par jobherzt
    si c'est un polynome, normalement Newton marche a tous les coups..
    Ca marche, il me trouve une racine à tous les coups... y'a juste qu'il faut parfois faire trois recherches pour qu'il trouve la plus petite, en adaptant la valeur de départ pour chacune des recherches!

    Mais c'est bon, même en tournant 3 fois, ça va plus vite que ma méthode précédente.

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

Discussions similaires

  1. racines reelles d'une fonction
    Par devlop_RO dans le forum MATLAB
    Réponses: 5
    Dernier message: 08/08/2010, 18h26
  2. Recherche de la racine mini d'une fonction inconnue - Le retour
    Par plegat dans le forum Algorithmes et structures de données
    Réponses: 13
    Dernier message: 19/11/2007, 22h37
  3. Réponses: 3
    Dernier message: 01/05/2007, 12h03
  4. cherche une fonction qui permet de faire une recherche
    Par vbcasimir dans le forum Langage
    Réponses: 7
    Dernier message: 01/09/2005, 17h24
  5. A la recherche de l'appel d'une fonction...
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 24/09/2003, 12h34

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