7.3 已知当温度T=[700,720,740,760,780]时,过热蒸汽体积的变化为V=[0.0977,0.1218,0.1406,0.1551,0.1664],分别采用线性插值和三次样条插值求解T=750,770时的体积变化,并在一个图形界面中画出线性插值函数和三次样条插值函数

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import interp1d, CubicSpline

T = np.array([700, 720, 740, 760, 780])
V = np.array([0.0977, 0.1218, 0.1406, 0.1551, 0.1664])

T_interp = np.array([750, 770])

f_linear = interp1d(T, V, kind='linear')
V_linear_interp = f_linear(T_interp)

cs = CubicSpline(T, V)
V_cubic_interp = cs(T_interp)

print(f"线性插值结果: T={T_interp} 对应的 V={V_linear_interp}")
print(f"三次样条插值结果: T={T_interp} 对应的 V={V_cubic_interp}")
print("学号后四位:3004")

x = np.linspace(700, 780, 400)

plt.figure(figsize=(10, 6))
plt.plot(T, V, 'o', label='原始数据点')
plt.plot(x, f_linear(x), '-', label='线性插值')
plt.plot(x, cs(x), '--', label='三次样条插值')
plt.scatter(T_interp, V_linear_interp, color='red', label='线性插值点')
plt.scatter(T_interp, V_cubic_interp, color='green', label='三次样条插值点')
plt.xlabel('温度 T')
plt.ylabel('体积 V')
plt.title('过热蒸汽体积随温度变化的插值')
plt.legend()
plt.grid(True)
plt.show()

posted on 2024-10-28 22:37  黄元元  阅读(103)  评论(0)    收藏  举报