Симченко Сергей Александрович N1
import numpy as np import math f = open("order", "r") f1 = open("import", "w") f2 = open("export", "w") X = [] Y = [] for line in f:
q, x, y, z = map(float,line.split()) xy =[] xy.append(x) xy.append(y) X.append(xy) Y.append(z) f1.write(str(x)) f1.write(" ") f1.write(str(y)) f1.write("\n") f2.write(str(z)) f2.write("\n")
f.close() f1.close() f2.close() sum = 0.0 count = 1 for i in range(len(Y)-1):
if X[i+1][0] == X[i][0] and X[i+1][1] == X[i][1]: sum += Y[i] count += 1
sum += Y[54] NY = Y[:-count] NY.append(sum/count) NX = X[:-count+1] f4 = open("import2","r") X1 = [] for line in f4:
x, y, z = map(float, line.split()) xy = [] xy.append(x) xy.append(y) xy.append(z) X1.append(xy)
f4.close()
mx1 = np.matrix(X1) mx = np.matrix(NX) my = np.matrix(NY)
B1 = np.matmul(np.transpose(mx), mx) B2 = np.matmul(np.linalg.inv(B1), np.transpose(mx)) B = np.matmul(B2, NY) print("матрица коэффициенто b для уравнения y=b1*x1+b2*x2",B)
B10 = np.matmul(np.transpose(mx1), mx1) B20 = np.matmul(np.linalg.inv(B10), np.transpose(mx1)) B01 = np.matmul(B20, NY) print("матрица коэффициенто b для уравнения y=b0+b1*x1+b2*x2",B01) yPs = sum/count print("значения y при паралленых опытах", yPs) sumP = 0.0 sumA = 0.0 sumA0 = 0.0 i = 0 print(" ") print((X1[i][0] * B01[0, 0] + X1[i][1] * B01[0, 1] + X1[i][2] * B01[0, 2])) print(Y[i] - (X[i][0] * B[0, 0] + X[i][1] * B[0, 1])) print((Y[i] - (X[i][0] * B[0, 0] + X[i][1] * B[0, 1]))**2) print((Y[i] - (X1[i][0] * B01[0, 0] + X1[i][1] * B01[0, 1] + X1[i][2] * B01[0, 2])) ** 2) print(" ")
while i < len(Y):
if i >= 49: sumP += (Y[i] - yPs)**2 else: sumA += (Y[i]-(X[i][0] * B[0, 0] + X[i][1] * B[0, 1])) ** 2 sumA0 += (Y[i] - (X1[i][0] * B01[0, 0] + X1[i][1] * B01[0, 1] + X1[i][2] * B01[0, 2])) ** 2 i += 1
print(sumP) print(sumA) print(sumA0) print(" ") print(sumA/(len(NY)-2)) print(sumA0/(len(NX)-3)) print(sumP/(count-1)) print((sumA/(len(NY)-2))/(sumP/(count-1))) print((sumA0/(len(NY)-3))/(sumP/(count-1))) print((np.sum(NY)/50)-np.sum(np.sum(NX[0]) * B01[0, 0])) Mx1 = np.sum(NX[0])/len(NX) Mx2 = np.sum(NX[1])/len(NX) My = np.sum(NY) / len(NY) print("матожидание от x1 =",Mx1, "матожидание от x2 =",Mx2,"матожидание от y =",My) Dx1 = 0 Dx2 = 0 Dy = 0 for i in range(len(NY)):
Dx1 += (NX[i][0]-Mx1) ** 2 Dx2 += (NX[i][1]-Mx2) ** 2 Dy += (NY[i]-My) ** 2
print("дисперсия от x1 =",Dx1/(len(NX)-1), "дисперсия от x1 =",Dx2/(len(NX)-1), "дисперсия от y =",Dy/(len(NY)-1)) kxl1 = 0 kxl2 = 0 for i in range(len(NY)):
kxl1 += ((NX[i][0] - Mx1) * (NY[i] - My)) kxl2 += ((NX[i][1] - Mx2) * (NY[i] - My))
r1 = (kxl1/(len(NX)-1))/(math.sqrt(Dx1)*math.sqrt(Dy)) r2 = (kxl2/(len(NX)-1))/(math.sqrt(Dx2)*math.sqrt(Dy)) print("коэфкорел r1 =",r1, "коэфкорел r2 =",r2) b1 = r1*math.sqrt(Dy)/(math.sqrt(Dx1)) b2 = r2*math.sqrt(Dy)/(math.sqrt(Dx2)) b0 = My - b1 * Mx1 - b2 * Mx2 print("b0 =",b0,"b1 =",b1,"b1 =",b2)
Вывод:
матожидание от:
x1 = 0.76
x2 = 1.46
y = 27.9595
дисперсия от:
x1 = 2819.3028571428576
x2 = 217.845306122449
y = 823.5539839285711
коэффициент корреляции:
r1 = -0.007186278697424209
r2 = 0.00922060063083846
b0 = 27.936277002146113
b1 = -0.00388400004646967
b1 = 0.01792797115698568
матрица коэффициентов b для уравнения y=b1*x1+b2*x2 -0.41449559 3.25507464
матрица коэффициентов b для уравнения y=b0+b1*x1+b2*x2 24.88403238 0.19342754 -0.4548107
значения y при параллельных опытах 28.515
дисперсия аппроксимации для уравнения y=b1*x1+b2*x2 12.356279648391963
дисперсия аппроксимации y=b0+b1*x1+b2*x2 0.008928958199990443
дисперсия воспроизводимости 0.006150000000000082
Адекватность модели y=b1*x1+b2*x2 2009.15116234013
Адекватность модели y=b0+b1*x1+b2*x2 1.4518631219496463