Advertisement
Vitaliy_Novichikhin

3.2.8 c тестами при решении задачи

Oct 15th, 2020
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.95 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. # 3. Построим тренд, используя в качестве линии тренда полином второй или первой степеней степени,
  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. #print('Первая степень: ', np.array(list_poly1))# - удалить мусор
  15. #print('Полином 1 ПОГРЕШН: ', sum(abs((np.array(list_poly1) - y_array)/y_array)*100))
  16.  
  17. poly2 = np.polyfit(x_array, y_array, 2) # Полином второй степени.
  18. # Cтрока Михаила
  19. #list_kp2=[poly2[0] * x_array[i]**2 + poly2[1]*x_array[i]*1+ poly2[2] for i in range(0, len(x_array))]
  20.  
  21. #Моя строка
  22. list_poly2 = [poly2[0] * x_array[i]**2 + poly2[1] * x_array[i] + poly2[2] for i in range(0, len(x_array))]
  23. #print('Вторая степень ', np.array(list_poly2))
  24. #print('Полином 2 ПОГРЕШН: ', sum(abs((np.array(list_poly2) - y_array)/y_array)*100))
  25.  
  26. if sum(abs((np.array(list_poly2) - y_array)/y_array)*100) <= sum(abs((np.array(list_poly1) - y_array)/y_array)*100):
  27.     print("%5.3f %5.3f %5.3f" % (poly2[0], poly2[1], poly2[2]))
  28. else:
  29.     print("%5.3f %5.3f" % (poly1[0], poly1[1]))
  30.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement