Delta*u  :n ominaisarvot ympyräsektorissa, Besselin funktiot

bessel.mws 4.5.05  HA

[Coo] Cooper: Intro to PDEs with Matlab

[Mol] Moler: Webbikirja: Ch 11 PDEs

[PDEtool] PDE toolbox, manuaali

[Coo] 8.4 Eigenfunctions for the disk  s. 315 alk.

Ominaisarvotehtävä:   -Delta*phi = lambda*phi  , kun alueena on a-säteinen ympyrä, reunalla Dirichlet'n 0-RE:t.

Esitetään Delta  napakoordinaatistossa ja suoritetaan muuttujanerottelu yritteellä phi(r,Theta) = R(r)*Phi(Theta)  .

Tässä olemme kiinnostuneita ympyräsektorista, kaikilla reunoilla Dirichlet'n 0-RE:t. Olkoon sektorin keskuskulma = beta .

Tehtävä hoituu modifioimalla kiekkokäsittelyä sopivasti. Merkitään "yhteistä arvoa" mu :llä, tällä kertaa RE:t => 0 < mu  .

Kun vielä suoritataan muuttujanvaihto (skaalaus):   U(rho) = R(r) , missä rho = r*sqrt(lambda) , saadaan U :lle alla oleva Besselin diffyhtälö .

Phi  toteuttaa yhtälön:     diff(Phi(Theta),Theta,Theta)+mu*Phi(Theta) = 0  .

>    restart:with(plots):

Warning, the name changecoords has been redefined

>    beta:=0.9: display(complexplot(exp(I*phi),phi=0..beta,view=[-.1..1.1,-.1..1]),complexplot(r*exp(I*beta),r=0..1),complexplot(r,r=0..1),axes=box,textplot([0.1,0.04,'beta'])); beta:='beta':

[Maple Plot]

Erityisesti olemme kiinnostuneita seuraavasta:

>    beta:=3*Pi/2:  display(complexplot(exp(I*phi),phi=0..beta,view=[-1..1,-1..1]),complexplot(r*exp(I*beta),r=0..1),complexplot(r,r=0..1),axes=box); beta:='beta':

[Maple Plot]

>    bessdy:=rho^2*diff(U(rho),rho,rho)+rho*diff(U(rho),rho)+(rho^2-mu)*U(rho)=0;

bessdy := rho^2*diff(U(rho),`$`(rho,2))+rho*diff(U(rho),rho)+(rho^2-mu)*U(rho) = 0

>   

>    #?Bessel

>    dsolve(bessdy,U(rho));

U(rho) = _C1*BesselJ(mu^(1/2),rho)+_C2*BesselY(mu^(1/2),rho)

BesselY:n kertoimeksi on otettava 0, koska se lähestyy -infinity , kun proc (rho) options operator, arrow; 0 end proc  .   Havainnollistetaan esimerkein ( sqrt(mu) = .5  ).

>    display(array([[plot(BesselJ(0.5,x),x=0..4),plot(BesselY(0.5,x),x=0.1..4)]]));

>    limit(BesselY(0.5,x),x=0,right);

>    #?BesselJZeros

>   

>    #BesselJZeros(s, n1..n2)

>    #BJZ:=BesselJZeros(0.5, 0..10);

>    #display(plot([seq([BJZ[k],0],k=1..nops([BJZ]))],style=point,symbol=circle,symbolsize=20,color=black),plot(BesselJ(0.5,x),x=0..32));

Phi  - yhtälöstä ja sektorin janareuna-arvoista (0), seuraa:

>    Phi:=Theta->sin(sqrt(mu)*Theta);  # missä

Phi := proc (Theta) options operator, arrow; sin(sqrt(mu)*Theta) end proc

>    sqrt(mu)=n*Pi/beta;

mu^(1/2) = n*Pi/beta

Merkitään s = sqrt(mu) , eli s^2 = mu  .

Otetaan tapaus: yksikköympyrän sektori: beta = 3*pi/2 , Dirichlet-RE't  Tarkoitus on approksimoida L-alueen ominaisarvoja ja -funktioita.

>    beta:=3*Pi/2; s:=n->n*Pi/beta;  Phi:='Phi':

beta := 3/2*Pi

s := proc (n) options operator, arrow; n*Pi/beta end proc

Jotta 0-RE toteutuisi a-säteisellä sektorin kaarella, on oltava R(a)=0, ts. J[s](a*sqrt(lambda)) = 0 , ts a*sqrt(lambda) = rho[m,n] , joka tarkoittaa

Besselin funktion J[s(n)] nollakohtaa numero m . Tästäpä saadaan tehtävän ominaisarvot lambda[m,n] = (rho[m,n]/a)^2  .

>   

>    rho:=(n,M)->BesselJZeros(s(n), 1..M);

rho := proc (n, M) options operator, arrow; BesselJZeros(s(n),1 .. M) end proc

>    #rho(1,10);evalf(%);

>    #evalf(BesselJZeros(s(1), 1..10));

>    #evalf(lam(1,10));

>    #sort([evalf(seq(lam(n,20),n=1..20))]);

>    #?sort

>    #L[1]:=[evalf(rho(1,100))]: L[1][1..4];

>    for n to 10 do
  Rho[n]:=[evalf(rho(n,100))];
