动力学法测量金属弹性模量

🏫中南民族大学-⚛大学物理实验2-📠通信工程2024

目录

Python代码

1. 绘制图像

2. 弹性模量数值计算

 图像显示


Pycharm + 豆包 MarsCode 非常强大!有了它们,我在处理大学物理实验的数据及其可视化就非常方便,极大缩减了我的学习成本。Excel 也能绘图但是不够灵活,MatplotlibSeaborn等Python库能减少计算量,提供更加多样化的选择👍。

Python代码

1. 绘制图像

# 动力学法测量金属的弹性模量
# 绘图
import math
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

d1 = [5.980, 5.985, 5.985, 5.989, 5.985, 5.985]
d2 = [5.805, 5.795, 5.795, 5.781, 5.783, 5.785]

# 计算平均值
mean_d1 = np.mean(d1)
mean_d2 = np.mean(d2)
print(f"数据集d1的平均值为:{mean_d1:.3f}")
print(f"数据集d2的平均值为:{mean_d2:.3f}\n")

# 计算标准差
standard_deviation_d1 = np.std(d1, ddof=1)
standard_deviation_d2 = np.std(d2, ddof=1)
print(f"数据集d1的标准差为:{standard_deviation_d1:.3f}")
print(f"数据集d2的标准差为:{standard_deviation_d2:.3f}\n")

# 计算不确定度
Ud1 = math.sqrt(standard_deviation_d1 ** 2 + 0.004 ** 2)
Ud2 = math.sqrt(standard_deviation_d2 ** 2 + 0.004 ** 2)
print(f"数据集d1的不确定度为:{Ud1:.3f}")
print(f"数据集d2的不确定度为:{Ud2:.3f}\n")

# x/l
l = 180.05
x = [25, 30, 35, 42.5, 45, 50, 55]
# 计算x/l
x_l = []
for i in range(len(x)):
    x_l.append(x[i] / l)
    print(f"x/l_{i + 1}={x_l[i]:.3f}", end="     ")

# 频率
f_Cu = [610.560, 610.401, 610.010, 609.751, 609.880, 610.320, 612.090]
f_Al = [819.021, 816.581, 815.411, 814.761, 814.901, 815.731, 817.411]

# 绘制散点图
plt.figure(figsize=(12, 6))

# 第一个子图:x_l 和 f_Cu
plt.subplot(1, 2, 1)
sns.scatterplot(x=x_l, y=f_Cu, label='Cu')

# 用二次曲线拟合数据
# 我们使用 numpy 的 polyfit 函数来拟合二次曲线
coefficients = np.polyfit(x_l, f_Cu, 2)
# 得到x/l=0.224的频率
a, b, c = coefficients
# 计算 x/l=0.224 时的 f_Al 值
x_0224 = 0.224
f_Cu_0224 = a * x_0224 ** 2 + b * x_0224 + c
# 输出结果
print(f"The value of f_Cu at x/l=0.224 is: {f_Cu_0224:.3f}")

# 生成拟合曲线的 x 值
x_fit = np.linspace(min(x_l), max(x_l), 100)
# 根据拟合曲线的系数计算 y 值
y_fit = np.polyval(coefficients, x_fit)

# 绘制拟合曲线
sns.lineplot(x=x_fit, y=y_fit, color='#B5A642', label='Quadratic Fit')

# 标注 x/l = 0.224 的点
plt.scatter(0.224, f_Cu_0224, color='green', marker='o', s=100, label='x/l = 0.224')
# 添加注释显示坐标
plt.annotate(f'({0.224}, {f_Cu_0224:.3f})', xy=(0.224, f_Cu_0224), xytext=(0.224, f_Cu_0224 - 0.1))

plt.title('Scatter Plot of x/l vs. f_Cu with Quadratic Fit')
plt.xlabel('x/l', fontweight='bold')
plt.ylabel('f_Cu/Hz', fontweight='bold')
plt.legend()
plt.grid(True)

# 第二个子图:x_l 和 f_Al
plt.subplot(1, 2, 2)
sns.scatterplot(x=x_l, y=f_Al, label='Al')

# 用二次曲线拟合数据
# 我们使用 numpy 的 polyfit 函数来拟合二次曲线
coefficients = np.polyfit(x_l, f_Al, 2)
# 得到x/l=0.224的频率
a, b, c = coefficients
# 计算 x/l=0.224 时的 f_Al 值
x_0224 = 0.224
f_Al_0224 = a * x_0224 ** 2 + b * x_0224 + c
# 输出结果
print(f"The value of f_Al at x/l=0.224 is: {f_Al_0224:.3f}")

# 生成拟合曲线的 x 值
x_fit = np.linspace(min(x_l), max(x_l), 100)
# 根据拟合曲线的系数计算 y 值
y_fit = np.polyval(coefficients, x_fit)

# 绘制拟合曲线
sns.lineplot(x=x_fit, y=y_fit, color='grey', label='Quadratic Fit')

# 标注 x/l = 0.224 的点
plt.scatter(0.224, f_Al_0224, color='green', marker='o', s=100, label='x/l = 0.224')
# 添加注释显示坐标
plt.annotate(f'({0.224}, {f_Al_0224:.3f})', xy=(0.224, f_Al_0224), xytext=(0.224, f_Al_0224 - 0.15))

plt.title('Scatter Plot of x/l vs. f_Al with Quadratic Fit')
plt.xlabel('x/l', fontweight='bold')
plt.ylabel('f_Al/Hz', fontweight='bold')
plt.legend()
plt.grid(True)

# 调整子图布局
plt.tight_layout()

# 显示图形
plt.show()

2. 弹性模量数值计算

# 动力学法测量计算金属弹性模量
# 数值计算

# 弹性模量
# Cu
# l = 180.1 * 1e-3
# m = 42.46 * 1e-3
# d = 5.985 * 1e-3
# f = 609.708

# Al
l = 180.0 * 1e-3
m = 13.25 * 1e-3
d = 5.791 * 1e-3
f = 814.722

E = 1.6067 * pow(l, 3) * m * pow(f, 2) / pow(d, 4)

# 不确定度
# Cu
# Ul = 0.02 * 1e-3
# Um = 0.01 * 1e-3
# Ud = 0.005 * 1e-3
# Uf = 0.0005

# Al
Ul = 0.02 * 1e-3
Um = 0.01 * 1e-3
Ud = 0.010 * 1e-3
Uf = 0.0005

temp = pow(3 / l, 2) * pow(Ul, 2) + pow(1 / m, 2) * pow(Um, 2) + pow(4 / d, 2) * pow(Ud, 2) + pow(2 / f, 2) * pow(Uf, 2)
U = E * pow(temp, 1 / 2)

print(f"弹性模量为:{E}")
print(f"不确定度为:{U}")

 

 图像显示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qiming_Peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值