python——实现多普勒综合效应实验数据的处理

仅仅是在课后为了完成物理实验的数据处理而写下的一段代码,供大家参考!

以下是实验过程及实验数据处理要求 :

在最开始我们引入了这段代码所必须使用到的库:

import numpy as np
import matplotlib.pyplot as plt

然后由于此次实验的数据是以表格形式创建的,所以我们要先构建一个函数,用于获取用户根据实验获得的实验表格

def get_user_input_table():
    n = int(input("请输入表格的行数: "))
    m = int(input("请输入表格的列数: "))
    # 初始化一个空的二维列表(表格)
    table = [[0 for _ in range(m)] for _ in range(n)]

    # 循环读取每一行和每一列的数据
    for i in range(n):
        print(f"请输入第{i + 1}行的{m}个元素(用空格分隔): ")
        # 读取一行数据,并用空格分割成列表
        row_data = input().split()

        # 确保用户输入了正确数量的元素
        if len(row_data) != m:
            print("错误:输入的元素数量与列数不匹配,请重新输入。")
            # 如果输入错误,重新读取当前行
            i -= 1
            continue

            # 将读取的数据转换为适当的类型(这里假设为整数或浮点数)并存储
        try:
            table[i] = [float(value) for value in row_data]
        except ValueError:
            print("错误:输入的不是有效的数字,请重新输入。")
            # 如果转换失败,重新读取当前行
            i -= 1
            continue
    return table

通过这个函数就可以获取数据!

接下来就是获取实验数据并进行简单数据处理的代码:

#输入初始数据
temperature = int(input("请输入当前的实验温度(整数):"))
frequency_0 = int(input("请输入仪器上显示的频率(整数):"))
# 调用函数获取用户输入的表格数据
user_table = get_user_input_table()
# 打印用户输入的表格数据
for row in user_table:
    print(row)
velocity = np.array(user_table[0])
frequency = np.array(user_table[1])
#使用线性回归模拟器拟合
#输出计算值
slope, intercept = np.polyfit(velocity, frequency, 1.0)  # 1表示线性回归
velocity_measurements = frequency_0/ slope
velocity_theoretical_values = 331 * (1 + temperature/273)**0.5
error = (velocity_measurements - velocity_theoretical_values)/velocity_theoretical_values
print(f"计算得到的直线斜率为: {slope:.4f}")
print(f"计算得到的声速测量值为:{velocity_measurements:.4f}")
print(f"计算得到的声速实际值为:{velocity_theoretical_values:.4f}")
print(f"计算得到的误差为:{error:.4f}")
#计算各类平均值
velocity_average = sum(velocity)/len(velocity)
velocity_square_average = sum(velocity**2)/len(velocity)
frequency_average = sum(frequency)/len(frequency)
velocity_average_square = velocity_average ** 2
velocity_frequency_average = np.dot(velocity, frequency)/5
print(f"计算得到的速度平均值为: {velocity_average:.4f}")
print(f"计算得到的速度平方的平均值为: {velocity_square_average:.4f}")
print(f"计算得到的频率的平均值为: {frequency_average:.4f}")
print(f"计算得到的速度平均值的平方为: {velocity_average_square:.4f}")
print(f"计算得到的速度频率矩阵相乘的平均值为: {velocity_frequency_average:.4f}")

初次尝试发帖,如有纰漏,敬请指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值