Help... Getting errors with v_plot and x_plot

1 visualización (últimos 30 días)
Anthony Hill
Anthony Hill el 4 de Mayo de 2018
Respondida: Wick el 4 de Mayo de 2018
g = 9.81; m = 68.1; c = 0.25; h = 2; t = 0;
% Initial guess v_eu = 0; v_true = 0; x_eu = 350; x_true = 0; err_v = 100; err_x = 0;
i = 1; fprintf('Iter\t t\t\t x_true\t\t v_ture\t\t x_Euler\t v_Euler\t Error(x)\t Error(v)\n') while x_eu > -50 % Stopping criteria fprintf('%u\t %8.2f\t %8.2f\t%8.2f\t %8.2f\t %8.2f\t %8.2f\t%8.2f\n',i,t,x_true,v_true,x_eu,v_eu,err_x,err_v) slope = g-(c/m)*v_eu^2; % v' = slope
t = t+h; %Interval
x_true =(m/c)*log(cosh(t*sqrt(g*c/m)));
x_eu = x_eu - v_eu*h;
% Velocity
v_true = sqrt(m*g/c)*tanh(t*sqrt(g*c/m));
v_eu = v_eu + slope*h;
err_v = abs((v_true - v_eu)/v_true*100);
err_x = abs((x_true -(x_eu))/x_true*100);
*v_plot(1)=0;
v_plot(i+1)=v_eu;
**x_plot(1)=350;
x_plot(i+1)= x_eu*;*
*
i = i +1;
end t_plot=0:h:t; plot(t_plot,v_plot,t_plot,x_plot) title('(Problem 1(a) Euler Method') xlabel('Time (s)'); ylabel('V and X');

Respuesta aceptada

Wick
Wick el 4 de Mayo de 2018
Your code was quite difficult to understand without proper formatting and extra '*' spread around. I cleaned up the lines and ran the following code and it ran just fine.
Because you're making your vectors larger in the loop you should really consider clearing them before you start the script. That way, the value of the vector from the run before doesn't influence the results of this run. I added a 'clearvars' to the start for that purpose. Otherwise, this seemed to work just fine.
clearvars
g = 9.81;
m = 68.1;
c = 0.25;
h = 2;
t = 0;
% Initial guess
v_eu = 0;
v_true = 0;
x_eu = 350;
x_true = 0;
err_v = 100;
err_x = 0;
i = 1; fprintf('Iter\t t\t\t x_true\t\t v_ture\t\t x_Euler\t v_Euler\t Error(x)\t Error(v)\n')
while x_eu > -50 % Stopping criteria
fprintf('%u\t %8.2f\t %8.2f\t%8.2f\t %8.2f\t %8.2f\t %8.2f\t%8.2f\n',i,t,x_true,v_true,x_eu,v_eu,err_x,err_v)
slope = g-(c/m)*v_eu^2; % v' = slope
t = t+h; %Interval
x_true =(m/c)*log(cosh(t*sqrt(g*c/m)));
x_eu = x_eu - v_eu*h;
% Velocity
v_true = sqrt(m*g/c)*tanh(t*sqrt(g*c/m));
v_eu = v_eu + slope*h;
err_v = abs((v_true - v_eu)/v_true*100);
err_x = abs((x_true -(x_eu))/x_true*100);
v_plot(1)=0;
v_plot(i+1)=v_eu;
x_plot(1)=350;
x_plot(i+1)= x_eu;
i = i +1;
end
t_plot=0:h:t;
plot(t_plot,v_plot,t_plot,x_plot)
title('(Problem 1(a) Euler Method')
xlabel('Time (s)');
ylabel('V and X');

Más respuestas (0)

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by