[Matlab] Résolution équation de dispersion

Résolu
nanou1205 -  
 manudi -
Bonjour,
je veux résoudre l'équation de dispersion des ondes de surface
er*u0*h+u*h*tanh(u*h)=0
avec er(epsillon r)=4.32
h=2mm
u0=beta^2-k0^2
u=beta^2-k0^2*er
k0=2*pi*f/c; c=3*10^8 ;f est la fréquence

je cherche beta ou beta/k0 pour un intervalle de fréquences de 0 à qcques GHz
et je veu tracer beta/k0 en fonction de f
Configuration: Windows Vista
Internet Explorer 7.0

2 réponses

  1. Sacabouffe Messages postés 9427 Date d'inscription   Statut Membre Dernière intervention   1 863
     
    Salut
    Faut commencer par simplifier ton équation de dispersion.
    En posant x=h*u, t'es amené à résoudre
    er*x+x*tanh(x)+er*(er-1)*h*k0^2=0
    Étant donné le comportement de la tangente hyperbolique, ça paraît assez sage de chercher les zéros au voisinage de -er*h*k0^2 à chaque fois.
    c=3e8;
    h=2e-3;
    er=4.32;
    f=(0:1e6:10e9);
    k0=2*pi*f/c;
    l=er*(er-1)*h*k0.^2;
    g=@(x,p)(er*x+x*tanh(x)+l(p));
    xzero=zeros(size(l));
    for p=1:size(l,2)
    xzero(p)=fzero(@(x)(g(x,p)),-er*h*k0(p)^2);
    end
    %% Pour beta, on prend la racine
    %% de partie imaginaire positive
    beta=sqrt(xzero/h+er*k0.^2);
    figure(1);plot(f,real(beta));
    figure(2);plot(f,imag(beta));
    %% Vérification pour l'équation
    erroreq=er*h*(beta.^2-k0.^2)+...
    h*(beta.^2-er*k0.^2).*tanh(h*(beta.^2-er*k0.^2));
    figure(3);plot(f,erroreq);
    Bonne nuit
    1
  2. manudi
     
    Ut=bUxx ,U(0.x)=sin(pix/L),
    U(t,0)=0,
    U(t,L)=0,
    L=2 m;b=1;
    pas spatial
    M=100,
    dx=L/(M-1);
    dt=dx^2/(4*b)
    N=T/dt +1
    for it=1:N
    1