Генералов Кирилл N1

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

import numpy as np import math f = open("order", "r") f1 = open("without_b", "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("with_b","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)

  1. y=b1*x1+b2*x2

B1 = np.matmul(np.transpose(mx), mx) B2 = np.matmul(np.linalg.inv(B1), np.transpose(mx)) B = np.matmul(B2, NY) print("матрица коэффициенто b для с отсутствующим b0",B)

  1. y=b0+b1*x1+b2*x2

B10 = np.matmul(np.transpose(mx1), mx1) B20 = np.matmul(np.linalg.inv(B10), np.transpose(mx1)) B01 = np.matmul(B20, NY) print("матрица коэффициенто b для уравнения с b0", B01) yPs = sum/count print("значения y при паралленых опытов",yPs) sumP = 0.0 sumA = 0.0 sumA0 = 0.0 i = 0 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(" ") print("дисперсия аппроксимации для уравнения с отсутствующим b0",sumA/(len(NY)-2)) print("дисперсия аппроксимации для уравнения с b0",sumA0/(len(NX)-3)) print("дисперсия воспроизводимости",sumP/(count-1)) print("Адекватность для уравнения с отсутствующим b0",(sumA/(len(NY)-2))/(sumP/(count-1))) print("Адекватность модели для уравнения с b0",(sumA0/(len(NY)-3))/(sumP/(count-1))) Mx1 = np.sum(NX[0])/len(NX) Mx2 = np.sum(NX[1])/len(NX) My = np.sum(NY) / len(NY) print(" ") print("Mx1=",Mx1,"Mx2=", Mx2,"My=", 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

Dx1 = Dx1/(len(NX)-1) Dx2 = Dx2/(len(NX)-1) Dy = Dy/(len(NY)-1) print("Dx1=", Dx1,"Dx2=", Dx2,"Dy=", Dy) 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) print("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) print("b1=",b1) print("b2=",b2)

Вывод:

матрица коэффициентов b для с отсутствующим b0 -- 6.21947126 -8.28672793


матрица коэффициентов b для уравнения с b0 -- 1.98049713 6.19971918 -8.29944377


значения y при параллельных опытов -- -103.01333333333334

дисперсия аппроксимации для уравнения с отсутствующим b0 -- 0.5581178587847783


дисперсия аппроксимации для уравнения с b0 -- 0.00665347955397351


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


Адекватность для уравнения с отсутствующим b0 -- 33.40689497913624


Адекватность модели для уравнения с b0 -- 0.39825296611971694


Mx1= 3.36 Mx2= 2.94 My= -57.28606666666666


Dx1= 3485.06857142857


Dx2= 3048.5800000000013


Dy= 83576.27727831746


r1= 0.2239632426670854


r2= -0.4519976634037742


b0= -54.01331991003878


b1= 1.0967625037018953


b2= -2.3666220302946437

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

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