Filter löschen
Filter löschen

Info

Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.

Can someone please check my code, not quite sure where im going wrong

1 Ansicht (letzte 30 Tage)
Daniel Martelli
Daniel Martelli am 22 Sep. 2020
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021
clc
clear
%--------------------------------------------------------------------------------------------------------%
p = 1.2; %variables given to me in question
g = 9.81;
m = 77;
c = 1;
a1 = .7;
a2 = 50;
t1 = 50;
t2 = 70;
v0 = 50;
h0 = 2.5;
T = .005;
tmid = (t1+t2)/2; %formula gives to find what t mid is
%--------------------------------------------------------------------------------------------------------%
A = @(t) 1/2*(a2-a1)*tanh(10.*((t-tmid)/((t2-t1))))+(1/2*(a2+a1));
T1 = 0:1:120; %used for plotting x axis
D = @(T1)(p*c.*(A(T1)))/2*m; %drag constant
plot(T1, A(T1), 'b-', 50, .7, 'ro', 70, 50, 'ro') %t1 occurs at 50 seconds in, the area is .7 so I used that as a y co-ordinate and 50 as my x, marking that spot with a red circle.
axis([0 120, .6 70]);
xlabel('Time')
ylabel('Area')
title('Area over Time')
%--------------------------------------------------------------------------------------------------------%
x(1) = 0;, vx(1) = v0;, y(1) = 0;, vy(1) = 0; %initial variables used to start the loop
for n=1 %initialize time index
while 1 %forever while loop
if y(n) > h0, break; end % break when ground is reached
tn = (n-1)*T; %nth time instant in seconds
t(n) = tn; %build time vector, needed for plotting
Dn = D(n).*(tn); %drag constant in time tn
v = sqrt(vx(n)^2+vy(n)^2); %problem tells me to write "no need to save V in an array"- not sure what this means
ax(n) = -Dn * vx(n)*v; %horizontal acceleration
v(n) = sqrt(vx(n)^2+vy(n)^2);
ay(n)= -(D(tn)) * vy(n)*v(n)+g; ;
x(n+1) = x(n)+T*vx(n);
vx(n+1)= vx(n)+T*ax(n);
y(n+1)=y(n)+T*vy(n);
vy(n+1)= vy(n)+T*ay(n);
n = n+1; %updates the index to use N+1, so second round will use 2 for N, as N is defined as 1, N= 1+1, whill use 2 for N in next loop and so on.
end
end
%--------------------------------------------------------------------------------------------------------%
Vc_1 = sqrt((2*m*g)/p*c*A(30));
Vc_2 = sqrt((2*m*g)/p*c*A(80));
Vc_3 = sqrt((2*m*g)/p*c*a1);
Vc_4 = sqrt((2*m*g)/p*c*a2);
  8 Kommentare
Daniel Martelli
Daniel Martelli am 23 Sep. 2020
It did crash, but once i saved the worked it didnt crash
Image Analyst
Image Analyst am 23 Sep. 2020
Saving the m-file won't prevent the script from throwing an error. If it's not saved, it will actually ask you to save the file before it runs even the first line of the script. So it can't crash before it's saved. However, we're glad its working (for whatever reason) now.

Antworten (0)

Diese Frage ist geschlossen.

Community Treasure Hunt

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

Start Hunting!

Translated by