Лебедев Данила 1
Строка 109: | Строка 109: | ||
Mx1= 1.7 Mx2= 0.26 My= 36.545100000000005 | Mx1= 1.7 Mx2= 0.26 My= 36.545100000000005 | ||
+ | |||
Dx1= 3272.7204081632644 Dx2= 238.25836734693874 Dy= 8671.004347438775 | Dx1= 3272.7204081632644 Dx2= 238.25836734693874 Dy= 8671.004347438775 | ||
+ | |||
r1= -0.006944522138339006 | r1= -0.006944522138339006 |
Текущая версия на 11:36, 8 ноября 2019
<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