Witam
Potrzebuję rozwiązać numerycznie równanie modowe światłowodu planarnego. Problem polega na tym że konieczne jest wyznaczenie miejsca zerowego równania modowego, za pomocą gotowej funkcji tego nie można wyznaczyć, a numerycznie również jest problem, bo konieczne jest sprawdzanie warunków przejścia przez zero dla liczb zespolonych. Nie wiem za bardzo jak to zrobić, nie jest to sytuacja jak przy normalnym wyznaczaniu miejsc zerowych numerycznie, więc znane mi algorytmy nie zadziałają. Ma może ktoś na to jakiś pomysł? Tutaj w tym równaniu muszę wyznaczyć teta przy jakiejś zadanej wartości t, reszta to wartości stałe, dla danego światłowodu. Więc będę tylko zmieniał t i potrzebne mi jest wyznaczenie teta. Ja to próbowałem zrobić w ten sposób:
nf=2
ns=1.5
nc=1
k0=1
m=1
teta
i=0
for t=1:5
while i<1
if (imag(2*k0*nf*(t)*cos(teta)-(2*k0*nf*(t)*cos(teta))-(2*(atan((sqrt((nf^2)*((sin(teta))^2)-(ns^2)))/(nf*cos(teta)))))-(2*(atan((sqrt((nf^2)*((sin(teta))^2)-(nc^2)))/(nf*cos(teta)))))-(2*pi*m))<=0)
teta=teta+1
else
if (real(2*k0*nf*(t)*cos(teta)-(2*k0*nf*(t)*cos(teta))-(2*(atan((sqrt((nf^2)*((sin(teta))^2)-(ns^2)))/(nf*cos(teta)))))-(2*(atan((sqrt((nf^2)*((sin(teta))^2)-(nc^2)))/(nf*cos(teta)))))-(2*pi*m))<=0)
teta=teta+1
else
i=i+1;
end
end
end
teta
end
Sprawdzam tutaj czy przy zmianie teta wartość równania zmieni znak. Wiem że tutaj to nie jest zabezpieczone żeby mi sprawdzało i w jedna i w drugą stronę, jednak wiem jak to powinno się zmieniać, więc te warunki powinny być dobrze. Jednak pomimo to liczy mi się to bez końca
Z góry serdecznie dziękuję.