牛顿法求解二元方程组的计算器
目录
本文提供了一个交互式计算器 ,使用牛顿法[1] 近似求解两个变量的方程组。计算器近似求解方程组的解(如果存在),并提供每次迭代的所有值表格,便于教学使用。
牛顿法求解方程组
牛顿法是一种数值方法,通过迭代从一个近似解开始,找到方程的根。当处理方程组时,该方法自然扩展为考虑雅可比矩阵及其行列式。
单变量牛顿法
假设我们需要求解以下方程
\[ f(x) = 0 \]
泰勒展开式 \( f(x+\Delta x) \) 为
\[ f(x+\Delta x) \approx f(x) + \Delta x f'(x) \]
现在我们解 \( f(x+\Delta x) = 0 \),得到
\[ f(x) + \Delta x f'(x) = 0 \]
得到
\[ \Delta x \approx - \dfrac{f(x)}{f'(x)} \]
假设我们知道方程根的一个近似值 \( x_n \),则近似根 \( x_{n+1} \) 定义为
\[ \Delta x = x_{n+1} - x_n \]
可以表示为
\[ x_{n+1} \approx x_{n} - \dfrac{f(x)}{f'(x)} \]
方程组与雅可比矩阵
考虑一个含有两个变量 \( x \) 和 \( y \) 的方程组:
\[
\begin{align*}
f(x, y) &= 0 \\
g(x, y) &= 0
\end{align*}
\]
该系统的雅可比矩阵 \( J \) 表示为:
\[
J = \begin{bmatrix}
\frac{\partial f}{\partial x} & \frac{\partial f}{\partial y} \\
\frac{\partial g}{\partial x} & \frac{\partial g}{\partial y}
\end{bmatrix}
\]
牛顿法的更新公式
牛顿法用于方程组的更新公式为:
\[
\begin{aligned}
\Delta x &= \frac{-f \cdot g_y + g \cdot f_y}{\text{D}} \\\\
\Delta y &= \frac{-g \cdot f_x + f \cdot g_x}{\text{D}}
\end{aligned}
\]
因此
\[
\begin{aligned}
x_{n+1} &\approx x_n + \frac{-f \cdot g_y + g \cdot f_y}{\text{D}} \\\\
y_{n+1} &\approx y_n + \frac{-g \cdot f_x + f \cdot g_x}{\text{D}}
\end{aligned}
\]
其中 \( f \) 和 \( g \) 是在当前 \( (x_n, y_n) \) 处评估的函数。
\( f_x, f_y, g_x, g_y \) 是函数 \( f \) 和 \( g \) 对 \( x \) 和 \( y \) 的偏导数。
\(\text{D} = f_x \cdot g_y - f_y \cdot g_x\) 是雅可比矩阵的行列式。
迭代过程
牛顿法通过上述公式迭代更新变量 \( x \) 和 \( y \),直到满足停止准则为止。常见的停止准则包括:
收敛容差:当连续迭代之间的差异小于某个阈值时停止。
最大迭代次数:达到最大迭代次数时停止。
1. 初始化:从 \( x \) 和 \( y \) 的初始猜测值开始:
获得接近方程组解的初始猜测值的一种方法是绘制 \( f(x,y) \) 和 \( g(x,y) \) 的图形,近似它们的交点,并使用它们作为初始猜测值。
2. 评估函数及其导数:计算当前 \( (x, y) \) 处的 \( f(x, y) \)、\( g(x, y) \) 及其偏导数。
3. 计算行列式:计算雅可比矩阵的行列式。
4. 更新变量:使用牛顿法更新公式计算 \( \Delta x \) 和 \( \Delta y \)。
5. 迭代:使用 \( \Delta x \) 和 \( \Delta y \) 更新 \( x \) 和 \( y \),并重复直到达到收敛条件或最大迭代次数。
6. 容差 \( \epsilon \) 用于测试 \( f(x,y) \) 和 \( g(x,y) \) 的绝对值如下:
当 \( |f(x,y)| \lt \epsilon \) 和 \( |g(x,y)| \lt \epsilon \) 时,迭代过程停止。
7. 计算器一次近似一个解。
牛顿法为求解两个变量方程组提供了一种强大而高效的方法,前提是初始猜测值足够接近实际解,并且函数在解的邻域内可微。
计算器
输入 \( f(x, y): \)
输入 \( g(x, y): \)
\( x \) 的初始猜测值:
\( y \) 的初始猜测值:
容差:\( \epsilon \)
最大迭代次数:
求解
结果
迭代次数
\( x \)
\( y \)
\( f(x, y) \)
\( g(x, y) \)
更多参考文献和链接
《大学微积分 - 早期超越》- Joel Hass, Maurice D. Weir, George B. Thomas, Jr., Christopher Heil - ISBN-13 : 978-0134995540
《微积分》- Gilbert Strang - MIT - ISBN-13 : 978-0961408824
《微积分 - 早期超越》- James Stewart - ISBN-13: 978-0-495-01166-8