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

Fehlermeldung (Division durch Null?)

 

thadod
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 25.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2013, 19:16     Titel: Fehlermeldung (Division durch Null?)
  Antworten mit Zitat      
Hallo Liebe Forengemeinde.

Ich bin neu hier im Forum und hoffe ihr könnt mir helfen...

Ich habe leider ein kleines Problem mit einer Simulation. Es handelt sich um einen Zweimassenschwinger zur Simulation eines Fahrwerks. Die Dämpfung berechne ich hierbei nicht mit einem konstanten Dämpfer, sondern mit einem Dämpfer der hierbei Abhängig vom Volumenstrom ist, welcher durch einen Strömungsiwderstand (Blende) fließt. Es geht mir hierbei hauptsächlich um den von der Blende erzeugten Druckverlust

Dieser berechnet sich wie folgt:
p=\frac{\dot{V}^2 \cdot 8 \cdot \rho}{\alpha \cdot d^4}

Hierbei ist  \dot{V} der Volumenstrom, \rho die Dichte der Flüssigkeit, \alpha der Durchflusskoeffizient und d der Durchmesser der Blende.

Den Volumenstrom berechne ich über \dot{V}=A \cdot v , wobei  A die Fläche der Blende und  v die Strömungsgeschwindigkeit der Flüssigkeit durch die Blende ist. Die Strömungsgeschwindigkeit hole ich mit hierbei aus der Anregung des Massenschwingers. Das SImulationsmodell kann dem Bild entnommen werden...

Nun zu meiner Frage:
Ich simuliere mit einem ''fixed-step" und dem Solver ode3 (Bogacki-Shampine) und einer Schrittweite von 0.01. Es kommt bei meinem Zweimassenschwinger zu folgender Fehlermeldung:

Derivative input 1 of (.../Inegrator' at time 2.0100000000000002 is Inf or NaN. Stopping simulation. There may be a singularity in the solution. If not, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances)

Was mich wundert, da ich ja eigentlich nicht durch Null teile...
Ich rechne aber in der SI-Einheit [m] und nicht [mm] weshalb ich insbesondere für den Nenner eine sehr kleine Zahl erhalte. Ich vermute, dass Simulink diesen Wert als 0 interpretiert und deshalb die Simulation abbricht.

Nun zu meinem Anliegen:

Wie kann ich diesem Problem entgehen? Eventuell einen anderen Solver wählen bzw. eine andere Schrittweite? Denn wenn ich für z.B. 0.00001 simuliere wird die Rechenzeit ja unnötig hoch ausfallen.

Leider ist mir dieses Problem zum ersten mal untergekommen und ich weiß grad nicht so recht weiter, weshalb ich mich an eure professionelle Hilfe wenden wollte.

P.S. wenn ich statt  d^4 einen anderen Wert z.B. 0.005 eingebe. Dann rechnet Simulink ganz normal. Erst wenn ich einen kleineren Wert, z.B.  5 \cdot 10^{-9} eintippe, tritt das Problem auf.

Verzeiht mir wenn ich mein Problem nicht eindeutig schildern sollte. Ich hoffe trotzdem auf eure Hilfe und bin für jeden Tipp dankbar.

Mit freundlichen Grüßen und bestem Dank das es euch gibt thadod

DämpfungFrageForum.png
 Beschreibung:

Download
 Dateiname:  DämpfungFrageForum.png
 Dateigröße:  10.8 KB
 Heruntergeladen:  628 mal
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2013, 07:15     Titel:
  Antworten mit Zitat      
Kannst du nicht \dot{V} = A v = \frac{d^2}{4} \pi v einsetzen? Dann fallen alle Durchmesser aus deiner Gleichung:


<br />
p = \frac{\pi^2}{2 \alpha} v^2 \rho
<br />

viele Grüße
Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
thadod
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 25.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2013, 17:52     Titel:
  Antworten mit Zitat      
Hallo und Danke für die Antwort.

Leider funktioniert das nicht, da sich die Gleichung mit dem Volumenstrom aus einer anderen Fläche zusammensetzt als der Durchmesser durch den ich bei der Blende teile.

Ich habe mittlerweile gemerkt, dass das Problem auch nicht durch den Zähler oder Nenner verursacht wird, sondern durch etwas ganz anderes... Vllt. bin ich noch ein bischen ungeübt im Umgang mit Simulink aber ich habe mal versucht das wie folgt vereinfacht darzustellen...

Man stelle sich einen Zwei-Massen-Schwinger mit passiven Feder- und Dämpferelementen vor. Ich habe eine entsprechende Datei angehängt.

Wenn man das m-file durchlaufen lässt und sich den Scope anguckt, sieht ja an sich alles recht vernünftig aus...

Man kann sich mein Problem nun wie folgt vorstellen. Gebt statt d_A einfach mal manuell z.B. 100000 ein. Dann kommt die Fehlermeldung (s.o.) Woran liegt das? Bzw. was kann ich mir darunter vorstellen oder wie kann ich den Fehler interpretieren? Und am wichtigsen Smile Wie kann ich den Fehler beheben?

Da es sich bei meiner tatsächlichen Simulation um einen Aktuator handelt, der über eine Drossel für einen Druckverlust sorgt, bin ich leider an die Abmaße und somit an die entstehenden Drücke gebunden die mir vorgegeben werden.

Wie kann ich der Fehlermeldung...

Derivative input 1 of (.../Inegrator' at time 2.0100000000000002 is Inf or NaN. Stopping simulation. There may be a singularity in the solution. If not, try reducing the step size (either by reducing the fixed step size or by tightening the error tolerances)

...also entgehen?

Mit freundlichen Grüßen und bestem Dank... thadod

MFile.m
 Beschreibung:

Download
 Dateiname:  MFile.m
 Dateigröße:  365 Bytes
 Heruntergeladen:  345 mal
PassivesFahrwerk.mdl
 Beschreibung:

Download
 Dateiname:  PassivesFahrwerk.mdl
 Dateigröße:  35.98 KB
 Heruntergeladen:  351 mal
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
knilumis_baltaM
Forum-Century

Forum-Century


Beiträge: 241
Anmeldedatum: 20.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2013, 06:51     Titel:
  Antworten mit Zitat      
Der Lösungsvorschlag wird dir doch gegeben: "Try reducing step size". Das hilft auch bei deinem Beispiel wenn d_A auf 100000 gestellt ist. Mit einer Schrittweite von 0.000001 kann man dein Modell simulieren. Was auch helfen könnte ist den ode45 zu nehmen (+ kleiner Schrittweite).
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 - 2024 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.