Python程序:假位法

2025年1月5日 | 阅读 5 分钟

引言

False Position 方法,俗称 Regula Falsi 方法,是一种用于求解非线性方程的数值方法。但当根位于特定区间时,此方法尤其有效。在此,我们将介绍 False Position 方法的基础知识,并提供一个 Python 工作代码。

理解 False Position 方法

False Position 方法是一种迭代方法,它通过区间端点的函数值来改进根的估计。与二分法不同,二分法会随着时间的推移将区间均匀分割,False Position 方法会利用区间两个端点的函数值来分析根。这在某些情况下比二分法更有效。

算法概述

False Position 方法的算法包含以下步骤:

1. 选择一个包含根的初始区间 [a, b]。

2. 分别计算函数值 f(a) 和 f(b)。

3. 使用以下公式计算根的估计值:

Python Program For Method Of False Position

4. 计算新估计值处的函数值,即 f(c)。

5. 根据 f(c) 的符号更新区间 [a, b]。

  • 如果 f(c) 与 f(a) 符号相同,则更新 a = c。
  • 如果 f(c) 与 f(b) 符号相同,则更新 b = c。
  • 如果 f(c) 接近于零,则找到了解,算法终止。

6. 重复步骤 3-5,直到获得所需的精度。

在下一节中,我们将看到 False Position 方法的代码实现。

代码实现

在 Python 中,我们将使用 False Position 方法。我们将创建一个过程,期望该过程能接收用于查找根的函数、初始区间 [a, b] 以及容差作为输入参数。

输出

Root found: 2.0 after 0 iterations.

说明

  • 定义了 false_position_method 函数,它接受目标函数、初始区间端点以及容差和最大迭代次数的可选参数。该算法使用一种精炼步骤,在该步骤中,根的近似值在指定的范围内进行迭代精炼。
  • 计算区间端点的目标函数值。
  • False Position 公式考虑了函数在函数的最左端和最右端的值,这导致了根估计值的确定。
  • 收敛性测试确定估计的根是否满足给定的容差。
  • 根据函数值乘积的符号,选择一个新的区间 '[a,b]',并缩小搜索空间。
  • 循环一直运行到根在设定的容差范围内找到,或者在迭代次数达到最大值之前。
  • 理想的代码展示了一个使用三次函数来完成 False Position 方法在区间 [0, 2] 中查找根的应用。

让我们来看一下 False Position 方法的图形表示。

代码实现

要将数据可视化集成到我们提供的代码中,有必要可视化 False Position 方法的收敛性,以便绘制根估计值随迭代次数的变化。为此,我们可以使用 'matplotlib' 库。以下是带有数据可视化的扩展代码:

输出

Python Program For Method Of False Position
Root found: 2.0 after 0 iterations.

说明

  • 上面的代码已扩展,用于可视化 False Position 方法的收敛性。
  • 现在使用一个名为 'roots' 的列表来存储所有迭代中的根估计值,以便进一步可视化。
  • 使用 'matplotlib' 库,将收敛性绘制出来,其中 x 轴和 y 轴分别表示迭代次数和根估计值。
  • 生成的图表直观地展示了在 False Position 方法的迭代过程中根估计值是如何演变的。
  • 这张图表改进了理解,并提供了关于算法收敛趋势的信息。
  • 修改后的函数 ' false_position_method_with_plot ' 提供了根估计值、迭代次数以及一个估计根的列表,供进一步检查。

结论

False Position 方法是逼近给定数量级区间内非线性方程根的最有效解决方案之一。在这篇描述中,我们讨论了该方法的算法实现,并在 Python 中进行了实现。这种数值方法对于众多的科学和工程问题非常有用,这些问题是数值分析领域的主题。通过了解这些方法并加以运用,程序员可以更好地应对需要求解非线性方程根的现实问题。