WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

function auf zwei verschieden Wege integrieren

 

Becks_jn
Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 02.09.11
Wohnort: ---
Version: R2018
     Beitrag Verfasst am: 13.02.2013, 20:20     Titel: function auf zwei verschieden Wege integrieren
  Antworten mit Zitat      
Hallo Liebe Matlab User,

ich habe ein Problem und zwar habe ich eine DGL mit zwei unterschiedlichen Verfahren gelöst. Eine Lösung ist richtig und die andere nicht. Weiß nicht wo ich ein Fehler gemacht habe und hoffe, dass ihr mir weiterhelfen könnt. Hier meine Function

Code:

function f=RampeViertelFzg_fcn(t,y)

global u0 a v0 Ma mr ba ca cr

f=zeros(4,1);
%%Berechnung der Anregung

if t<a/v0
    u=u0/a*v0*t
else
    u=u0;
end

xa=y(1);
xap=y(2);
xr=y(3);
xrp=y(4);

xapp=(-ba*(xap-xrp)-ca*(xa-xr))/Ma;
xrpp=(ba*(xap-xrp)+ca*(xa-xr)+cr*u-cr+xr)/mr;

f=[xap;xapp;xrp;xrpp];
%
% f=[y(2);
%     (-ba*(y(2)-y(4))-ca*(y(1)-y(3)))/Ma;
%     y(4);
%     (ba*(y(2)-y(4))+ca*(y(1)-y(3))-cr*y(3)+cr*u)/mr];
 


Der Code, der Kommentiert ist, ist der, der die richtige Lösung produziert. Der unkommentierte Code gibt mir ein falsches Ergebnis aus.

Zum besseren Verständnis ist hier mein Hauptskript:
Code:

clc, clear all,close all;

global u0 a v0 Ma mr ba ca cr

a=0.5;
ba=750;
ca=30000;
cr=100000;
mr=25;
u0=0.25;
v0=54/3.6;
Ma=250;

tspan=0:.01:4
y0=[0 0 0 0 ];

[t,y]=ode23s(@RampeViertelFzg_fcn,tspan,y0);

l=1;
for k=0:.01:tspan(end)
    if k<a/v0
    r(l)=u0/a*v0*t(l)
else
    r(l)=u0;
    end
    l=l+1
end


figure(1)
subplot(3,1,1);
plot(t,y(:,1),t,y(:,3));
legend('Aufbauschwingung','Radschwingung',0);
grid on;
hold on;
plot(tspan,r,'r','LineWidth',2);
ylim([0 0.8])

subplot(3,1,2);
plot(t,y(:,2),t,y(:,4));
legend('Aufbaugeschwindigkeit','Radgeschwindigkeit',0);
grid on;
ylim([-5 10])

subplot(3,1,3);
plot(y(:,1),y(:,2));
grid on;
ylim([-2 4])
 



Vielen Dank für eure Hilfe!

Lg
Private Nachricht senden Benutzer-Profile anzeigen


Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 13.02.2013, 20:50     Titel: Re: function auf zwei verschieden Wege integrieren
  Antworten mit Zitat      
Hallo,

Becks_jn hat Folgendes geschrieben:

Code:
xrpp=(ba*(xap-xrp)+ca*(xa-xr)+cr*u-cr+xr)/mr;
%     (ba*(y(2)-y(4))+ca*(y(1)-y(3))-cr*y(3)+cr*u)/mr];
 


In der richtigen Lösung steht ...+cr*u-cr+xr
In der falschen steht ...+cr*u-cr*xr

Also ein * statt +

Grüße,
Seban
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Becks_jn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 02.09.11
Wohnort: ---
Version: R2018
     Beitrag Verfasst am: 13.02.2013, 21:10     Titel:
  Antworten mit Zitat      
Hey super...
Danke...

Oh man, so ein dummer Fehler, aber wenn man die ganze Zeit davor sitzt, dann wird man irgendwann ein bisschen blind.

Danke nochmal!
Private Nachricht senden Benutzer-Profile anzeigen
 
Seban
Forum-Meister

Forum-Meister


Beiträge: 600
Anmeldedatum: 19.01.12
Wohnort: ---
Version: ab R2014b
     Beitrag Verfasst am: 13.02.2013, 21:19     Titel:
  Antworten mit Zitat      
Becks_jn hat Folgendes geschrieben:
Oh man, so ein dummer Fehler, aber wenn man die ganze Zeit davor sitzt, dann wird man irgendwann ein bisschen blind.

Kennen wir alle Very Happy

Gern geschehen
_________________

Richtig fragen
Debugging
Private Nachricht senden Benutzer-Profile anzeigen
 
Becks_jn
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 02.09.11
Wohnort: ---
Version: R2018
     Beitrag Verfasst am: 13.02.2013, 21:39     Titel:
  Antworten mit Zitat      
Ich habe noch eine Frage. Very Happy Very Happy

Ich habe noch ein anderes Programm geschrieben... Dort integriere ich das Bremsverhalten eines Autos...
Als Anfangsbedingung habe ich dort eine Geschwindigkeit gegeben, die mit der Zeit immer kleiner wird. Gibt es eine Möglichkeit die ODE abzubrechen, wenn ich die Geschwindigkeit von 0 erreicht habe? Ansonsten wird mein Auto ja rückwärts beschleunigt. Das will ich nicht so gerne.

Vielen Dank für eine Antwort!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.