how to converge equation

xnew=1;
k0=2*pi/632;
t3=1000;
t2=2000;
n1=1.512;n2=1.521;n3=4.1-1i*0.211;
n4=1;
m=0;
m=0;
k1=k0*sqrt(n1^2-xnew^2);
k2=k0*sqrt(n2^2-xnew^2);
k3=k0*sqrt(n3^2-xnew^2);
k4=k0*sqrt(n4^2-xnew^2);
n=1;
while d>0.0001 & n< 1000
n=n+1;
xold=xnew
k1=k0*sqrt(n1^2-xnew^2);
k2=k0*sqrt(n2^2-xnew^2);
k3=k0*sqrt(n3^2-xnew^2);
k4=k0*sqrt(n4^2-xnew^2);
y=(k2)*t2-atan(k1/1i*k2)-atan((k3/k2)*tan(atan(k4/1i*k2)-k3*t3))+m*pi;
d=abs(xnew-xold);
end
disp([n,xnew,xold])
pl show the value by varying the t3 1 t0 1000
plot(t3,xnew)

6 Comments

You never update x.
So xold = xnew already in the first step, d=0 and MATLAB consequently exits the while loop.
What do you want to make converge in the above code ?
we want to find root of the equation at which y=0 again by varying the value of t3 the root vary so plot t3 vs xnew
Torsten
Torsten on 26 Feb 2022
Edited: Torsten on 26 Feb 2022
Then you have to update x according to Newton's method:
xnew = xold - y(xold)/y'(xold)
difficult for derivative of equation
Why don't you use fsolve to solve
real(y) = 0 and imag(y) = 0 for
real(x) and imag(x) ?
Don't you have a licence for the optimization toolbox ?
pl edit the program

Sign in to comment.

Answers (0)

Products

Release

R2021b

Tags

Asked:

on 26 Feb 2022

Commented:

on 26 Feb 2022

Community Treasure Hunt

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

Start Hunting!