next up previous   
Next: Curve di dispersione: function Previous: Introduzione
Intro Gen: Introduzione Generale  Home: Home page

CORSO DI LAUREA IN INGEGNERIA ELETTRONICA

PROGRAMMI  IN  MATLAB

  DI CAMPI ELETTROMAGNETICI

ANNO ACCADEMICO 1997 / 1998

 

Guida dielettrica a 5 strati generica:

Curve di dispersione

Professore : Marco De Sario

Eseguito da Marinelli  Vito


PROGRAMMA PRINCIPALE

 

guida.m

 

% GUIDA DIELETTRICA STRATIFICATA A 5 STRATI

 

clear;

whitebg;

 

disp('Introduzione delle dimensioni dei vari strati :');

 

disp('Introduci lo spessore (in metri) : ');

c2=input('del primo cuore : ');

g=input('del gap : ');

c4=input('del secondo cuore : ');

 

disp('Introduci l''indice di rifrazione : ');

n(1)=input('del superstrato : ');

n(2)=input('del primo cuore : ');

n(3)=input('del gap : ');

n(4)=input('del secondo cuore : ');

n(5)=input('del sottostrato : ');

 

if n(2)>n(4)

   k=n(2);

   n(2)=n(4);

   n(4)=k;

   k=c2;

   c2=c4;

   c4=k;

   k=n(1);

   n(1)=n(5);

   n(5)=k; 

end

 

for k0=3e5:8e4:3e7

 

    clear zero;

    zero=0;

    d2=g/2+c2;

    d4=g/2+c4;

    errore=1e-11;

    j=1;

    passo=-(n(4)-n(3))/300;

    for nef=n(4):passo:n(3)-passo

       

        for k=1:5

            h(k)=k0*sqrt(abs(n(k)^2-nef^2));

        end

          

        if nef>n(2)

           pol2=mdisp2(h,d2,d4,g);

        else

           pol2=mdisp1(h,d2,d4,g);

        end

 

        if nef~=n(4) & nef~=n(4)+passo

          if nef>n(2) | nef-passo<n(2)      

           if pol2*pol1<=0

              if pol2==0 

                 zero(j)=nef;

                 j=j+1;

              else

                  

                 indice=(log((2*nef-passo)/errore))/log(2);

                 pol11=pol1;

                 pol21=pol2;

                 ak=nef;

                 bk=nef-passo;

                 indice=ceil(indice);

                 ciclo=1;

                 while ciclo<=indice

                       medio=(ak+bk)/2;

                       for k=1:5

                           hmedio(k)=k0*sqrt(abs(n(k)^2-medio^2));

                       end

                       if medio>n(2)

                          determ=mdisp2(hmedio,d2,d4,g);

                       else

                          determ=mdisp1(hmedio,d2,d4,g);

                       end  

                       if determ==0

                          ciclo=indice;

                       else

                          if determ*pol11<0

                             ak=medio;

                             pol21=determ;

                          else

                             bk=medio;

                             pol11=determ;

                          end

                       end

                       ciclo=ciclo+1;

                 end

 

                 zero(j)=medio;

                 j=j+1;

              end

           end

          end

        end

        pol1=pol2;

    end

    lungh=length(zero);

    hold on;

    for k1=1:lungh

        if zero(k1)~=0

           plot(k0,zero(k1),'.k');

        end

    end

end

xlabel('k0');

ylabel('nef');  


next up previous   
Next: Curve di dispersione: function Previous: Introduzione
Intro Gen: Introduzione Generale  Home: Home page
Vito Marinelli
13-6-2000

HyperCounter
BPath Contatore