m=100; % Masse des Fahrrades mit Fahrer in kg
g=9.81; % Erdbeschleunigung im m/s2
A=1.1; % Anströmfläche des Fahrrades mit Fahrer in m2
cw=0.5; % Luftwiderstandkoeffizient
rho=1.2; % Dichte der Luft in kg/m3
cr=0.08; % Rollwiderstandskoeffizient
tmax=60; % maximale Berechnungszeit in s
dt=0.1; % Zeitschrittweite zur Berechnung in s
s0=0; % Anfangsposition in m
v0=30; % Anfangsgeschwindigkeit in km/h
Kw=cw/2*rho*A; % Luftwiderstand
Fr=cr*m*g; % Rollwiderstandskraft in N
kmax=round(tmax/dt)+1; % Anzahl der Berechnungsschritte
s(1)=s0;
v(1)=v0/3.6;
F(1)=-Kw*v(1)^2-Fr;
t(1)=0;
for k=2:kmax,
t(k)=t(k-1)+dt;
s1=s(k-1);
v1=v(k-1);
F(k)=-Kw*v1^2-Fr; % bremsende Kraft in N if v1<=0, F(k)=0; end
v2=v1+dt*(F(k)/m); % neue Geschwindigkeit if v2<0, v2=0; end
s2=s1+dt*(v2+v1)/2; % neuer Weg
s(k)=s2;
v(k)=v2;
if v2==0, break, end% Abbruch bei v=0 end
kor=(v(k-1)-0)/(v(k-1)-v(k)); % Korrektur des letzten Zeitschrittes
v(k)=v(k-1)+kor*(v(k)-v(k-1));
s(k)=s(k-1)+kor*(s(k)-s(k-1));
t(k)=t(k-1)+kor*(t(k)-t(k-1));
F(k)=F(k-1)+kor*(F(k)-F(k-1));
Meine Aufgabe ist auf Basis dieser Programm den beim Ausrollen zurückgelegten Weg in
Abhängigkeit vom Rollwiderstand cr (±50% vom Ausgangswert) ermitteln. Am Ende müssen wir dann grafisch darstellen.
Ich habe die Aufgabe nicht so ganz verstanden. wird es so gemeint, dass die Rollwiderstand (cr) mit der Zeit verändert wird? Kann irgendjemand mir helfen, ein paar tips zu geben, um die Aufgabe zu lösen?
Tausend tausend vielen Dank. ich entschuldige mich für meine dumme Frage
Jetzt musst du die Berechung etwas anpassen, so dass für jeden cr Wert, der Weg und die Geschwindigkeit berechnet werden. Für jeden cr Wert soll dann das Diagramm erstellt werden.
Ich hoffe dass Sie (oder vielleicht die andere) mir weiterhelfen können.
Jetzt ist meine Aufgabe (vielen Dank nochmal dsp) die Zusammenhang zwischen der Weg und cr (cr wurde von 0,04 bis 0,12 jetzt variieret) in Diagram zu erstellen.
Wie dort in der Program geschrieben ist, ist der gesamte F von der Fr abhängig. Ist jedoch die Fr selbst von cr abhängig. Um diese Problem zu lösen, denke ich, dass eine For-Schleife in der Haupt for-schleife addieren muss. Die Erste For-Schleife ist mit der Variant der Zeit abhängig, die andere for-Schleife ist mit der Variant der cr abhängig.
for k=2:kmax,
for n=cr_50:cr_100/600:cr_150,
s1=s(k-1);
F([k,n])=-Kw*v(k-1)^2-cr(n-1)*m*g; % bremsende Kraft in N
t(k)=t(k-1)+dt;
if v1<=0, F(k)=0; end
v2=v1+dt*(F([k,n])/m); % neue Geschwindigkeit if v2<0, v2=0; end
s2=s1+dt*(v2+v1)/2; % neuer Weg
s(k)=s2;
v(k)=v2;
if v2==0, break, end% Abbruch bei v=0 end end
Ehrlich gesagt verstehe ich deinen Code/Gedankengang nicht. Du kannst doch die Berechnung, so lassen und cr in einer äußeren Schleife variieren. Am Ende musst du nur die Ergebnisse von s,v und F abspeichern, bevor sie für einen neuen cr-Wert berechnet werden.
m=100; % Masse des Fahrrades mit Fahrer in kg
g=9.81; % Erdbeschleunigung im m/s2
A=1.1; % Anströmfläche des Fahrrades mit Fahrer in m2
cw=0.5; % Luftwiderstandkoeffizient
rho=1.2; % Dichte der Luft in kg/m3
tmax=60; % maximale Berechnungszeit in s
dt=0.1; % Zeitschrittweite zur Berechnung in s
s0=0; % Anfangsposition in m
v0=30; % Anfangsgeschwindigkeit in km/h
for i=1:length(cr)
Kw=cw/2*rho*A; % Luftwiderstand % cr Wert variieren
Fr = cr(i)*m*g; % Rollwiderstandskraft in N
kmax=round(tmax/dt)+1; % Anzahl der Berechnungsschritte
s(1)=s0;
v(1)=v0/3.6;
F(1)=-Kw*v(1)^2-Fr;
t(1)=0;
for k=2:kmax,
t(k)=t(k-1)+dt;
s1=s(k-1);
v1=v(k-1);
F(k)=-Kw*v1^2-Fr; % bremsende Kraft in N if v1<=0, F(k)=0; end
v2=v1+dt*(F(k)/m); % neue Geschwindigkeit if v2<0, v2=0; end
s2=s1+dt*(v2+v1)/2; % neuer Weg
s(k)=s2;
v(k)=v2;
if v2==0, break, end% Abbruch bei v=0 end
kor=(v(k-1)-0)/(v(k-1)-v(k)); % Korrektur des letzten Zeitschrittes
v(k)=v(k-1)+kor*(v(k)-v(k-1));
s(k)=s(k-1)+kor*(s(k)-s(k-1));
t(k)=t(k-1)+kor*(t(k)-t(k-1));
F(k)=F(k-1)+kor*(F(k)-F(k-1));
% Ergebnisse für den i. cr-Wert speichern % Verwendung einer Struktur
Data(i).Name = ['Rollwiderstand =', num2str(cr(i))];
Data(i).Zeit = t;
Data(i).Weg = s;
Data(i).Geschw = v;
Data(i).Kraft = F;
end
Jetzt musst du nur noch die Ausgabe anpassen, so dass alle Datensätze dargestellt werden. Man kann die Berechnung aber auch ohne eine zusätzliche for-Schleife lösen, in dem man eine elementweise Multiplikation mit .* vornimmt. Da es ja hier wohl auch um das Erlernen der "Matlabsprache" geht, empfehle ich dir, diese Lösung ebenfalls zu erarbeiten.
Zuletzt bearbeitet von DSP am 07.10.2011, 19:25, insgesamt einmal bearbeitet
Verstehe ich nicht...cr soll doch gar nicht geplottet werden.
Es wird der Weg, Kraft und Geschwindigkeit für verschiedene cr berechnet und soll anschließend dargestellt werden. Je nach dem wie groß der Rollwiderstand ist, ergeben sich unterschiedliche Kräfte und Strecken, die zurückgelegt werden.
Soweit ich verstehe, sieht Ihre Gedankegang so aus:
1. Schritt: cr wurde von 0,04 bis 0,12 variiert mit einem Schritte von 0,008. Also 0,04; 0,048; 0,056; ..bis 0,12.
Prinzipiel sieht am Ende so aus: cr(1) = 0,04; cr(2) = 0,048, cr(3) = 0,056, usw.
2. Schritt: In der erste For schleife, wurde i aufgerufen. i=1. Also cr(1) = 0,04.
3. Schritt: Kw wird berechnet
4. Schritt: Fr wird mit cr(1) berechnet
5. Schritt: Kmax wird auch berechnet
6. Schritt: S(1), v(1), sowie t(1) wird auch bestimmen.
7. Schritt: F(1) wird mit cr(1) berechnet. (Fr=cr*m*g)
8. Schritt: In der zweite For Schleife, wurde k aufgerufen. k=2.
9. Schrit: F(2) wird mit cr (1) berechnet.
10. Schritt: V2 wird mit F(2) berechnet.
11. Schritt: S2 wird mit v2 berechnet
12. Schritt: 8. Schritt bis 11, Schritt werden wiederholt bis k=kmax erreicht.
13. Schritt: Nach k=kmax, geht die Vorgang zurück zu 2. Schritt, ist aber diesmal mit i=2.
14. Schritt: die gesamte Vorgänge werden wieder wiederholt.
Als Ausgabe, haben wir dann unterschiedliche cr, mit unterschiedliche weg, geschwindigkeit, usw.
Ist das richtig was Sie gemeint haben?
Mit der plot diagram, habe ich auch nicht so ganz verstanden, was der Professor gemeint hat.
In der Aufgabe hat er gesagt, dass es die Zusammenhang zwischen der cr (als x-Achse) und weg (als y-Achse) dargestellt werden muss. Das bedeutet vielleicht, es wird fast 600 Linien in der Diagram gezeigt. Jede Linie entspricht der Zeit. Also Linie für 0.1 Sekunden, Linie für 0.2 Sekunden, usw, bis Linie für 60 Sekunden.
Andere Möglichkeit (denke ich, es wird einfacher), dass es die Zusammenhang zwischen der Zeit (x-Achse) und weg (y-achse) dargestellt werden muss. Jede Linie entspricht dann unterschiedliche cr. Also Linie für 0.04, Linie für 0.048, Linie für 0,056, usw. bis Linie für 0,12.
m=100; % Masse des Fahrrades mit Fahrer in kg
g=9.81; % Erdbeschleunigung im m/s2
A=1.1; % Anströmfläche des Fahrrades mit Fahrer in m2
cw=0.5; % Luftwiderstandkoeffizient
rho=1.2; % Dichte der Luft in kg/m3
tmax=60; % maximale Berechnungszeit in s
dt=0.1; % Zeitschrittweite zur Berechnung in s
s0=0; % Anfangsposition in m
v0=30; % Anfangsgeschwindigkeit in km/h
for i=1:length(cr)
Kw=cw/2*rho*A; % Luftwiderstand % cr Wert variieren
Fr = cr(i)*m*g; % Rollwiderstandskraft in N
kmax=round(tmax/dt)+1; % Anzahl der Berechnungsschritte
s(1)=s0;
v(1)=v0/3.6;
F(1)=-Kw*v(1)^2-Fr;
t(1)=0;
for k=2:kmax,
t(k)=t(k-1)+dt;
s1=s(k-1);
v1=v(k-1);
F(k)=-Kw*v1^2-Fr; % bremsende Kraft in N if v1<=0, F(k)=0; end
v2=v1+dt*(F(k)/m); % neue Geschwindigkeit if v2<0, v2=0; end
s2=s1+dt*(v2+v1)/2; % neuer Weg
s(k)=s2;
v(k)=v2;
if v2==0, break, end% Abbruch bei v=0 end
kor=(v(k-1)-0)/(v(k-1)-v(k)); % Korrektur des letzten Zeitschrittes
v(k)=v(k-1)+kor*(v(k)-v(k-1));
s(k)=s(k-1)+kor*(s(k)-s(k-1));
t(k)=t(k-1)+kor*(t(k)-t(k-1));
F(k)=F(k-1)+kor*(F(k)-F(k-1));
% Maximum des zurückgelegten Weges für den i. cr-Wert speichern
s_limits(i)=s(end);
% Ergebnisse vor nächster Berechnung löschen clear s;
clear F;
clear v;
clear t;
end
tausend vielen Dank für die ausführliche Antwort, DSP... ich werde versuchen das Program allein zu machen, damit ich auch verstehe...
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.