Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Hey guys I\'m making this code in matlab but I need to incorporate the fact of h

ID: 3619662 • Letter: H

Question

Hey guys I'm making this code in matlab but I need to incorporate the fact of having a new input which variable can be called 'nstep' and change its operation to print out only after nstep iterations instead of every time. Please help me double looping this code.


function spring


time = 0;
tstop = input('Please enter the value for tstop now: ');
m = input('Please enter the value for m now: ');
k = input('Please enter the value for k now: ');
b = input('Please enter the value for b now: ');
dt = input('Please enter the value for the time step now: ');
pos = input('Please enter the value for the starting position now: ');
vel = input('Please enter the value for the starting velocity now: ');

i = 1;

while time < tstop
t(i) = time;
xdot(i) = vel;
x(i) = pos;
acc = -(k/m)*pos - (b/m)*vel;
x2dot(i) = acc;
vel = vel + acc*dt;
pos = pos + vel*dt;
time = time + dt;
i = i + 1;
end
out = [t',x2dot', xdot',x']

Explanation / Answer

//hope this springmass function will help you. function springmass % springmass.m % Oscillating spring-mass system % Solves % z'' = (K/m)*(zstar - z - L) - g - (D/m) z' % where z is the location of the mass and zstar is the location of the % support (which may be a prescribed function of t) % % From http://www.amath.washington.edu/~rjl/fdmbook/chapter5 (2007) m = 1; % mass g = 9.8; % gravitational constant L = 2; % rest length of spring K = 10; % spring constant D = 0.2; % damping coefficient % specify motion of upper support for spring: zstar = @(t) zeros(size(t)); % not moving, always at z = 0. % zstar = @(t) 0.1*sin(5*t); % Forced by motion of upper support. t0 = 0; % initial time z0 = -2; % initial location of mass v0 = 0; % initial velocity of mass y0 = [z0; v0]; % initial data for y(t) as a vector tfinal = 20; f = @(t,y) springf(t,y,m,g,L,K,D,zstar); % solve ode: odesolution = ode45(f,[t0 tfinal],y0); % plot z = y(1) as a function of t: figure(1) clf t = linspace(0, tfinal, 500); y = deval(odesolution, t); subplot(2,1,1) plot(t,y(1,:)) axis([0 tfinal -5 0]) title('z(t) as a function of time') %%% simulation: answerstring = input('Start simulation? ','s'); if strcmp(answerstring,'y') | strcmp(answerstring,'yes') figure(2) clf t = linspace(0, tfinal, 200); y = deval(odesolution, t); theta = linspace(0,2*pi,50); % parameter for drawing circular mass rm = 0.2; % radius of mass xm = rm*cos(theta); % x-cordinates of circle ym = rm*sin(theta); % y-cordinates of circle s = linspace(0,1,100); % parameter for drawing spring xs = rm*sin(10*pi*s); % x-coordinates of spring dt = t(2) - t(1); % time increment between plotting times for n=1:length(t) zstarn = zstar(t(n)); % location of support at time t(n) fill([-2*rm 2*rm 2*rm -2*rm -2*rm],... [zstarn zstarn zstarn+.2 zstarn+.2 zstarn],'b') % plot upper support hold on plot(xs,zstarn-s*(zstarn-(y(1,n)+rm))) % plot spring fill(xm,ym+y(1,n),'b') % plot mass axis([-1 1 -5 2]) daspect([1 1 1]) drawnow % produce the plot pause(dt) % pause so that elapsed time is real time hold off end end % running the simulation %------------------------------------------------------------------------ function f = springf(t,y,m,g,L,K,D,zstar); z = y(1); % position v = y(2); % velocity zstart = feval(zstar, t); % location of upper support f1 = v; f2 = K/m * (zstart - z - L) -g - D/m * v; f = [f1; f2];