
Результаты исследования
а) линейная |
б) экспоненциальная |
в) логарифмическая |
г) степенная |
д) полином 2 порядка |
е) полином 3 порядка |
Рисунок
4 – Зависимости теплоемкости
от температуры
а) линейная |
б) экспоненциальная |
в) логарифмическая |
г) степенная |
д) полином 2 порядка |
е) полином 3 порядка |
Рисунок 5 – Зависимости теплоемкости бензола от температуры
Рисунок 6 – График зависимости динамической вязкости нефти от температуры Гураринского месторождения (полином 3 порядка)
Вывод: в ходе лабораторной работы разработали алгоритм и программу расчета коэффициента парной корреляции и коэффициентов уравнения регрессии (по методу наименьших квадратов).
Получили коэффициенты корреляции для серной кислоты 0,9864, а для бензола – 0,9825.
Для
описания зависимости теплоемкости от
температуры для серной кислоты, а также
для бензола лучше использовать полином
3 порядка, так как у полинома 3 порядка
достигается максимальная величина
аппроксимации (
).
В результате расчетов для серной кислоты были получены следующие значения коэффициентов регрессии:
b0 = 109.35154761902614
b1 = 0.12061666666659411
b2 = -4.0452380952380953e-05
В результате уравнение регрессии будет иметь вид:
В результате расчетов для бензола были получены следующие значения коэффициентов регрессии:
b0 = -21.139404761882123
b1 = 0.39865119047619
b2 = -0.00016879761904761904
В результате уравнение регрессии будет иметь вид:
По
зависимости динамической вязкости
Гураинской нефти от температуры сняли
значения и построили график (рисунок
6). В результате наилучшим образом
описываются значения полиноминальной
функцией 3 порядка. Степень близости
составила 0,985.
Приложение a
T = [300, 400, 500, 600, 700, 800, 900, 1000]
x = [139.33, 153.55, 161.92, 167.36, 171.96, 178.54, 184.72, 190.92]
numbers = 8
s1 = 0
s2 = 0
s3 = 0
s4 = 0
s5 = 0
s6 = 0
s7 = 0
s8 =0
sxy = 0
sx = 0
sy = 0
sx2 = 0
sy2 = 0
n = 8
for i in range(8):
s1 += T[i]
s2 += T[i]**2
s3 += T[i]**3
s4 += T[i]**4
s5 += x[i]
s6 += (x[i] * T[i])
s7 += (T[i]**2 * x[i])
s8 = s8 + T[i]**2
sxy=(sxy+T[i]*x[i])
sy=(sy+x[i])
sx=(sx+T[i])
sx2=(sx2+(T[i])**2)
sy2=(sy2+(x[i])**2)
# print(round(s1, 2), round(s2, 2), round(s3, 2), round(s4, 2), round(s5, 2), round(s6, 2), round(s7, 2))
z = n*s2*s4 + s1*s3*s2 + s2*s1*s3 - s2**3 - s1**2*s4 - n*s3**2
b0 = (s5*s2*s4 + s6*s3*s2 + s7*s1*s3 - s7*s2*s2 - s6*s1*s4 - s5*s3*s3)/z
b1 = (n*s6*s4 + s1*s7*s2 + s2*s5*s3 - s2*s6*s2 - s1*s5*s4 - n*s7*s3)/z
b2 = (n*s2*s7 + s1*s3*s5 + s2*s1*s6 - s2*s2*s5 - s1*s1*s7 - n*s3*s6)/z
print(f"b0 = {b0}", f"b1 = {b1}", f"b2 = {b2}")
S = 0
sum = 0
xnew = [i for i in range(8)]
for i in range(8):
xnew[i] = b0 + b1 * T[i] + b2 * T[i]**2
L = abs(x[i] - xnew[i]) / x[i] * 100
sum += (x[i] - xnew[i])**2
S = math.sqrt((sum)/(n-1))
r = (sxy-sx*sy/n)/((n-1)*math.sqrt(((sx2-sx*sx/n))/(n-1))*math.sqrt(((sy2-sy*sy/n))/(n-1)))
print(T[i], x[i], round(xnew[i], 2), round(L, 2))
print(f"S = {S}")
print(f"r = {r}")