Index exceeds the number of array elements. Index must not exceed 1. Error in shiv7 (line 7) da = D(j);

2 Ansichten (letzte 30 Tage)
function shiv7
%K0= (2*pi/1530)*1e6:(2*pi/10)*1e6:(2*pi/1630)*1e6;
%K0= linspace((2*pi/1530)*1e6,(2*pi/1630)*1e6,5);
D=linspace(0,300,10);
for j=1:length(D)
da = D(j);
p0 = 1;
p1 = 1.5;
p2 = 2;
TOL = 10^-8;
N0 = 100; format long
h1 = p1 - p0;
h2 = p2 - p1;
DELTA1 = (f(p1,da) - f(p0,da ))/h1;
DELTA2 = (f(p2,da ) - f(p1,da ))/h2;
d = (DELTA2 - DELTA1)/(h2 + h1);
i=3;
while i <= N0
b = DELTA2 + h2*d;
D = (b^2 - 4*f(p2,da )*d)^(1/2);
if abs(b-D) < abs(b+D)
E = b + D;
else
E = b - D;
end
h = -2*f(p2,da)/E;
p = p2 + h;
if abs(h) < TOL
disp(p)
break
end
p0 = p1;
p1 = p2;
p2 = p;
h1 = p1 - p0;
h2 = p2 - p1;
DELTA1 = (f(p1,da ) - f(p0,da ))/h1;
DELTA2 = (f(p2,da ) - f(p1,da ))/h2;
d = (DELTA2 - DELTA1)/(h2 + h1);
i=i+1;
end
P(j)=real(p);
%R(j)=real(r);
end
plot(D,P)
end
function y=f(kx,da )
l=6330*(10)^(-10);
k0=2*pi/l;
nc=1.33;
ec=nc^2;
na=1.43;
ea=na^2;
nf=1.59;
ef=nf^2;
nm=0.064+1i*4;
em=nm^2;
ns=1.495;
es=ns^2;
df=0.5e-6;
dm=0.03e-6;
%da=0.06e-6;
%kx=(2*pi/l)*np*sin(a);
kc=sqrt(kx^2-ec*k0^2);
ka=sqrt(ea*k0^2-kx^2);
kf=sqrt(ef*k0^2-kx^2);
km=sqrt(em*k0^2-kx^2);
ks=sqrt(kx^2-es*k0^2);
rfm=(kf-km)/(kf+km);
rms=(km-ks)/(ks+km);
rfa=(kf-ka)/(kf+ka);
rac=(ka-kc)/(ka+kc);
a=(1-rfm)/(1+rfm);
b=(1-rms*exp(2*1i*dm*km))/(1+rms*exp(2*1i*dm*km));
c=(1-rfa)/(1+rfa);
f=(1-rac*exp(2*1i*da*ka))/(1+rac*exp(2*1i*da*ka));
pfms=2*atan(1i*a*b);
pfac=2*atan(1i*c*f);
y=2*kf*df-pfms-pfac;
end

Antworten (1)

Walter Roberson
Walter Roberson am 7 Jan. 2022
D = (b^2 - 4*f(p2,da )*d)^(1/2);
That line is overwriting your vector D
  3 Kommentare

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Mathematics finden Sie in Help Center und File Exchange

Tags

Produkte


Version

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by