Лебедев Данила 1

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

<source lang="python"> 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 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("дисперсия аппроксимации для уравнения y=b1*x1+b2*x2",sumA/(len(NY)-2)) print("дисперсия аппроксимации y=b0+b1*x1+b2*x2",sumA0/(len(NX)-3)) print("дисперсия воспроизводимости",sumP/(count-1)) print("Адекватность модели y=b1*x1+b2*x2",(sumA/(len(NY)-2))/(sumP/(count-1))) print("Адекватность модели y=b0+b1*x1+b2*x2",(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

print("Dx1=", Dx1/(len(NX)-1),"Dx2=", Dx2/(len(NX)-1),"Dy=", 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) 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) </source> вывод: Mx1= 1.7 Mx2= 0.26 My= 36.545100000000005 Dx1= 3272.7204081632644 Dx2= 238.25836734693874 Dy= 8671.004347438775 r1= -0.006944522138339006 r2= 0.0066401943443432365 b0= 36.553901246661596 b1= -0.011303751887757618 b2= 0.04005819825998865

матрица коэффициентов b для уравнения y=b1*x1+b2*x2 -2.13088259 10.20497587 матрица коэффициентов b для уравнения y=b0+b1*x1+b2*x2 -5.04256469 -2.09981756 10.40195907 значения y при параллельных опытов 46.004999999999995

дисперсия аппроксимации для уравнения y=b1*x1+b2*x2 4.436452750556096 дисперсия аппроксимации y=b0+b1*x1+b2*x2 0.009872640020999046 дисперсия воспроизводимости 0.007950000000000259 Адекватность модели y=b1*x1+b2*x2 558.0443711391133 Адекватность модели y=b0+b1*x1+b2*x2 1.2418415120753112

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

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