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

2 views (last 30 days)
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

Answers (1)

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

Sign in to comment.

Categories

Find more on Mathematics in Help Center and File Exchange

Tags

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!