Example #1
0
def main1(phase_trace=False, transition=False, phase_plane=False):
    '''Решение уравнения и построения графика'''
    if phase_plane == True:
        equa = EquationClass.Equation.get_instance()
        solve = second_ode_solver(set_function_system, equa.ic,
                                  [equa.time_start, equa.time_end], equa.step)
        t, y = solve.t, solve.y

        if equa.size == 1:
            del equa
            plot.draw_plot(t, y[0], 't, с', 'x1, значение',
                           'Решение уравнения')

        elif equa.size == 2:
            dots = equa.dots
            equa.dot_window = new_winF(dots, 3)
            del equa
            plot.draw_plot(y[0], y[1], 'x1, значение', 'x2, значение',
                           'Фазовая траектория')

        else:
            g = equa.G
            l1 = equa.l1
            l2 = equa.l2
            dots = equa.dots
            equa.dot_window = new_winF(dots, 4)
            plot.draw_3d_plot(y[0], y[1], y[2], 'x1, значение', 'x2, значение',
                              'x3, значение', 'Фазовое пространство', g, l1,
                              l2, dots)

        return
    else:
        equa = EquationClass.Equation.get_instance()
        equa.array = np.array([])
        equa.ardx = []
        solve = second_ode_solver(set_function_2rank, (equa.y0, equa.dy0),
                                  [equa.time_start, equa.time_end], equa.step)
        t, y = solve.t, solve.y
        EquationClass.Equation.created = False
        del equa

    if transition:
        plot.draw_plot(t, y[0], 't, с', 'y, значение', 'Решение уравнения')
    if phase_plane:
        plot.draw_3d_plot(y[0], y[1], y[2], 'y, значение', 'dy, значение',
                          'd2y, значение', 'Фазовая плоскость')
    if phase_trace:
        plot.draw_plot(y[0], y[1], 'y, значение', 'dy, значение',
                       'Фазовая траектория')
def main(phase_trace=False, transition=False, phase_plane=False):
    '''Решение уравнения и построения графика'''
    if phase_plane == True:  # Если запущено построение фазовой плоскости
        equa = EquationClass.Equation.get_instance(
        )  # Находим обьект уравнения содержащий функции и переменные
        solve = second_ode_solver(set_function_system, equa.ic,
                                  [equa.time_start, equa.time_end],
                                  equa.step)  # Интегрируем
        t, y = solve.t, solve.y  # Записуем результат интегрирования

        if equa.size == 1:  # Если система первого порядка рисуем переходной процесс
            del equa
            plot.draw_plot(t, y[0], 't, с', 'x1, значение',
                           'Решение уравнения')

        elif equa.size == 2:  # Если система второго порядка рисуем фазовую траекторию
            dots = equa.dots
            equa.dot_window = new_winF(dots, 3)
            del equa
            plot.draw_plot(y[0], y[1], 'x1, значение', 'x2, значение',
                           'Фазовая траектория')

        else:  # Иначе рисуем фазовую плоскость
            g = equa.G
            l1 = equa.l1
            l2 = equa.l2
            dots = equa.dots
            equa.dot_window = new_winF(dots, 4)
            plot.draw_3d_plot(y[0], y[1], y[2], 'x1, значение', 'x2, значение',
                              'x3, значение', 'Фазовое пространство', g, l1,
                              l2, dots)
        return
    else:  # Если решается фазовая траектория
        equa = EquationClass.Equation.get_instance(
        )  # Находим обьект уравнения содержащий функции и переменные
        solve = second_ode_solver(set_function_2rank, (equa.y0, equa.dy0),
                                  [equa.time_start, equa.time_end],
                                  equa.step)  # Интегрируем
        t, y = solve.t, solve.y  # Записуем результат интегрирования
        EquationClass.Equation.created = False  # Удаляем уравнение
        del equa

    if transition:  # Если рисуем переходной процесс
        plot.draw_plot(t, y[0], 't, с', 'y, значение', 'Решение уравнения')
    if phase_trace:  # Если рисуем фазовую траекторию
        plot.draw_plot(y[0], y[1], 'y, значение', 'dy, значение',
                       'Фазовая траектория')