かざま さんが書きました:1次のLPFの伝達関数はω/(1+ω/s)です。(ωはカットオフ周波数)
6. 伝達関数と周波数応答 - 趣味人のブログ - suzumushi0 - はてなブログ には、
1次のLPFの伝達関数は ω/(s + ω) と書かれているんですけど。
かざま さんが書きました:
これを利用して、θ=cost+0.0001cos1000を0.001秒ごとに0から10秒まで疑似微分したいのですが、
高校の数学で cos の微分は -sin と習いました。
だから、θ = cos(t) + 0.0001 cos(1000) なら、
θ' = dθ/dt = -sin(t) ですよね。
また、微分は接線の傾きなので、
θ' = dθ/dt = (θ(t + Δt) - θ(t)) / Δt
だということも分かります。
コード:
#include <stdio.h> // printf
#include <math.h> // cos, sin
double theta(double t) { return cos(t) + 0.0001 * cos(1000); } // θ(t)
double theta1(double t) { return -sin(t); } // 微分 θ' すなわち dθ/dt
int main(void)
{
int i, n = 10000; // 分割数
double a = 0, b = 10; // 0秒から 10秒まで
double dt = (b - a) / n; // dt = 0.001秒
for (i = 0; i <= n; i++) {
double t = a + i * dt;
double g = (theta(t + dt) - theta(t)) / dt; // 疑似微分
printf("%6.3f: %9f %9f\n", t, g, theta1(t));
}
}
実行結果
コード:
0.000: -0.000500 -0.000000
0.001: -0.001500 -0.001000
0.002: -0.002500 -0.002000
0.003: -0.003500 -0.003000
0.004: -0.004500 -0.004000
0.005: -0.005500 -0.005000
:
1.568: -0.999997 -0.999996
1.569: -0.999999 -0.999998
1.570: -1.000000 -1.000000
1.571: -1.000000 -1.000000
1.572: -0.999999 -0.999999
:
3.139: -0.002093 -0.002593
3.140: -0.001093 -0.001593
3.141: -0.000093 -0.000593
3.142: 0.000907 0.000407
3.143: 0.001907 0.001407
:
6.281: 0.001685 0.002185
6.282: 0.000685 0.001185
6.283: -0.000315 0.000185
6.284: -0.001315 -0.000815
6.285: -0.002315 -0.001815
:
9.996: 0.541081 0.540660
9.997: 0.541922 0.541501
9.998: 0.542762 0.542342
9.999: 0.543601 0.543182
10.000: 0.544441 0.544021
疑似微分と真の微分の値が近いですよね。
かざま さんが書きました:
θをラプラス変換して、伝達関数と掛け合わせてから、逆ラプラス変換でいいですか?
ラプラス変換も伝達関数も私にはよくわかりません。