www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Stabilität bei der Simulation (C++ code)


Autor: Daniel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Daniel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
m=1
k=100
d=0.1
x0=10
x1=0
tend = 10
u = nullfunction
dt = 1e-2

Autor: Daniel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
dt = 1e-2

Autor: Daniel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
dt = 1e-3

Autor: I_ H. (i_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: I_ H. (i_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.