Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Intersection arc cercle et gaussienne avec Matlab



  1. #1
    Lostinounette

    Intersection arc cercle et gaussienne avec Matlab


    ------

    Bonjour à Tous,

    Je cherche l'intersection de d'un arc de cercle et d'une courbe gaussienne et je souhaite faire cette résolution avec Matlab, voici les deux équations de base :

    Eq cercle : (x-x0)²+(y-y0)²=r²
    Eq gausienne : y=a*exp[-b*(x-x0)²]

    Je pose X=(x-x0)² et en combinant les équations j'obtiens :

    X+[a*exp(-b*X)-y0]²-r²=0

    Je cherche à résoudre cette équation avec Matlab, les fonctions usuelles de résolution ne sont pas assez puissantes pour y arriver, avez vous une idée ?

    Merci.

    -----

  2. 📣 Nouveau projet éditorial de Futura
    🔥🧠 Le Mag Futura est lancé, découvrez notre 1er magazine papier

    Une belle revue de plus de 200 pages et 4 dossiers scientifiques pour tout comprendre à la science qui fera le futur. Nous avons besoin de vous 🙏 pour nous aider à le lancer...

    👉 Je découvre le projet

    Quatre questions à explorer en 2022 :
    → Quels mystères nous cache encore la Lune 🌙 ?
    → Pourra-t-on bientôt tout guérir grâce aux gènes 👩‍⚕️?
    → Comment nourrir le monde sans le détruire 🌍 ?
    → L’intelligence artificielle peut-elle devenir vraiment intelligente 🤖 ?
  3. #2
    fiatlux

    Re : Intersection arc cercle et gaussienne avec Matlab

    Salut,
    Tu peux utiliser la méthode de Newton. Le code:
    function [zero,res,niter]=newton(f,df,x0,tol,nmax,varar gin)
    x=x0; fx=feval(f,x,varargin{:});
    dfx=feval(df,x,varargin{:});
    niter=0; diff=tol+1;
    while diff>=tol && niter<=nmax
    niter=niter+1; diff=-fx/dfx; x=x+diff; diff=abs(diff);
    fx=feval(f,x,varargin{:}); dfx=feval(df,x,varargin{:});
    end
    if niter>nmax
    fprintf('La méthode de Newton est arrêtée.');
    end
    zero=x; res=fx;
    return
    Ensuite tu crées 2 fonctions, fun et dfun. La première est la fonction dont tu cherches le zéro, dans ton cas fun(x)=x+(a*exp(-b*x)-y0)^2-r^2;
    et la deuxième est sa dérivée, dans ton cas: dfun(x)=1-2*a*b*exp(-b*x)*(a*exp(-b*x)-y0);
    Pour chacune tu précises les paramètres a,b,y0 et r (les mêmes pour les 2 évidemment):
    function [ res ] = fun( x )
    a=1; b=0.25; y0=2; r=5;
    res=x+(a*exp(-b*x)-y0)^2-r^2;
    end
    function [ res ] = dfun( x )
    a=1; b=0.25; y0=2; % pas besoin de r ici
    res=1-2*a*b*exp(-b*x)*(a*exp(-b*x)-y0);
    end
    Pour l'utiliser, tu choisis un x initial 'x0', une tolérance d'erreur 'tol' et un nombre max d'itérations 'nmax', par exemple:
    x0=1;
    tol=0.0001;
    nmax=1000;
    f=@fun;
    df=@dfun;
    [zero,res,niter]=newton(f,df,x0,tol,nmax);
    disp(strcat('X = ', num2str(zero)));
    La pie niche-t-elle haut ? Oui, la pie niche haut.

  4. #3
    Lostinounette

    Re : Intersection arc cercle et gaussienne avec Matlab

    Merci je vais étudier ça.

Discussions similaires

  1. Est-ce un cercle/arc de cercle?
    Par Lucas41 dans le forum Mathématiques du collège et du lycée
    Réponses: 18
    Dernier message: 06/11/2013, 18h51
  2. Système d'équations (intersection d'un cercle et d'une droite)
    Par Rangsey dans le forum Mathématiques du collège et du lycée
    Réponses: 5
    Dernier message: 06/05/2010, 22h13
  3. Réponses: 3
    Dernier message: 02/12/2009, 22h56
  4. [exo] fit d'une courbe avec une gaussienne sous Matlab
    Par wooflele dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 16/06/2009, 21h59
  5. intersection de cercle géodésique
    Par danathane dans le forum Archives
    Réponses: 3
    Dernier message: 02/12/2008, 18h40