前提・実現したいこと
下のソースコードの横軸の数値とランダムで出てきている点を自分で指定した数値にしたいのですがどのように直したらいいのかわかりません。
該当のソースコード
python
1import numpy as np 2import matplotlib.pyplot as plt 3 4# hyperparameters 5mu = 0.1 6alpha = 1.5 7beta = 30 8 9# 10neuton_iter_num = 200 11num_datapoints = 15 12 13# step1 14U = np.random.uniform(0, 1) 15# step2 16t1 = -np.log(U)/mu 17t = [t1] 18 19 20for k in range(num_datapoints): 21 # step3 22 U = np.random.uniform(0, 1) 23 24 # step 4 25 if k == 0: 26 Sk = 1 27 28 u = t[k] - np.log(U)/mu # initial value of iteration 29 for _ in range(neuton_iter_num): 30 fu = np.log(U) + mu*(u-t[k]) + alpha/beta*Sk*(1-np.exp(-beta*(u-t[k]))) 31 fu_dash = mu+alpha*Sk*np.exp(-beta*(u-t[k])) 32 u -= fu/fu_dash 33 34 # step 5 35 t.append(u) 36 Sk = np.exp(-beta*(t[k+1]-t[k]))*Sk + 1 # find S(k+1) 37 38t = np.array(t)/max(t) 39 40# plt.figure(figsize=(20, 10), dpi=50) 41# plt.scatter(t, np.ones(len(t)), facecolors='none', edgecolors='red') 42# plt.show() 43 44 45# intensity 46time = np.linspace(0,1,10000) 47increase = list(map(lambda x: alpha*np.exp(-beta * x), time)) 48intensity = np.zeros(10000*2) 49for timepoints in t: 50 yuko = np.append(np.append(np.zeros(len(time[time<timepoints])), increase), np.zeros(len(time[time>=timepoints]))) 51 intensity += yuko 52 53 54# plt.figure(figsize=(20, 10), dpi=50) 55# plt.plot(time, intensity[:10000]) 56# plt.show() 57 58 59 60fig, ax1 = plt.subplots(figsize=(20, 5)) 61ax2 = ax1.twinx() 62ax1.scatter(t, np.ones(len(t)), facecolors='none', edgecolors='red', marker='*', s=150) 63ax2.plot(time, intensity[:10000], c='b', lw=1) 64plt.show()
補足情報(FW/ツールのバージョンなど)
上のソースコードはこのサイトから取ってきました
https://babaye.hatenablog.com/entry/2019/10/17/214442