[Matlab] Résolution équation de dispersion

Résolu/Fermé
nanou1205 - 18 mars 2009 à 15:16
 manudi - 2 févr. 2010 à 16:02
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

2 réponses

Sacabouffe Messages postés 9427 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 29 mai 2009 1 832
19 mars 2009 à 01:44
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
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