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, значение', 'Фазовая траектория')