end do: n:='n':

>   

>    #map(z->z^2,Rho[2][1..10]);

>    #Rho[4][1..5];

Pyritään approksimoimaan L-alueen ominaisarvoja yllä olevan "L-sektorin" ominaisarvoilla. Valitaan ympyrän säde niin, että pinta-alat samat

>    3=3/4*Pi*sade^2; solve(%,sade);

3 = 3/4*Pi*sade^2

-2/Pi^(1/2), 2/Pi^(1/2)

>    a:=2/sqrt(Pi);

a := 2/Pi^(1/2)

>    ominarvot:=map(z->evalf((z/a)^2),sort(map(op,[seq(Rho[n],n=1..10)]))):

>    #Rho[7][1..5];

>    ominarvot[1..10];

[8.949413587, 14.35593038, 20.71457531, 27.99359948, 33.49270982, 36.16984945, 44.07113731, 45.22553605, 55.14647211, 55.64545904]

No nythän osuvat ihan kohdalleen

>   

>    R:=(m,n,r)->BesselJ(s(n),r*(Rho[n][m])/a);

R := proc (m, n, r) options operator, arrow; BesselJ(s(n),r*Rho[n][m]/a) end proc

>    evalf(R(2,3,2));

.2528265481e-1

>    phi:=(m,n,r,Theta)->R(m,n,r)*sin(s(n)*Theta); lambda:=(m,n)->evalf((Rho[n][m]/a)^2);

phi := proc (m, n, r, Theta) options operator, arrow; R(m,n,r)*sin(s(n)*Theta) end proc

lambda := proc (m, n) options operator, arrow; evalf(Rho[n][m]^2/a^2) end proc

>    m:='m':n:='n':

>    lambda(m,n),phi(m,n,r,t);

.7853981635*Rho[n][m]^2, BesselJ(2/3*n,1/2*r*Rho[n][m]*Pi^(1/2))*sin(2/3*n*t)

>    lambda(3,2);

89.28877467

>   

>    addcoords(z_cylindrical,[z,theta,r],[r*cos(theta),r*sin(theta),z]);

Warning, coordinates already exists, system redefined.

>    m:=1:n:=1:lambda(m,n);plot3d(phi(m,n,r,Theta),Theta=0..3*Pi/2,r=0..1,coords=z_cylindrical,orientation=[-132,71],axes=BOXED,scaling=constrained,style=patchcontour);

8.949413587

[Maple Plot]

>    m:=2:n:=1:lambda(m,n);plot3d(phi(m,n,r,Theta),Theta=0..3*Pi/2,r=0..1,coords=z_cylindrical,orientation=[-132,71],axes=BOXED,scaling=constrained,style=patchcontour);

33.49270982

[Maple Plot]

>    m:=1:n:=2:lambda(m,n);plot3d(phi(m,n,r,Theta),Theta=0..3*Pi/2,r=0..1,coords=z_cylindrical,orientation=[-132,71],axes=BOXED,scaling=constrained,style=patchcontour);

14.35593038

[Maple Plot]

>    m:=2:n:=2:lambda(m,n);plot3d(phi(m,n,r,Theta),Theta=0..3*Pi/2,r=0..1,coords=z_cylindrical,orientation=[-132,71],axes=BOXED,scaling=constrained,style=patchcontour);

44.07113731

[Maple Plot]

>    m:=1:n:=3:lambda(m,n);plot3d(phi(m,n,r,Theta),Theta=0..3*Pi/2,r=0..1,coords=z_cylindrical,orientation=[-132,71],axes=BOXED,scaling=constrained,style=patchcontour);

20.71457531

[Maple Plot]

>    m:=2:n:=3:lambda(m,n);plot3d(phi(m,n,r,Theta),Theta=0..3*Pi/2,r=0..1,coords=z_cylindrical,orientation=[-132,71],axes=BOXED,scaling=constrained,style=patchcontour);

55.64545904

[Maple Plot]

>   

Nähdään, että n:n mukaan alue jakaantuu n:ään sektoriin, missä n määrää Besselin funktion kertaluvun s(n)..

Kuvat ovat samanlaiset kuin Molerissa s. 11 sarakejärjestyksessä katsotut. Myös ominaisarvot ovat tarkalleen samat, joten kaikki meni hienosti.

Tässä eivät ole kaikki ominaisarvot suuruusjärjestyksessä, vaan siinä on pelissä kolmen alimman Besselin funktion kaksi ensimmäistä nollakohtaa.

Esim.

>    lambda(1,4);

27.99359948

Tässä on 20 ekaa suuruusjärjestyksessä:

>    ominarvot[1..20];

[8.949413587, 14.35593038, 20.71457531, 27.99359948, 33.49270982, 36.16984945, 44.07113731, 45.22553605, 55.14647211, 55.64545904, 65.92102217, 68.19551326, 73.54170957, 77.53943309, 81.70365384, 89.28...
[8.949413587, 14.35593038, 20.71457531, 27.99359948, 33.49270982, 36.16984945, 44.07113731, 45.22553605, 55.14647211, 55.64545904, 65.92102217, 68.19551326, 73.54170957, 77.53943309, 81.70365384, 89.28...

Tästä on hyvä lähteä L-alueen käsittelyyn Molerin tyyliin.