関数sequence_twice_differentiate マニュアル

(The documentation of function sequence_twice_differentiate)

Last Update: 2022/6/13


◆機能・用途(Purpose)

時系列データを2階微分する。
Compute the 2nd-order derivative of a time series data.


◆形式(Format)

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


◆引数(Arguments)

original 微分する前の時系列データを表す構造体。
A structure that represents a time series data before the differentiation.
initialValue 2階微分後の時系列データの初期値\(\dot{f}(t_0)\)。
The initial value, \(\dot{f}(t_0)\), of the twice differential time series data.


◆戻り値(Return value)

引数originalが表す時系列データを2階微分した時系列データ。
The time series data obtained by twice differentiating the original time series data given by argument original.


◆使用例(Example)

struct sequence displacement;
struct sequence acceleration=sequence_twice_differentiate(displacement,0.0);


◆計算式(Formula)

元々の時系列データを\(f(t)\)とする。 \(f(t)\)の2階微分を中心差分で近似すると \[\begin{equation} \ddot{f}(t) =\frac{f(t+\Delta t)-2f(t)+f(t-\Delta t)}{\Delta t^2} \label{eq.ddiff.center} \end{equation}\] となる。
Let \(f(t)\) be the original time series data. Approximating the 2nd-order derivative of \(f(t)\) by a central difference gives Eq. (\ref{eq.ddiff.center}).

元々の時系列データのサンプル時刻を \(t=t_0+k\Delta t\), \(k=0,1,2,\cdots,N-1\)とする。 (\ref{eq.ddiff.center})式を用いて計算できるのは\(k=1,2,\cdots,N-2\)であり、 \(k=0\)と\(k=N-1\)のサンプルに対しては(\ref{eq.ddiff.center})式は適用できない。 そこでこの関数では\(k=0\)のサンプル(\(\ddot{f}(t_0)\))については 引数initialValueで与える。 また\(k=N-1\)のサンプルの値は\(k=N-2\)の値と等しいものとおく (\(\ddot{f}(t_0+(N-1)\Delta t)=\ddot{f}(t_0+(N-2)\Delta t)\))。 これにより、\(f(t)\)と同じ定義域を持つ\(\ddot{f}(t)\)を作成する。
Let the sample times of the original time series data be \(t=t_0+k\Delta t\), \(k=0,1,2,\cdots,N-1\). Eq. (\ref{eq.ddiff.center}) is applicable to \(k=1,2,\cdots,N-2\) and not applicable to samples corresponding to \(k=0\) and \(k=N-1\). This function gives the sample value for \(k=0\) (i.e., \(\ddot{f}(t_0)\)) by argument initialValue, and assumes that the sample value for \(k=N-1\) is equal to that for \(k=N-2\) (i.e., \(\ddot{f}(t_0+(N-1)\Delta t)=\ddot{f}(t_0+(N-2)\Delta t)\)). In this way, the definition range of \(\ddot{f}(t)\) is made consistent with that of \(f(t)\).