예제 #1
0
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()
예제 #2
0
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")  #