# Discrete-Time Integrator Compare Perform discrete-time integration or accumulation of signalexpand >https://www.mathworks.com/help/simulink/slref/discretetimeintegrator.html $$ \text{gain}\\ K = 1 $$ ## Forward Euler Method $$ \begin{align} x(n+1) &=& x(n) + K*T*u(n) \tag{1}\\ y(n) &=& x(n) \tag{2} \end{align} $$ find the $y(n)$ --- $$ \begin{align} y(n+1) &=& x(n+1) && \text{from $(2)$}\\ y(n+1) &=& x(n) + K*T*u(n+1) && \text{from $(1)$}\\ y(n+1) &=& y(n) + K*T*u(n+1) && \text{substitute $x(n)$ from $(2)$}\\ \hline y(n) &=& y(n-1) + K*T*u(n) && \text{make $u(n)$ is now}\\ \hline \end{align} $$ ```cpp tag_angle_integral = tag_angle_integral + tag_angle * update_rate_; ``` ## Trapezoidal Method $$ \begin{align} x(n) &=& y(n-1) + K*T/2*u(n-1) \tag{3}\\ y(n) &=& x(n) + K*T/2*u(n) \tag{4} \end{align} $$ find $y(n)$ --- $$ \begin{align} \hline y(n) &=& y(n-1) + K*T/2*u(n-1) + K*T/2*u(n) && \text{substitute $(4)$ into $x(n)$}\\ \hline \end{align} $$ ```cpp tag_angle_integral = tag_angle_integral + last_tag_angle * 0.5 * update_rate_ + tag_angle * 0.5 * update_rate_; ``` 反正微分都會多浪費一個記憶體了,就用**Trapezoidal Method** 吧