1. 首页
  2. 考试认证
  3. 其它
  4. 附加例子-大学物理知识点总结

附加例子-大学物理知识点总结

上传者: 2024-07-27 05:59:32上传 PDF文件 52.68MB 热度 10次

4.4附加例子第四章循环结构第109页4.4附加例子例4.7用最小二乘法画噪声数据的近似曲线

下落物体将会作匀加速度运动,它的速度符合下面的公式:

[ v(t) = at + v0 ]

(4.3)

v(t)代表物体在t时刻的速度。加速度为g,初速度v0为0。这个公式出现在基础物理学中,我们大家都非常的熟悉。如果我们要画出下落物体的速度时间图象,我们得到的(v,t)测量值应当在同一条直线上。但是,学习物理的同学都知道,在实验室得到的测量值不一定是直线。为什么会这样呢?因为所有的测量都有误差。在所有测量值中都有一定的噪声。在工程和科研方面,有许多像这个例子一样带有噪声,而我们希望得到最符合的结果。这个问题叫做线性待定问题。给出一系列带噪声的测量值(x,y),它遵循一条直线,如何确定“最符合”这条直线的解析式呢?

如果我们确定了待定系数m和b,那么我们就确定了解析式:

[ y=mx+b ]

(4.4)

确定待定系数m和b的标准方法为最小二乘法。之所以称为最小二乘法,是因为根据偏差的平方和为最小的条件来选择常数m和b的。公式如下:

[ m = \frac{(∑xy)-(∑x) \cdot y-}{(∑x^2)-(∑x) \cdot x-} ]

(4.5)

[ b = y- - m \cdot x- ]

(4.6)

∑x代表所有测量值x之和,∑y代表所有测量值y之和,∑xy代表所有对应的x与y的乘积之和,x-代表测值量x的数学期望,y-代表测值量y的数学期望。

已知有一系列含有噪声的数据(x,y),编写程序用最小二乘法计算出m和b。数据要求从键盘输入,画出每一个数据点还有画出最适合的直线。

答案:

  1. 陈述问题

已知有一系列含有噪声的数据(x,y),用最小二乘法计算m和b。数据要求从键盘输入,画出每一个数据点还有画出最适合的直线。

  1. 定义输入输出值

这个程序所需的输入值为点的个数,以及点的坐标。输出是用最小二乘法得到的斜率以及y上的截距。

  1. 设计算法

这个问题被分解为6个大步骤:

  1. 获取输入数据点的数量

  2. 读取输入数据值

  3. 计算所需的统计量

  4. 计算斜率和截距

  5. 输出斜率和截距

  6. 绘制输入点和拟合直线

第一步是读取输入量的个数,所以我们要用到input函数。下一步我们要在for循环中使用input函数读取输入量(x,y)。每一个输入值将会产生一个数组([x,y]),然后这个函数将会返回这个数组到调用程序。注意在这里应用for循环是合适的,因为我们事先知道循环要执行多少次。上述步骤的伪代码如下:


print("This program fits a line to noisy data using the least squares method.")

n_points = int(input("Enter number of [x, y] pairs: "))

data = []

for _ in range(n_points):

    x, y = map(float, input("Enter x and y values: ").split())

    data.append((x, y))

# 后续步骤:计算统计量、斜率、截距和绘图

用户评论