Advertisement
Vitaliy_Novichikhin

3.2.8

Oct 15th, 2020
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.04 KB | None | 0 0
  1. import numpy as np
  2. # Введём значения координат полёта снаряда вручную и сразу
  3. x_list = input()
  4. y_list = input()
  5. # Переведем эти значения в массив вещественных чисел, внутри переведя в список вещественных чисел
  6. x_array = np.array([float(i) for i in x_list.split()])
  7. y_array = np.array([float(i) for i in y_list.split()])
  8.  
  9. # Построим тренд, используя в качестве линии тренда полином второй или первой степеней степени,
  10. # Найдём коэффициенты трендов линейного и квадратичного:
  11. poly1 = np.polyfit(x_array, y_array, 1) # Полином первой степени, массив
  12. #Посчтаем значения Y для каждого значения Х, занесём в список и сразу преобразуем в массив через генерацию списка
  13. list_poly1 = np.array([poly1[0] * x_array[i] + poly1[1] for i in range(0, len(x_array))])
  14.  
  15.  
  16. poly2 = np.polyfit(x_array, y_array, 2) # Полином второй степени, массив numpy.
  17. list_poly2 = [poly2[0] * x_array[i]**2 + poly2[1] * x_array[i] + poly2[2] for i in range(0, len(x_array))]
  18.  
  19. # Сравним среднее значение модуля погрешностей и выведем на экран нужные результаты
  20. # Если средний модуль меньше в квадратичной функции, то выводим её значения, в противном случае линейную.
  21. # Такой же результат будет если считать через сумму модулей погрешностей
  22. 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):
  23.     print("%5.3f %5.3f %5.3f" % (poly2[0], poly2[1], poly2[2]))
  24. else:
  25.     print("%5.3f %5.3f" % (poly1[0], poly1[1]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement