Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- # Введём значения координат полёта снаряда вручную и сразу
- x_list = input()
- y_list = input()
- # Переведем эти значения в массив вещественных чисел, внутри переведя в список вещественных чисел
- x_array = np.array([float(i) for i in x_list.split()])
- y_array = np.array([float(i) for i in y_list.split()])
- # Построим тренд, используя в качестве линии тренда полином второй или первой степеней степени,
- # Найдём коэффициенты трендов линейного и квадратичного:
- poly1 = np.polyfit(x_array, y_array, 1) # Полином первой степени, массив
- #Посчтаем значения Y для каждого значения Х, занесём в список и сразу преобразуем в массив через генерацию списка
- list_poly1 = np.array([poly1[0] * x_array[i] + poly1[1] for i in range(0, len(x_array))])
- poly2 = np.polyfit(x_array, y_array, 2) # Полином второй степени, массив numpy.
- list_poly2 = [poly2[0] * x_array[i]**2 + poly2[1] * x_array[i] + poly2[2] for i in range(0, len(x_array))]
- # Сравним среднее значение модуля погрешностей и выведем на экран нужные результаты
- # Если средний модуль меньше в квадратичной функции, то выводим её значения, в противном случае линейную.
- # Такой же результат будет если считать через сумму модулей погрешностей
- if np.mean(abs((np.array(list_poly2) - y_array)/y_array)*100) <= np.mean(abs((np.array(list_poly1) - y_array)/y_array)*100):
- print("%5.3f %5.3f %5.3f" % (poly2[0], poly2[1], poly2[2]))
- else:
- print("%5.3f %5.3f" % (poly1[0], poly1[1]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement