Lorenz Equation using Newton's Method
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I am doing my project on writing Matlab code for the Lorenz equation using Newton's Method. My task was to write a code by using while loop so that the roots converge. I have posted my code below, where I couldn't able get the convergence.
r=28; sigma=10; beta=8/3;
x1=0; y1=0; z1=0;
x2=sqrt(beta*(r-1)); y2=sqrt(beta*(r-1)); z2=r-1;
x3=-sqrt(beta*(r-1)); y3=-sqrt(beta*(r-1)); z3=r-1;
nx=500; nz=500;
xmin=-40; xmax=40; zmin=-40; zmax=40;
x_grid=linspace(xmin,xmax,nx); z_grid=linspace(zmin,zmax,nz);
[X,Z]=meshgrid(x_grid,z_grid);
RelTol=1.e-06; AbsTol=1.e-09;
for i=1:3
if i==1 , x=x1; y=y1; z=z1; end
if i==2 , x=x2; y=y2; z=z2; end
if i==3 , x=x3; y=y3; z=z3; end
error=Inf;
for j=1:nx
for k=1:nz
y0=3*sqrt(2);
while error<=max(RelTol*max(abs([x,y,z])),AbsTol)
J = [-sigma, sigma,0;r-z_grid(k),-1,-x_grid(j);y0,x_grid(j),-beta];
rhs = -[(sigma*(y0-x_grid(j)));(x_grid(j)*(r-z_grid(k))-y0);((x_grid(j)*y0)-(beta*z_grid(k)))];
delta_xyz= J\rhs;
x_grid(j) = x_grid(j) + delta_xyz(1);
y0 = y0+delta_xyz(2);
z_grid(k) = z_grid(k) + delta_xyz(3);
error=max(abs(delta_xyz));
end
X(j,k)=x_grid(j);
Z(k,j)=z_grid(k);
end
end
end
0 Kommentare
Antworten (0)
Siehe auch
Kategorien
Mehr zu Numerical Integration and Differential Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!