ЛБ10
.docx
Инженерная школа природных ресурсов
Направление подготовки Химическая технология
Отделение химической инженерии
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА PYTHON
Отчет по лабораторной работе № 10
Введение в библиотеку NumPy
Выполнил студент гр. ХИМ54 А.В. Чижова
(Подпись)
01.01.2026 г.
Отчет принят:
Преподаватель
доцент ОХИ ИШПР, к.т.н. В.А. Чузлов
(Подпись)
_____ _____________ 2026 г.
Томск 2026 г.
Задание 1
Библиотека NumPy содержит инструменты для нахождения решения систем линейных уравнений. Функция np.linalg.solve() принимает две матрицы: матрицу коэффициентов и вектор свободных членов.
Допустим, у нас есть система линейных уравнений:
где А – матрица коэффициентов, а b – вектор свободных членов.
Используя функцию np.linalg.solve() найдите решение для следующих систем линейных уравнений:
Программная реализация:
import numpy as np
A1 = np.array(
[
[2, 3, -1],
[1, -1, 1],
[1, 0, 2]
]
)
b1 = np.array([9, 3, 2])
x1 = np.linalg.solve(A1, b1)
print("Решение системы 1:", x1)
A2 = np.array(
[
[10, -1, 2, 0],
[-1, 11, -1, 3],
[2, -1, 10, -1],
[0, 3, -1, 8]
]
)
b2 = np.array([6, 25, -11, 15])
x2 = np.linalg.solve(A2, b2)
print("Решение системы 2:", x2)
A3 = np.array(
[
[2, 1, 1],
[1, -1, 0],
[3, -1, 2]
]
)
b3 = np.array([2, -2, 2])
x3 = np.linalg.solve(A3, b3)
print("Решение системы 3:", x3)
A4 = np.array(
[
[1, 2, 1],
[3, 2, 1],
[4, 3, -2]
]
)
b4 = np.array([8, 10, 4])
x4 = np.linalg.solve(A4, b4)
print("Решение системы 4:", x4)
Ответ:
Решение системы 1: [ 4. -0. -1.]
Решение системы 2: [ 1. 2. -1. 1.]
Решение системы 3: [-1. 1. 3.]
Решение системы 4: [1. 2. 3.]
Задание 2
Двухпараметрическое уравнение состояния Редлиха-Квонга имеет следующий вид:
где P – давление, Па; Т – абсолютная температура, К; V – мольный объем, м3/моль; R = 8.314 – универсальная газовая постоянная, Дж / (моль*К)
Константы a и b зависят от конкретного вещества и вычисляются по следующим формулам:
где
– критическая температура, К;
– критическое давление, Па.
Уравнение состояния Редлиха-Квонга можно записать относительно коэффициента сжимаемости Z:
где
;
С учетом того, что коэффициент сжимаемости Z=PV RT плотность газа может быть выражена следующим образом:
где
– плотность газа, кг/м3;
М – молярная масса газа, кг/моль.
Необходимо реализовать функции для вычисления коэффициента сжимаемости и плотности реального газа с использованием библиотеки NumPy.
Рассчитать плотность пропана при атмосферном давлении, значения T принять принадлежащими интервалу [273.15, 298.15] K, 10 элементов.
Свойство пропана:
Свойство |
Значение |
Единицы измерения |
Молярная масса |
0.0441 |
Кг/моль |
Критическая температура, Тс |
370 |
К |
Критическое давление, Рс |
4.27 |
МПа |
Программная реализация:
import numpy as np
R = 8.314
M = 0.0441
Tc = 370
Pc = 4.27 * 10**6
P = 101325
T = np.linspace(273.15, 298.15, 10)
a = (1/(9*(2**(1/3)-1)))*((R*R*Tc**2.5)/(Pc))
b = ((2**(1/3)-1)/3)*((R*Tc)/(Pc))
def A(T: float):
return (a*P)/(R*R*T**2.5)
def B(T: float):
return (b*P)/(R*T)
def Z(T:float):
At = A(T)
Bt = B(T)
coef = [-At*Bt, (At - Bt*Bt - Bt), -1, 1]
poly = np.polynomial.Polynomial(coef)
roots = poly.roots()
return roots.real.max()
def rho(T:float):
return (M * P)/(R * T * Z(T))
for t in T:
print(rho(t))
Ответ:
2.0061013104794108
1.9848316633242313
1.9640258206972683
1.943668160309764
1.9237437807964357
1.904238459179813
1.8851386113978048
1.8664312556341331
1.8481039782167759
1.8301449018721756
