次のデータにフィットした二次関数を求め,データと同時に plot せよ.
import numpy as np
xdata = np.array([1,2,3,4])
ydata = np.array([1,8,9,10])
次の関数 $$ f(x) = -\left(\frac{1}{x}\right)^6+2\,\left(\frac{1}{x}\right)^{12} $$ は図に示す通り,解$1.1224620483093721$を持つ.
二分法とNewton法によって数値解を求めよ. 二分法の初期値は$x=1..2$,Newton法の初期値は$x=1$とし, 繰り返しは10回程度で求めよ. 収束の様子を片対数(logplot)で同時にプロットせよ.
与関数$f(x)$ の微分は
def df(x):
return (6.0/x**7.0)-(24.0/x**13.0)
で与えられる.
Euler法を用いてバネ振動の常微分方程式を解く.
規格化したバネ定数$k$を0.001として, 刻み幅dtを0.1秒とした場合に200秒までの振る舞いを
def euler3(x0,v0):
v1 = v0 +(- k * x0) * dt
x1 = x0 + v0 * dt
return [x1, v1]
t, dt, k=0.0, 0.1, 0.001
tt,xx,vv=[0.0],[0.0],[0.1]
for i in range(0,2000):
でplotしてみよ.
振動の周期$T$が $$ f = \frac{1}{2\pi}\sqrt{\frac{k}{m}} $$
$$ T = \frac{1}{f} $$と一致していることを確かめよ.
ただし,$k$は規格化しているので,$m=1$
また,規格化したバネ定数$k$を0.01とした時,周期はいくらになるか. また,200秒まででだいたい何周期になるか
FFTによって周期62.831853のsin関数がどのように変換されるかを調べる.
2*np.pi*(3*62.831853) = 1184
であることに注意して,
def func(x):
return np.sin(x/62.831853)
x = np.linspace(0, 1184, 1184)
をx=0..1184で実空間で表示せよ. FFTに入れるチャンネル数(通常は256など)が1184+1の場合, パワースペクトル(spectrum_power, FFTをかけた後の周波数強度)を求めて表示せよ. パワースペクトルのピーク位置が何を意味するかを述べよ.