Datum: 14.05.2008 19:49
Hallo Leute, ich überlege gerade warum meine Simulation bei unterschiedlicher Schrittweite und bei der Variation der Parameter (m,k,d) manchmal instabil wird. Im Grund geht es um ein Feder-Masse-Dämpfer System. Die DGL ist mx''+dx'+kx - u = 0 ./main > data Zum ploten nehme ich gnuplot plot 'data' using 1:2 Ich hänge den Code an. Wie bestimme ich die kritische Schrittweite in Abhängigkeit von m,d,k an? Grüsse, Daniel
Datum: 14.05.2008 20:10
m=1 k=100 d=0.1 x0=10 x1=0 tend = 10 u = nullfunction dt = 1e-2
Datum: 15.05.2008 02:11
Es gibt keine "kritische" Schrittweite. Je weniger Schritte desto ungenauer, je mehr desto genauer. Wenn's ungenau wird, neigt die Sache zu Instabilität. Wolltest du das exakt durchrechnen, müsstest du der Sache symbolisch zuleibe rücken. Das macht aber keinen Spaß, weil es rechenaufwendig ist und häufig keine (automatisch ermittelbare) Lösung gibt. Kleiner Tipp: Wenn du nicht grad einen 486er benutzt sind mal eben 10k Schritte garkein Problem, 100k und 1Mio auch nicht (höchstens für gnuplot, also gib zB. nur jeden 10. Wert aus). Du kannst dir zB. auch die gemittelte Differenz zwischen verschiedenen Schrittweiten angucken, zB. zwischen 1e-n und 2e-n für verschiedene n. Dann weist du so ungefähr, bis wohin es Sinn macht.
Datum: 15.05.2008 19:22
@I_H Danke für Deine Antwort es ist schon einbischen langer her als ich Signale und Systeme gehört habe, aber ich meine, dass das Problem ähnlich der Zeitquantisierung ist. Da war etwas mit der Z Transformation und der Forderung alle Nullstellen im Einheitskreis zu haben. Nur denke ich liegt hier das Problem anders herum. Man hat nicht ein kontinuirliches System, dass man stabil diskretisiert, sondern "baut" diskretes Model direkt über die Simulation auf. Ich bin mir noch nicht ganz sicher, dass es darauf zurückzuführen ist. Ich werde mal probieren die Eigenantwort (bei u(t)=0) zu berechnen und dann die Eígenantwort x(t) Fouriertransformieren um die grösste Frequenz im Band bestimmen. Vielleicht wird f_max gerade 1/dt_min sein. Die Verkleinerung der Schrittweite könnte ich glaub bis 1e-6 runtersetzen, bei noch kleineren Werten würde ich schnell sehr misstrauisch werden. (ohne rationale Erklärung :-) Grüsse, Daniel
Datum: 15.05.2008 20:46
Das würde dann erklären wieso die Sache ab einer bestimmten Grenze instabil wird, aber die Genauigkeit ist ja 'n ganz anderes Gebiet, da geht's um Numerik (auch wenn es stabil bleibt kommen ja unterschiedliche Ergebnisse mit unterschiedlichen Schrittweiten raus). Im Endeffekt rechnest du da ja die Diff. Gleichungen durch, und das ist im Allgeimenen nur genau für Schrittweite gegen 0. Du willst da ja ein natürlich auftretendes Phänomen modellieren, und das läuft eben (praktisch) kontinuierlich ab.
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel

