Guest User

Untitled

a guest
Dec 10th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. import math
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. import array
  5.  
  6. print("Программа для построения графикаn")
  7. x=[]
  8. y=[]
  9.  
  10.  
  11. while True:
  12. print("Введите координаты точек X через пробел")
  13. x=input().replace(',','.').split()
  14. print("Введите координаты точек Y через пробел")
  15. y=input().replace(',','.').split()
  16. if ((len(y)==len(x))) and (not(len(x)<=3 or len(y)<=3)):
  17. break
  18. elif (len(y)!=len(x)):
  19. prinnt("y и x должно совпадать!")
  20. else:
  21. print("n!!!нужно больше координат!!!")
  22. print ('x:',x)
  23. print ('y:',y)
  24. try:
  25. k1=(float(y[-3])-float(y[0]))/(float(x[-3])-float(x[0]))
  26. k2=(float(y[-2])-float(y[1]))/(float(x[-2])-float(x[1]))
  27. k3=(float(y[-1])-float(y[2]))/(float(x[-1])-float(x[2]))
  28. print("n k1= ",k1,"n k2= ",k2,"n k3= ",k3,"n")
  29. k=(k1+k2+k3)/3
  30. q=math.sqrt((((k1-k)*(k2-k)*(k3-k))**2)/6)
  31. print('nУгол наклона прямой: k=',k,'nПогрешность коэффициента: q=',q)
  32. except ZeroDivisionError:
  33. print("что-то делится на ноль")
  34.  
  35.  
  36. sb=0
  37. sq=0
  38. lq=array.array('d', [0]) * len(x)
  39. b=array.array('d', [0]) * len(x)
  40.  
  41. for i in range(len(x)):
  42. b[i]=float(y[i])-float(k)*float(x[i])
  43. sb+=b[i]
  44. sb=sb/len(x)
  45. for i in range (len(x)):
  46. lq[i]=((1/math.sqrt(1+k*k))*(k*float(x[i])-float(y[i])+sb))
  47. sq+=lq[i]
  48. sq=sq/len(x)
  49. print("свободный член b: ",sb)
  50. print("подсчитанное среднее отклонение прямой от точек: ",sq)
  51.  
  52.  
  53.  
  54. plt.title("график")
  55. plt.xlabel("ось X")
  56. plt.ylabel("ось Y")
  57. plt.plot([1, 1*k+sb])
  58. for i in range(len(x)):
  59. plt.scatter(x[i],y[i])
  60. plt.show()
  61.  
  62. In [158]: print(f"({1}, {1*k+sb})")
  63. (1, 1.728514810003242)
  64.  
  65. In [159]: plt.plot([1, 1*k+sb])
  66. Out[159]: [<matplotlib.lines.Line2D at 0xd874828>]
  67.  
  68. In [153]: x
  69. Out[153]: ['1.1', '8.8', '3.75', '12.1']
  70.  
  71. In [154]: y
  72. Out[154]: ['0.123', '5.67', '4.1', '7.12']
  73.  
  74. In [155]: plt.scatter(['a','b','c','d'], ['e','f','g','h'])
  75. Out[155]: <matplotlib.collections.PathCollection at 0xdc4dcc0>
Add Comment
Please, Sign In to add comment