Filter löschen
Filter löschen

not able to plot differenitation from running muller methods

1 Ansicht (letzte 30 Tage)
shiv gaur
shiv gaur am 30 Jan. 2022
function shiv9
clear all
close all
n=linspace(1.43,1.50,15);
D1= linspace(1e-9,3e-7,15);
P=zeros(numel(n),numel(D1));
for j=1:numel(D1)
for k=1: numel(n)
da = D1(j);
na=n(k);
p0 = 1;
p1 = 1.5;
p2 = 2;
TOL = 10^-8;
N0 = 100; format long
h1 = p1 - p0;
h2 = p2 - p1;
DELTA1 = (f(p1,na,da) - f(p0,na,da ))/h1;
DELTA2 = (f(p2,na,da ) - f(p1,na,da ))/h2;
d = (DELTA2 - DELTA1)/(h2 + h1);
i=3;
while i <= N0
b = DELTA2 + h2*d;
D = (b^2 - 4*f(p2,na,da )*d)^(1/2);
if abs(b-D) < abs(b+D)
E = b + D;
else
E = b - D;
end
h = -2*f(p2,na,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,na,da ) - f(p0,na,da ))/h1;
DELTA2 = (f(p2,na,da ) - f(p1,na,da ))/h2;
d = (DELTA2 - DELTA1)/(h2 + h1);
i=i+1;
end
end
P(j)=real(p);
end
plot(D1,P);
end
function y=f(x,na,da)
l=633;
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;
%kx=(2*pi/l)*np*sin(a);
kc=k0*sqrt(x^2-ec);
ka=k0*sqrt(ea-x^2);
kf=k0*sqrt(ef-x^2);
km=k0*sqrt(em-x^2);
ks=k0*sqrt(x^2-es);
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;
%iter = iter + 1;
%end
%end
end
pl plot between dy/dx vs da this is the running program

Antworten (0)

Kategorien

Mehr zu Programming 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