Forum: Compiler & IDEs Integrieren mit C


von Sven P. (svenp)


Lesenswert?

Hallo,

möchte mit meinem AVR32 (AT32UC3C) Eval Board eine berechnete 
Beschleunigung in Geschwindigkeit umrechnen.
Habe mir bereits ein paar Integrationsmethoden durch gelesen und möchte 
euch nun fragen welche eurer Meinung nach die Genauste ist und in C 
nicht zu schwer ist um zu setzten.

Wie bestimme ich die Zeitgrenzen (über Timer?)


Vielen Dank für die Hilfe

von Yalu X. (yalu) (Moderator)


Lesenswert?

Wenn möglich, sorgt man dafür, dass die Abtastintervalle alle gleich
lang sind. Dann läuft die näherungsweise Integreation im einfachsten
Fall auf die Aufsummierung der Messwerte hinaus. Etwas genauer, aber
immer noch ziemlich einfach, ist die Trapezmethode, bei der in jedem
Schritt nicht nur der letzte, sondern die zwei letzten Messewerte zur
Gesamtsumme addiert werden.

Um von der Summe auf die Geschwindigkeit zu kommen, muss sie noch mit
dem Abtastintervall und bei der Trapezmethode zusätzlich mit 0,5
multipliziert werden. Diese Multiplikation muss nicht in jedem Schritt,
sondern nur beim Auslesen des Geschwindigkeitwerts durchgeführt werden.
So spart man Rechenzeit im eigentlichen Integrationszyklus.

Es gibt natürlich auch noch kompliziertere Integreationsmethoden:

  http://de.wikipedia.org/wiki/Numerische_Integration

Ob sich die zusätzlich benötigte Rechenzeit tatsächlich in einer
besseren Genauigkeit des Ergebnisses niederschlägt, hängt von der
Beschaffenheit der Messdaten und der Länge des Abtastintervalls ab.

von Sven P (Gast)


Lesenswert?

bestimme ich dann die abtastintervall mit einem timer ? die einzelnen 
intigrationsmethoden versteh ich theoretisch und kann das auch auf dem 
papier rechnen. nur weiß ich nicht wie ich das in code umsetzen soll.. 
:(

von holger (Gast)


Lesenswert?

>nur weiß ich nicht wie ich das in code umsetzen soll..

(a + b + c) / 3

von Sven P (Gast)


Lesenswert?

Um die Fläche unter der Fkt. zu berechnen, benötige ich einmal den 
Funktionswert f(x)1 , t1 und f(x), t2 . wie bestimme ich das 
zeitintervall t und t2?

von Timmo H. (masterfx)


Lesenswert?

Starte einen Timer, der dir z.B. alle 100 ms ein Flag setzt. Wenn das 
Flag gesetzt wurde addierst du einfach den aktuellen Beschleunigungswert 
zu deiner "Summe" dazu. v(t)=v0+a*t

von Dumdi D. (dumdidum)


Lesenswert?

Sven P schrieb:
> wie bestimme ich das
> zeitintervall t und t2?

t-t2?

Tipp doch Deine letzte Frage nochmal detaillierter und etwas sauberer.

von Sven P (Gast)


Lesenswert?

Danke Timmo hast mich schon bisschen weiter gebracht!

Sorry habs im nachheinen auch gesehen, dass des bisschen schlampig 
geschrieben war.

Bsp. Treppenstufenintegration (Nur zur Grundsatz zur Erklärung)

Will man im Integral zwischen a(t1) und b(t2) das Integral (Fläche) 
berechnen, so teilt man diesen Zeitbereich zwischen a und b wieder in 
einzelne "Treppen" mit der Zeitdauer h(th) ein. Desto kleiner (kürzer) 
th ist, desto genauer wird mein Ergebnis.

Reicht es nun pro durchlauf die Fläche zwischen th zu berechnen und dann 
aus zu geben?

von NurEinGast (Gast)


Lesenswert?

Sven P schrieb:
> Will man im Integral zwischen a(t1) und b(t2) das Integral (Fläche)
> berechnen, so teilt man diesen Zeitbereich zwischen a und b wieder in
> einzelne "Treppen" mit der Zeitdauer h(th) ein. Desto kleiner (kürzer)
> th ist, desto genauer wird mein Ergebnis.


Oder man nimmt einfach die Steigung zwischen a(t1) und b(t2) und rechnet 
rechnet die Fläche des Dreiecks aus. Wieso sollte man Treppen einfügen ?
Du hast eh keine Zwischenwerte zwischen t1 und t2, die Treppe würdest Du 
also wahrscheinlich eh linear aufziehen.

von hier könnte ihr name stehen (Gast)


Lesenswert?

Einfach aufsummieren und mit der zeitdifferenz multiplizieren (bei 
konstanter abtastrate). Wenn man erst mal ein paar Werte addiert hat, 
spielt es keine rolle mehr, ob es nun Rechtecke oder Trapeze waren.

Bei 100 Messungen mit Rechteck:
(x1 + x2 + ... + x99 + x100) * t

Mit Trapez:
(1/2 x1 + 1/2 x2 + 1/2 x2 + ... + 1/2 x98 + 1/2 x99 + 1/2 x99 + 1/2 
x1000) * t
=
(1/2 x1 + x2 + ... + x99 + 1/2 x100) * t

Beides ist nach der Anzahl dieser Messwerte identisch

von Sven P (Gast)


Lesenswert?

OK, habs jetzt vertanden :). Werde die verschiedenen Methoden mal 
umsetzen und die beste dann nehmen.

Vielen Dank Euch!!!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.