Help... Getting errors with v_plot and x_plot

1 次查看(过去 30 天)
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');

采纳的回答

Wick
Wick 2018-5-4
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');

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Programming 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by