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 comentarios

Torsten
Torsten el 26 de Feb. de 2022
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 ?
shiv gaur
shiv gaur el 26 de Feb. de 2022
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 el 26 de Feb. de 2022
Editada: Torsten el 26 de Feb. de 2022
Then you have to update x according to Newton's method:
xnew = xold - y(xold)/y'(xold)
shiv gaur
shiv gaur el 26 de Feb. de 2022
difficult for derivative of equation
Torsten
Torsten el 26 de Feb. de 2022
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 ?
shiv gaur
shiv gaur el 26 de Feb. de 2022
pl edit the program

Iniciar sesión para comentar.

Respuestas (0)

Categorías

Más información sobre Programming en Centro de ayuda y File Exchange.

Productos

Versión

R2021b

Etiquetas

Preguntada:

el 26 de Feb. de 2022

Comentada:

el 26 de Feb. de 2022

Community Treasure Hunt

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

Start Hunting!

Translated by