O tej metodzie wspominałem w poście „Co to jest nawigacja bezwładnościowa?”. Dla przypomnienia całkowanie metodą trapezów polega na wyliczaniu i sumowaniu pól trapezów powstających przez przybliżenie przebiegu funkcji za pomocą odcinków. Odcinki te łączą ze sobą punkty, którymi w naszym przypadku będą próbki sygnału.
Całkowanie metodą trapezów

Wreszcie jakiś kod

Na początek stworzyłem klasę próbki:

Nie ma tu wielkiej filozofii. Zawiera ona dwa publiczne pola: czas rejestracji i wartość czyli dwie współrzędne punktu.

Następnie stworzyłem klasę, która odpowiada za całkowanie próbek. Wygląda ona w ten sposób:

W tym miejscu zatrzymamy się na dłuższą chwilę.

Klasa ma dwa konstruktory. Jeden z nich tworzy nam pustą listę próbek a drugi konstruktor przyjmuje jako parametr gotową już listę i wywołuje metodę Recalculate. Metoda ta wylicza na nowo wartość całki biorąc pod uwagę wszystkie dodane próbki.

Jeśli chcemy dodać próbkę do listy możemy posłużyć się metodą AddSample. Jest ona skonstruowana w taki sposób, że do aktualnej wartości całki dodawana jest wartość pola nowo powstałego trapezu.  Takie rozwiązanie zapewnia ograniczenie ilości obliczeń do niezbędnego minimum.

Finalnie pole Value przechowuje aktualną wartość całki.

Podsumowanie

Metoda trapezów jest jedną z najprostszych metod całkowania numerycznego. Oczywiście istnieją również inne dokładniejsze metody, które w miarę możliwości postaram się kiedyś opisać i zaimplementować. Na razie chciałbym się skupić na kolejnych elementach systemu.