MATLAB: Error in system lorenz code

systemlorenz

i have these errors:
Error in odearguments (line 90)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode45 (line 115)
odearguments(FcnHandlesUsed, solver_name, ode, tspan, y0, options, varargin);
Error in lorenzsystem (line 10)
[~,sol1] = ode45(@lorenz,[0 tf],[1;2;3]);
and the code is :
clear; clc; close
global sigma rho beta
rho = 28;
sigma = 10;
beta = 8/3;
tf = 60;
[~,sol1] = ode45(@lorenz,[0 tf],[1;2;3]);
[~,sol2] = ode45(@lorenz,[0 tf],[1;2;3.0001]);
[C,h] = size(sol1);
angle = 0;
figure;
writerObj = VideoWriter('Lorenz.avi'); % Name it.
writerObj.FrameRate = 10; % How many frames per second.
writerObj.Quality = 100;
open(writerObj);
for j = 1:C
p1(j,:)= sol1(j,:);
p2(j,:)= sol2(j,:);
% Plot
plot3(p1(:,1),p1(:,2),p1(:,3),'k', p2(:,1),p2(:,2),p2(:,3),'r')
hold on
plot3(p1(1,1),p1(1,2),p1(1,3),'ko','markerfacecolor','k')
plot3(p2(1,1),p2(1,2),p2(1,3),'rd','markerfacecolor','r')
plot3(p1(j,1),p1(j,2),p1(j,3),'ko','markerfacecolor','k')
plot3(p2(j,1),p2(j,2),p2(j,3),'rd','markerfacecolor','r')
hold off
axis([-20 20 -40 40 0 50])
axis off
set(gca,'color','none')
% Rotation
camorbit(angle,0,[p1(1,1),p1(1,2),p1(1,3)])
angle = angle + (360/C);
% Record
% set(gcf, 'units','normalized','outerposition',[0 0 1 1])
frame = getframe(gcf);
writeVideo(writerObj, frame);
end
close(writerObj)
clf; close;
disp('Done');
%% Function : function ydot = lorenz(t,y)
global sigma rho beta
%LORENZ Equation of the Lorenz chaotic attractor.
% ydot = lorenz(t,y).
ydot(1) = sigma *(y(2) -y(1));
ydot(2) = y(1)*(rho -y(3)) -y(2);
ydot(3) = y(1)*y(2) -beta*y(3);
ydot =[ydot(1);ydot(2);ydot(3)];
could anyone please help me ??thank you

Best Answer

function myfun()
rho = 28;
sigma = 10;
beta = 8/3;
tf = 60;
[~,sol1] = ode45(@lorenz,[0 tf],[1;2;3;rho;sigma;beta]);
sol1 = sol1(:,1:3) ;
[~,sol2] = ode45(@lorenz,[0 tf],[1;2;3.0001]);
sol2 = sol2(:,1:3) ;
[C,h] = size(sol1);
angle = 0;
figure;
writerObj = VideoWriter('Lorenz.avi'); % Name it.
writerObj.FrameRate = 10; % How many frames per second.
writerObj.Quality = 100;
open(writerObj);
for j = 1:C
p1(j,:)= sol1(j,:);
p2(j,:)= sol2(j,:);
% Plot
plot3(p1(:,1),p1(:,2),p1(:,3),'k', p2(:,1),p2(:,2),p2(:,3),'r')
hold on
plot3(p1(1,1),p1(1,2),p1(1,3),'ko','markerfacecolor','k')
plot3(p2(1,1),p2(1,2),p2(1,3),'rd','markerfacecolor','r')
plot3(p1(j,1),p1(j,2),p1(j,3),'ko','markerfacecolor','k')
plot3(p2(j,1),p2(j,2),p2(j,3),'rd','markerfacecolor','r')
hold off
axis([-20 20 -40 40 0 50])
axis off
set(gca,'color','none')
% Rotation
camorbit(angle,0,[p1(1,1),p1(1,2),p1(1,3)])
angle = angle + (360/C);
% Record
% set(gcf, 'units','normalized','outerposition',[0 0 1 1])
frame = getframe(gcf);
writeVideo(writerObj, frame);
end
close(writerObj)
clf; close;
disp('Done');
end
%% Function : function ydot = lorenz(t,y)
% global sigma rho beta
%LORENZ Equation of the Lorenz chaotic attractor.
function ydot = lorenz(t,y)
rho = y(4) ;
sigma = y(5) ;
beta = y(5) ;
ydot(1) = sigma *(y(2) -y(1));
ydot(2) = y(1)*(rho -y(3)) -y(2);
ydot(3) = y(1)*y(2) -beta*y(3);
ydot =[ydot(1);ydot(2);ydot(3)];
ydot = [ydot ; rho;sigma;beta] ;
end
Related Question