Симченко Сергей Александрович N1

Материал из Wiki
Перейти к: навигация, поиск

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 812.9902003819129

дисперсия воспроизводимости 0.006150000000000082

Адекватность модели y=b1*x1+b2*x2 2009.15116234013

Адекватность модели y=b0+b1*x1+b2*x2 132193.52851738245

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты