Page MenuHomec4science

interpolate_for_time.py
No OneTemporary

File Metadata

Created
Sun, Jun 30, 23:17

interpolate_for_time.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Feb 8 12:33:39 2022
@author: ekinkubilay
"""
import numpy as np
import matplotlib.pyplot as plt
def interpolate_for_time(u_maximum, v, alpha):
def function(w):
return np.exp(-u**2/(4*alpha*w) - w*v**2/(4*alpha))/w**1.5
u_range = np.linspace(0.000001, u_maximum)
maximums = []
minimums = []
u_maxs = []
u_mins = []
for u in u_range:
w = np.linspace(0.000001, 0.05, 10000)
values = function(w)
limit = 0.001*function(w[np.argmax(values)])*np.ones(len(w))
ids = np.argwhere(np.diff(np.diff(np.sign(values-limit))))
"""
plt.plot(w, values, marker='.')
plt.scatter(w[np.argmax(values)], function(w[np.argmax(values)]), color='r', s=50)
plt.scatter(w[ids], values[ids], color='g', s=50)
plt.show()
"""
if len(ids)==1:
maximums.append(w[ids[0]])
u_maxs.append(u)
else:
minimums.append(w[ids[0]])
maximums.append(w[ids[-1]])
u_maxs.append(u)
u_mins.append(u)
A = np.array([[np.sum(np.power(u_maxs,2)), np.sum(u_maxs)],[np.sum(u_maxs), len(u_maxs)]])
B = np.array([np.asarray(u_maxs).dot(np.asarray(maximums))[0],np.sum(maximums) ])
A_max,B_max = np.linalg.inv(A).dot(B)
A = np.array([[np.sum(np.power(u_mins,2)), np.sum(u_mins)],[np.sum(u_mins), len(u_mins)]])
B = np.array([np.asarray(u_mins).dot(np.asarray(minimums))[0],np.sum(minimums) ])
A_min,B_min = np.linalg.inv(A).dot(B)
plt.plot(u_maxs, maximums)
plt.plot(u_mins, minimums)
plt.plot(u_range, 1.05*(A_max*u_range + B_max))
plt.plot(u_range, 0.95*(A_min*u_range + B_min))
return [A_min, B_min], [A_max, B_max]
def get_interpolation_limits(max_dist, v, alpha):
min_limits, max_limits = interpolate_for_time(max_dist, v, alpha)
return min_limits[0], min_limits[1], max_limits[0], max_limits[1]
v = 0.8
alpha = 8e-6
global A_min, B_min, A_max, B_max
A_min, B_min, A_max, B_max = get_interpolation_limits(0.00377/2, v, alpha)

Event Timeline