def main(): # Поучаем ось metro_signal, axis, ideal = get_metro_and_axis() T1 = 7 T2 = 20.0 v0 = [T1, T2] # Initial parameter value v_result = run_approximation(metro_signal, axis, v0, e) # Plotting x = axis.get_axis() plot(x, metro_signal, "b") plot(x, wrapper_for_finding_2l(v_result, x), "g") grid() show()
def plot_ht(): def lin_interpol_fan_curve(x, y, x_main): """ linear interp. air curve""" # Линейная f = interpolators.interp1d(x, y, kind="cubic") # Новая ось yDataSrc = f(x_main) return yDataSrc """ """ metro_signal, x_obj, x, ideal = get_metro_and_axis() # Смотрим что вышло plot(x, metro_signal, "b") return # Нужно найти точку нулевого приближения # Выделим некотороые отсчеты decimated_x, decimated_y = decimate_ox(x, metro_signal) decimated_x.append(x[-1]) decimated_y.append(metro_signal[-1]) # plot(decimated_x, decimated_y,'rv') # Сгладить y_smooth = lin_interpol_fan_curve(decimated_x, decimated_y, x) plot(x, y_smooth, "r") # Продиффиренцировать diff_first_order = x_obj.calc_diff(y_smooth) # plot(x[:-1], diff_first_order,'r^') diff_two_order = x_obj.calc_diff(diff_first_order) # plot(x[:-2], diff_two_order,'bv') # """ roots_d_two = find_roots(diff_two_order) # Если меняется знак - первое корень # print roots_d_two for at in roots_d_two: plot(x[at], 0, "go") pass # # Находим параметы кривой производной k_tan_alpha = [] x0 = [] y0 = [] for at in roots_d_two: k_tan_alpha.append(diff_first_order[at]) x0.append(x[at]) y0.append(y_smooth[at]) print k_tan_alpha plot(x0, y0, "go") # Поиск Bi b = [] for i in range(len(x0)): b.append(y0[i] - k_tan_alpha[i] * x0[i]) print b for i in range(len(x0)): if k_tan_alpha[i] > 0: y = lin_line(x, k_tan_alpha[i], b[i]) y, yes = cut_tangent(y) if yes: plot(x, y, "b") #