Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- import matplotlib.pyplot as plt
- import numpy as np
- import array
- print("Программа для построения графикаn")
- x=[]
- y=[]
- while True:
- print("Введите координаты точек X через пробел")
- x=input().replace(',','.').split()
- print("Введите координаты точек Y через пробел")
- y=input().replace(',','.').split()
- if ((len(y)==len(x))) and (not(len(x)<=3 or len(y)<=3)):
- break
- elif (len(y)!=len(x)):
- prinnt("y и x должно совпадать!")
- else:
- print("n!!!нужно больше координат!!!")
- print ('x:',x)
- print ('y:',y)
- try:
- k1=(float(y[-3])-float(y[0]))/(float(x[-3])-float(x[0]))
- k2=(float(y[-2])-float(y[1]))/(float(x[-2])-float(x[1]))
- k3=(float(y[-1])-float(y[2]))/(float(x[-1])-float(x[2]))
- print("n k1= ",k1,"n k2= ",k2,"n k3= ",k3,"n")
- k=(k1+k2+k3)/3
- q=math.sqrt((((k1-k)*(k2-k)*(k3-k))**2)/6)
- print('nУгол наклона прямой: k=',k,'nПогрешность коэффициента: q=',q)
- except ZeroDivisionError:
- print("что-то делится на ноль")
- sb=0
- sq=0
- lq=array.array('d', [0]) * len(x)
- b=array.array('d', [0]) * len(x)
- for i in range(len(x)):
- b[i]=float(y[i])-float(k)*float(x[i])
- sb+=b[i]
- sb=sb/len(x)
- for i in range (len(x)):
- lq[i]=((1/math.sqrt(1+k*k))*(k*float(x[i])-float(y[i])+sb))
- sq+=lq[i]
- sq=sq/len(x)
- print("свободный член b: ",sb)
- print("подсчитанное среднее отклонение прямой от точек: ",sq)
- plt.title("график")
- plt.xlabel("ось X")
- plt.ylabel("ось Y")
- plt.plot([1, 1*k+sb])
- for i in range(len(x)):
- plt.scatter(x[i],y[i])
- plt.show()
- In [158]: print(f"({1}, {1*k+sb})")
- (1, 1.728514810003242)
- In [159]: plt.plot([1, 1*k+sb])
- Out[159]: [<matplotlib.lines.Line2D at 0xd874828>]
- In [153]: x
- Out[153]: ['1.1', '8.8', '3.75', '12.1']
- In [154]: y
- Out[154]: ['0.123', '5.67', '4.1', '7.12']
- In [155]: plt.scatter(['a','b','c','d'], ['e','f','g','h'])
- Out[155]: <matplotlib.collections.PathCollection at 0xdc4dcc0>
Add Comment
Please, Sign In to add comment