Построить график плавления ртути и олова (начальная температура -50)
Ответ нейросети
27 ноября 2025 15:39
Можно сделать два понятных варианта графика. Ниже приводжу Ready-to-run пример на Python (Matplotlib), который строит график зависимости температуры от времени при непрерывном нагреве для ртути (Hg) и олова (Sn) начиная с -50°C. В коде используются приближенные значения теплоёмкостей и теплоты плавления; их можно заменить на более точные из справочников.
Что получится:
- для каждого металла температура будет расти, но при достижении точки плавления начнётся плавление и температура будет оставаться примерно на уровне точки плавления до тех пор, пока весь образец не расплавится (плато плавления);
- затем температура продолжит расти после завершения плавления.
Где взять параметры (примеры, приблизительно):
- Ртуть (Hg)
- Точка плавления Tm ≈ -38.834 °C
- Латентная теплоёмкость плавления Lf ≈ 56.4 kJ/kg
- Cp_s ( Hg, solid ) ≈ 134 J/kg·K
- Cp_l ( Hg, liquid ) ≈ 140 J/kg·K
- M (молярная масса) ≈ 0.20059 kg/mol
- Олово (Sn)
- Точка плавления Tm ≈ 231.928 °C
- Lf ≈ 59.3 kJ/kg
- Cp_s ( Sn, solid ) ≈ 230 J/kg·K
- Cp_l ( Sn, liquid ) ≈ 210 J/kg·K
- M ≈ 0.11871 kg/mol
Пример кода (Python):
- Установите mass m образца (например, 0.10 кг), мощность нагрева P (например, 50 Вт).
- initial T0 = -50 (°C).
import math import numpy as np import matplotlib.pyplot as plt
def simulate(material, m, P, T0, dt, tmax): # material: словарь с параметрами # m: масса образца (кг) # P: мощность нагрева (Вт) # T0: начальная температура (°C) # dt: шаг времени (с) # tmax: максимальное время моделирования (с)
T = T0
f = 0.0 # доля расплавленного вещества (0..1)
t_results = []
T_results = []
f_results = []
t = 0.0
while t <= tmax:
t_results.append(t)
T_results.append(T)
f_results.append(f)
dQ = P * dt # энергия за dt (Дж)
# пока часть не расплавлена
if f < 1.0:
Tm = material['Tm']
# 1) поднять температуру до Tm (если еще ниже)
if T < Tm:
Q_to_Tm = m * material['Cp_s'] * (Tm - T)
if dQ < Q_to_Tm:
T += dQ / (m * material['Cp_s'])
dQ = 0.0
else:
dQ -= Q_to_Tm
T = Tm
# 2) плавление
if dQ > 0.0:
Q_to_melt = m * material['Lf'] * (1.0 - f)
if dQ < Q_to_melt:
df = dQ / (m * material['Lf'])
f += df
dQ = 0.0
else:
dQ -= Q_to_melt
f = 1.0
# если осталось энергия, нагреваем жидкость
# после плавления или если всё расплавлено
if f >= 1.0 and dQ > 0.0:
T += dQ / (m * material['Cp_l'])
dQ = 0.0
t += dt
return {
't': np.array(t_results),
'T': np.array(T_results),
'f': np.array(f_results)
}
Параметры (пример)
Hg = { 'name': 'Hg', 'Tm': -38.834, # °C 'Cp_s': 134.0, # J/(kg K) 'Cp_l': 140.0, # J/(kg K) 'Lf': 56360.0, # J/kg 'M': 0.20059 }
Sn = { 'name': 'Sn', 'Tm': 231.928, # °C 'Cp_s': 230.0, # J/(kg K) 'Cp_l': 210.0, # J/(kg K) 'Lf': 59340.0, # J/kg 'M': 0.11871 }
Параметры моделирования
m = 0.10 # масса образца, кг P = 50.0 # мощность нагрева, Вт T0 = -50.0 # начальная температура, °C dt = 0.5 # шаг времени, с tmax = 500.0 # максимальное время моделирования, с
res_Hg = simulate(Hg, m, P, T0, dt, tmax) res_Sn = simulate(Sn, m, P, T0, dt, tmax)
Построение графиков
plt.figure(figsize=(8,5)) plt.plot(res_Hg['t'], res_Hg['T'], label='Mercury (Hg)') plt.plot(res_Sn['t'], res_Sn['T'], label='Tin (Sn)') plt.axhline(y=Hg['Tm'], color='blue', linestyle=':', label='Hg Tm') plt.axhline(y=Sn['Tm'], color='orange', linestyle=':', label='Sn Tm') plt.xlabel('Время t (с)') plt.ylabel('Температура T (°C)') plt.title('График плавления: T(t) при нагреве образцов Hg и Sn (нач. T = -50 °C)') plt.legend() plt.grid(True) plt.tight_layout() plt.show()
Что вы получите:
- график T(t) для Hg и Sn на одном графике;
- для Hg начнётся плавление около -38.8°C, для Sn — около 231.9°C;
- после достижения Tm для каждого металла будет плато плавления, затем температура снова начнёт расти после завершения плавления.
Если хотите другой вид графика:
- график T vs затраченное тепло (T(Q)) для каждого металла;
- или фазовую диаграмму (положение фаз в зависимости от P–T).
Уточните, какой именно вид графика вам нужен (T(t), T(Q), или диаграмма P–T), и какие параметры массы и мощности вы планируете использовать — подстрою код под ваши данные.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



