Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- % PART i
- clc;
- clear;
- tspan = [0,10];
- x0 = [1,1];
- L = 3;
- kappa = 2;
- rho = L + kappa/sqrt(2);
- sigma = @(x,z) x^2 + 4*x - 0.5*z;
- delta = @(x,z,t) cos(t) + 2*sin(3*x*z);
- v = @(x,z) -rho*sign(sigma(x,z));
- u = @(x,z) v(x,z) - 2*x^3 - 10*x^2 - 12*x + x*z + 2*z;
- [t,x] = ode45(@(t,x) f_1(x,t,u,delta),tspan,x0);
- x_surface = linspace(0,2,20);
- z_surface = 2*x_surface.^2 + 8*x_surface;
- sigma_val = zeros(length(x),1);
- u_val = zeros(length(x),1);
- for i = 1:length(x)
- sigma_val(i) = sigma(x(i,1),x(i,2));
- u_val(i) = u(x(i,1),x(i,2));
- end
- % Visualise solutions
- figure('Name','i_1','NumberTitle','off','Position', [100, 100, 700, 400]);
- plot(x(:,1),x(:,2),'Linewidth',2);
- hold on
- plot(x_surface,z_surface,'Linewidth',2);
- title('x(t), z(t) With sliding surface \sigma = 0');
- xlabel('x(t)');
- ylabel('z(t)');
- figure('Name','i_2','NumberTitle','off','Position', [100, 100, 700, 400]);
- subplot(2,1,1);
- plot(t,x(:,1),t,x(:,2),t,sigma_val,'Linewidth',2);
- title('t, (x(t), z(t), \sigma(t))');
- xlabel('Time (s)');
- ylabel('x(t), z(t), \sigma(t)');
- legend('x(t)','z(t)','\sigma(t)');
- xlim(tspan);
- subplot(2,1,2);
- plot(t,u_val,'Linewidth',2);
- title('t, u_{sm}(t)');
- xlabel('Time (s)');
- ylabel('u_{sm}(t)');
- xlim(tspan);
- %% PART ii
- clc;
- clear;
- tspan = [0,10];
- x0 = [1,1];
- epsilon = 0.1;
- L = 3;
- kappa = 2;
- rho = L + kappa/sqrt(2);
- sigma = @(x,z) x^2 + 4*x - 0.5*z;
- delta = @(x,z,t) cos(t) + 2*sin(3*x*z);
- v = @(x,z) -rho*min(max((sigma(x,z)/epsilon),-1),1);
- u = @(x,z) v(x,z) - 2*x^3 - 10*x^2 - 12*x + x*z + 2*z;
- [t,x] = ode45(@(t,x) f_1(x,t,u,delta),tspan,x0);
- sigma_val = zeros(length(x),1);
- u_val = zeros(length(x),1);
- for i = 1:length(x)
- sigma_val(i) = sigma(x(i,1),x(i,2));
- u_val(i) = u(x(i,1),x(i,2));
- end
- % Visualise solutions
- figure('Name','ii','NumberTitle','off','Position', [100, 100, 700, 400]);
- subplot(2,1,1);
- plot(t,x(:,1),t,x(:,2),t,sigma_val,'Linewidth',2);
- title('t, (x(t), z(t), \sigma(t))');
- xlabel('Time (s)');
- ylabel('x(t), z(t), \sigma(t)');
- legend('x(t)','z(t)','\sigma(t)');
- xlim(tspan);
- subplot(2,1,2);
- plot(t,u_val,'Linewidth',2);
- title('t, u_\epsilon(t)');
- xlabel('Time (s)');
- ylabel('u_\epsilon(t)');
- xlim(tspan);
- %% PARTS iii and iv
- clc;
- clear;
- tspan = [0,10]; % Visualise solution from 0 to 5 seconds
- x0 = [1,1,0]; % Initial condition of 1
- L = 3;
- kappa = 2;
- tau = 1;
- rho = L + kappa/sqrt(2);
- sigma = @(x,z) x^2 + 4*x - 0.5*z;
- delta = @(x,z,t) cos(t) + 2*sin(3*x*z);
- u = @(x,z,xi) - 2*x^3 - 10*x^2 - 12*x + x*z + 2*z - rho*xi;
- [t,x] = ode45(@(t,x) f_2(x,t,tau,u,sigma,delta),tspan,x0);
- u_val = zeros(length(x),1);
- delta_val = zeros(length(x),1);
- for i = 1:length(x)
- u_val(i) = u(x(i,1),x(i,2),x(i,3));
- delta_val(i) = delta(x(i,1),x(i,2),t(i));
- end
- delta_hat = rho*x(:,3);
- % Visualise solutions
- figure('Name','iii','NumberTitle','off','Position', [100, 100, 700, 400]);
- subplot(2,1,1);
- plot(t,x(:,1),t,x(:,2),t,x(:,3),'Linewidth',2);
- title('t, (x(t), z(t), \xi(t))');
- xlabel('Time (s)');
- ylabel('x(t), z(t), \xi(t)');
- legend('x(t)','z(t)','\xi(t)');
- xlim(tspan);
- subplot(2,1,2);
- plot(t,u_val,'Linewidth',2);
- title('t, u_{eq}(t)');
- xlabel('Time (s)');
- ylabel('u_{eq}(t)');
- xlim(tspan);
- figure('Name','iv','NumberTitle','off','Position', [100, 100, 700, 400]);
- plot(t,delta_val,t,delta_hat,'Linewidth',2);
- title('Disturbance Estimation');
- xlabel('Time (s)');
- ylabel('Disturbances');
- legend('\delta(t)','\delta_{hat}(t)');
- xlim(tspan);
- %%
- function dX = f_1(x,t,u,delta)
- dx = x(1)^2 + 3*x(1) - 0.5*x(2);
- dz = -2*u(x(1),x(2)) + delta(x(1),x(2),t);
- dX = [dx;dz];
- end
- %%
- function dX = f_2(x,t,tau,u,sigma,delta)
- dx = x(1)^2 + 3*x(1) - 0.5*x(2);
- dz = -2*(u(x(1),x(2),x(3))) + delta(x(1),x(2),t);
- dxi = (-1/tau)*x(3) + (1/tau)*sign(sigma(x(1),x(2)));
- dX = [dx;dz;dxi];
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement