関数sequence_integral マニュアル

(The documentation of function sequence_integral)

Last Update: 2022/5/2


◆機能・用途(Purpose)

時系列データを積分する。
Compute the integral of a time series data.


◆形式(Format)

#include <sequence/operation.h>
inline struct sequence sequence_integral
(const struct sequence original,const double initialValue)


◆引数(Arguments)

original 被積分関数の時系列データを表す構造体。
A structure that represents a time series data of the integrand.
initialValue 積分後の時系列データの初期値\(F(t_0)\)。
The initial value, \(F(t_0)\), of the integrated time series data.


◆戻り値(Return value)

引数originalが表す時系列データを積分した時系列データ。
The time series data obtained by integrating the original time series data given by argument original.


◆使用例(Example)

struct sequence velocity;
struct sequence displacement=sequence_integral(velocity,0.0);


◆計算式(Formula)

元々の時系列データを\(f(t)\)、積分後の時系列データを\(F(t)\)とすると、 任意の時刻\(a\), \(b\)について \[\begin{equation} F(b)-F(a)=\int_a^b f(t)dt \label{eq.Ff_relation} \end{equation}\] が成り立つ。これを変形すると \[\begin{equation} F(b)=F(a)+\int_a^b f(t)dt \label{eq.Ff_relation.arrange1} \end{equation}\] が得られる。
Let \(f(t)\) and \(F(t)\) be the original and integrated time series data, respectively. Then Eq. (\ref{eq.Ff_relation}) holds for arbitrary times \(a\) and \(b\), which can be arranged as (\ref{eq.Ff_relation.arrange1}).

(\ref{eq.Ff_relation.arrange1})式で \(a=t_0+(n-1)\Delta t\), \(b=t_0+n\Delta t\) (\(t_0\): 時系列データの先頭時刻、\(\Delta t\): 時系列データのサンプル間隔、 \(n\): 任意の自然数)とおくと \[\begin{eqnarray} F(t_0+n\Delta t) &=& F(t_0+(n-1)\Delta t) +\int_{t_0+(n-1)\Delta t}^{t_0+n\Delta t} f(t)dt \nonumber \\ &\sim& F(t_0+(n-1)\Delta t) +\frac{f(t_0+(n-1)\Delta t)+f(t_0+n\Delta t)}{2}\Delta t \label{eq.use} \end{eqnarray}\] が得られる。ここで第2式では\(\Delta t\)が十分に小さく 積分を台形の面積で近似できるものとした。 (\ref{eq.use})式は時刻\(t=t_0+(n-1)\Delta t\)での\(F(t)\)値を与えて 時刻\(t=t_0+n\Delta t\)での\(F(t)\)を求める漸化式になっており、 これを\(n=1,2,\cdots,\)と動かしながら繰り返し適用することで 全ての時刻サンプルにおける\(F(t)\)を求めることができる。
Let us use \(a=t_0+(n-1)\Delta t\) and \(b=t_0+n\Delta t\) in Eq. (\ref{eq.Ff_relation.arrange1}), where \(t_0\) and \(\Delta t\) are the beginning time and sampling interval of the time series data, respectively, and \(n\) is an arbitrary natural number. We then have Eq. (\ref{eq.use}), where a small \(\Delta t\) was assumed and the integral was approximated by the area of a trapezoid in the 2nd line of this formula. Eq. (\ref{eq.use}) is a recursive formula that gives \(F(t)\) at time \(t=t_0+n\Delta t\) from \(F(t)\) at \(t=t_0+(n-1)\Delta t\). Repeatedly applying this formula for increasing \(n\) from \(n=1\) results in values of \(F(t)\) for all time samples.

なお、(\ref{eq.use})式の\(n=1\)から\(n=N\)までの和を取ると \[\begin{equation} F(t_0+N\Delta t)\sim F(t_0)+\sum_{n=1}^N \frac{f(t_0+(n-1)\Delta t)+f(t_0+n\Delta t)}{2}\Delta t \label{eq.sum} \end{equation}\] となって台形公式が得られる。しかし(\ref{eq.sum})式を用いるよりも (\ref{eq.use})式を用いる方が計算量が少ないので この関数では(\ref{eq.use})式を用いている。
Note that a summation of eq. (\ref{eq.use}) from \(n=1\) to \(n=N\) gives Eq. (\ref{eq.sum}), which is the trapezoid formula. However, this function uses Eq. (\ref{eq.use}) because the quantity of computation of Eq. (\ref{eq.use}) is smaller than (\ref{eq.sum}).