7.7非线性方程组的数值解法
非线性方程组的数值解法 深度讲解与推导证明
各位同学,今天我们进入数值分析中更具工程价值、也更复杂的内容——非线性方程组的数值解法。我们之前学习的单个非线性方程求根,是n=1的特殊情况;而工程中的绝大多数问题,比如结构力学、流体仿真、电路设计、机器学习优化等,最终都归结为求解多变量的非线性方程组。
非线性方程组的求解,无论是理论上的解的存在性、唯一性,还是数值解法的收敛性、稳定性,都远比线性方程组和单个非线性方程复杂。今天我们先从基础定义、解的特性,以及核心工具——雅可比矩阵,进行完整的讲解与推导。
一、非线性方程组的基本定义与向量表示
1.1 标量形式的非线性方程组
我们考虑含有n个未知数、n个方程的方程组:
其中,\(f_1,f_2,\dots,f_n\) 都是定义在n维空间区域上的多元函数。
非线性方程组的定义:当 \(n\geq2\),且 \(f_1,f_2,\dots,f_n\) 中至少有一个是关于自变量 \(x_1,x_2,\dots,x_n\) 的非线性函数时,称(7.31)为非线性方程组。
- 线性函数:仅包含自变量的一次项,形如 \(a_1x_1+a_2x_2+\dots+a_nx_n+b\);
- 非线性函数:包含自变量的高次项(如 \(x_1^2, x_1x_2\))、超越项(如 \(\sin x_1, e^{x_2}\))等无法表示为一次线性组合的项。
1.2 向量形式的统一表示
为了将单个非线性方程的求根方法推广到方程组,我们引入向量记号,将标量方程组改写为紧凑的向量形式:
- 定义n维自变量列向量:\(\boldsymbol{x} = (x_1, x_2, \dots, x_n)^T \in \mathbb{R}^n\)
- 定义n维向量值函数:\(\boldsymbol{F}(\boldsymbol{x}) = \left(f_1(\boldsymbol{x}), f_2(\boldsymbol{x}), \dots, f_n(\boldsymbol{x})\right)^T\)
此时,非线性方程组(7.31)可以完全等价地写为:
这个形式上的统一是核心突破:单个非线性方程是 \(f(x)=0\)(标量函数=0),非线性方程组是 \(\boldsymbol{F}(\boldsymbol{x})=\boldsymbol{0}\)(向量值函数=0),二者形式完全一致。我们只需要把标量的导数,替换为向量值函数的导数(雅可比矩阵),就可以将牛顿法、不动点迭代等成熟方法,直接推广到非线性方程组的求解。
二、非线性方程组与线性方程组的核心差异
线性方程组是我们已经熟悉的内容,而非线性方程组的求解难度,本质来源于二者在解的特性上的根本区别,我们用表格清晰对比:
| 特性 | 线性方程组 \(\boldsymbol{Ax}=\boldsymbol{b}\) | 非线性方程组 \(\boldsymbol{F}(\boldsymbol{x})=\boldsymbol{0}\) |
|---|---|---|
| 解的存在性 | 有通用充要条件:系数矩阵的秩 = 增广矩阵的秩 | 无通用的充要判定条件,只能针对具体问题分析 |
| 解的个数 | 仅3种可能:无解、唯一解、无穷多解 | 可能性无限:无解、1个解、2个解、有限个解、无穷多解 |
| 求解方法 | 有直接法(高斯消元、LU分解),可得到精确解(无舍入误差时) | 无直接解法,只能用迭代法,仅能得到近似解 |
| 收敛性 | 迭代法的收敛性仅由系数矩阵决定,与初值无关 | 迭代法的收敛性高度依赖初值的选择,仅局部收敛 |
例7.13就是对非线性方程组解的多样性的最直观展示,我们接下来进行完整的推导与分析。
三、经典例题解析(例7.13):含参数二元非线性方程组的解的完整推导
3.1 问题描述
求xOy平面上两条抛物线 \(y = x^2 + \alpha\) 与 \(x = y^2 + \alpha\) 的交点,等价于求解二元非线性方程组:
我们将完整推导不同参数 \(\alpha\) 下,方程组解的个数与具体形式。
3.2 方程组的化简与分解
两个方程相减,消去参数 \(\alpha\),得到:
整理等式左边:
提取公因子 \((y-x)\),得到核心分解式:
因此,方程组的解必然满足以下两种情况之一,我们分别求解:
情况1:\(y = x\)(两条抛物线关于直线 \(y=x\) 对称,交点必然在对称轴上)
将 \(y=x\) 代入第一个方程,得到一元二次方程:
其判别式为 \(\Delta_1 = 1^2 - 4 \cdot 1 \cdot \alpha = 1 - 4\alpha\),根据判别式的符号分析解的情况:
- 当 \(\Delta_1 < 0\)(即 \(\alpha > \frac{1}{4}\)):无实根,该情况无实解;
- 当 \(\Delta_1 = 0\)(即 \(\alpha = \frac{1}{4}\)):有唯一实根 \(x = \frac{1}{2}\),对应解为 \(x=y=\frac{1}{2}\);
- 当 \(\Delta_1 > 0\)(即 \(\alpha < \frac{1}{4}\)):有两个实根 \(x = \frac{1 \pm \sqrt{1-4\alpha}}{2}\),对应解为 \(x=y=\frac{1 \pm \sqrt{1-4\alpha}}{2}\)。
情况2:\(1 + x + y = 0\),即 \(y = -x -1\)(两条抛物线的非对称交点)
将 \(y=-x-1\) 代入第一个方程,得到一元二次方程:
其判别式为 \(\Delta_2 = 1^2 - 4 \cdot 1 \cdot (\alpha + 1) = -3 - 4\alpha\),根据判别式的符号分析解的情况:
- 当 \(\Delta_2 < 0\)(即 \(\alpha > -\frac{3}{4}\)):无实根,该情况无实解;
- 当 \(\Delta_2 = 0\)(即 \(\alpha = -\frac{3}{4}\)):有唯一实根 \(x = -\frac{1}{2}\),对应解为 \(x=y=-\frac{1}{2}\),该解同时满足情况1的 \(y=x\),属于重根;
- 当 \(\Delta_2 > 0\)(即 \(\alpha < -\frac{3}{4}\)):有两个实根 \(x = \frac{-1 \pm \sqrt{-3-4\alpha}}{2}\),对应解为 \(y=-x-1\)。
3.3 不同参数下的解的汇总分析
我们将两种情况的解合并,得到不同 \(\alpha\) 下的解的完整结果:
- \(\alpha = \frac{1}{2}\):\(\Delta_1=-1<0\),\(\Delta_2=-5<0\),无实解,两条抛物线无交点;
- \(\alpha = \frac{1}{4}\):\(\Delta_1=0\),有唯一解 \(x=y=\frac{1}{2}\);\(\Delta_2=-4<0\),无额外解,总共有1个解,两条抛物线相切;
- \(\alpha = 0\):\(\Delta_1=1>0\),有两个解 \(x=y=0\)、\(x=y=1\);\(\Delta_2=-3<0\),无额外解,总共有2个解;
- \(\alpha = -1\):\(\Delta_1=5>0\),有两个解 \(x=y=\frac{1\pm\sqrt{5}}{2}\);\(\Delta_2=1>0\),有两个解 \((0,-1)\)、\((-1,0)\),总共有4个解。
这个例子完美验证了非线性方程组解的多样性:仅通过调整一个参数,解的个数就可以从0到1到2到4,这是线性方程组永远不可能出现的特性。
四、向量值函数的导数:雅可比矩阵的推导与核心意义
要将单变量的牛顿法推广到非线性方程组,核心是解决「向量值函数的导数是什么」的问题,答案就是雅可比矩阵,它是非线性方程组数值解法的核心工具。
4.1 从单变量导数到多元向量函数的导数
我们先回顾单变量可微函数的导数与一阶泰勒展开:
对于标量函数 \(f(x)\),在点 \(x_k\) 处的一阶泰勒展开为:
其中导数 \(f'(x_k)\) 描述了函数值随自变量的变化率,实现了非线性函数的局部线性化。
对于n维向量值函数 \(\boldsymbol{F}(\boldsymbol{x})\),我们同样希望实现局部线性化:在点 \(\boldsymbol{x}_k\) 处,用线性变换近似非线性的向量函数。对每个分量函数 \(f_i(\boldsymbol{x})\),做多元函数的一阶泰勒展开(忽略高阶无穷小):
将n个分量的展开式写成矩阵乘法的形式:
其中的n×n矩阵 \(\boldsymbol{J}(\boldsymbol{x}_k)\),就是向量值函数 \(\boldsymbol{F}(\boldsymbol{x})\) 在点 \(\boldsymbol{x}_k\) 处的雅可比矩阵,也记作 \(\boldsymbol{F}'(\boldsymbol{x})\),即向量值函数的导数。
4.2 雅可比矩阵的严格定义
对于向量值函数 \(\boldsymbol{F}(\boldsymbol{x})=(f_1(\boldsymbol{x}),f_2(\boldsymbol{x}),\dots,f_n(\boldsymbol{x}))^T\),其雅可比矩阵定义为:
4.3 雅可比矩阵的核心特性与意义
- 结构特性:雅可比矩阵的第i行,是第i个分量函数 \(f_i(\boldsymbol{x})\) 的梯度向量 \(\nabla f_i(\boldsymbol{x})\) 的转置;第j列,是所有分量函数对第j个自变量 \(x_j\) 的偏导数。
- 核心作用:实现了非线性向量函数的局部线性化,和单变量导数的作用完全等价:
- 单变量:\(f(x) \approx f(x_k) + f'(x_k)(x-x_k)\)
- 多变量:\(\boldsymbol{F}(\boldsymbol{x}) \approx \boldsymbol{F}(\boldsymbol{x}_k) + \boldsymbol{J}(\boldsymbol{x}_k)(\boldsymbol{x}-\boldsymbol{x}_k)\)
- 收敛性的核心条件:单变量牛顿法要求 \(f'(x^*) \neq 0\)(导数非零),对应非线性方程组牛顿法,要求雅可比矩阵 \(\boldsymbol{J}(\boldsymbol{x}^*)\) 在解 \(\boldsymbol{x}^*\) 处非奇异(可逆),这是迭代法局部收敛的核心条件。
- 几何意义:雅可比矩阵描述了向量函数 \(\boldsymbol{F}\) 在点 \(\boldsymbol{x}\) 处的局部线性变换,将自变量空间的微小向量 \(\Delta \boldsymbol{x}\),映射到函数值空间的微小向量 \(\Delta \boldsymbol{F}\),是多元函数在该点的切空间的线性变换矩阵。
五、核心知识点归纳总结表
| 核心概念 | 定义与公式 | 核心意义 | 关键特性 |
|---|---|---|---|
| 非线性方程组(标量形式) | \(\begin{cases}f_1(x_1,\dots,x_n)=0\\\vdots\\f_n(x_1,\dots,x_n)=0\end{cases}\),至少一个\(f_i\)为非线性函数 | 描述n个变量之间的非线性约束关系,是工程问题的核心数学模型 | 解的个数无固定规律,无通用直接解法 |
| 非线性方程组(向量形式) | \(\boldsymbol{F}(\boldsymbol{x}) = \boldsymbol{0}\),\(\boldsymbol{F}=(f_1,\dots,f_n)^T\),\(\boldsymbol{x}=(x_1,\dots,x_n)^T\) | 将标量方程组统一为向量形式,实现单变量求根方法到多变量的推广 | 与单变量非线性方程\(f(x)=0\)形式完全一致,便于方法迁移 |
| 雅可比矩阵 | \(\boldsymbol{J}(\boldsymbol{x}) = \left(\frac{\partial f_i}{\partial x_j}\right)_{n\times n}\) | 向量值函数的导数,非线性方程组局部线性化的核心工具 | 第i行为\(f_i\)的梯度转置,可逆性决定了牛顿法的收敛性 |
| 线性与非线性方程组的核心区别 | 线性:\(\boldsymbol{Ax}=\boldsymbol{b}\);非线性:\(\boldsymbol{F}(\boldsymbol{x})=\boldsymbol{0}\) | 明确二者求解难度的本质差异 | 线性方程组解的个数仅3种可能,有直接解法;非线性方程组解的个数无限制,仅能迭代求解 |
| 例7.13解的特性 | 方程组\(\begin{cases}y=x^2+\alpha\\x=y^2+\alpha\end{cases}\) | 直观展示非线性方程组解的多样性 | 随参数\(\alpha\)变化,解的个数可从0到1到2到4,线性方程组无此特性 |
非线性方程组的不动点迭代法 深度讲解与推导证明
各位同学,今天我们系统讲解非线性方程组求解的基础方法——不动点迭代法。它是单变量不动点迭代法在多变量场景的直接推广,也是理解后续牛顿法等更高效算法的基础。我们将从核心原理、收敛性定理、例题实操三个维度,完整拆解这个方法。
一、不动点迭代法的基本原理
1.1 方程组的等价改写与不动点定义
我们的目标是求解n维非线性方程组:
和单变量非线性方程求根的思路一致,我们将方程组等价改写为便于迭代的不动点形式:
其中 \(\boldsymbol{\Phi}: D \subset \mathbb{R}^n \to \mathbb{R}^n\) 是定义在区域 \(D\) 上的n维向量值函数,称为迭代函数。
不动点的定义
若存在向量 \(\boldsymbol{x}^* \in D\),满足 \(\boldsymbol{x}^* = \boldsymbol{\Phi}(\boldsymbol{x}^*)\),则称 \(\boldsymbol{x}^*\) 是迭代函数 \(\boldsymbol{\Phi}\) 的不动点。
显然,不动点 \(\boldsymbol{x}^*\) 就是原非线性方程组 \(\boldsymbol{F}(\boldsymbol{x})=\boldsymbol{0}\) 的解,二者完全等价。
1.2 不动点迭代的迭代格式
基于不动点形式(7.34),我们构造迭代公式:
这个迭代过程的逻辑是:
- 选取初始迭代向量 \(\boldsymbol{x}^{(0)} \in D\);
- 代入迭代函数 \(\boldsymbol{\Phi}\),得到第1步迭代值 \(\boldsymbol{x}^{(1)}=\boldsymbol{\Phi}(\boldsymbol{x}^{(0)})\);
- 反复代入迭代,生成向量序列 \(\{\boldsymbol{x}^{(k)}\}\);
- 若序列收敛,即 \(\lim_{k \to \infty} \boldsymbol{x}^{(k)} = \boldsymbol{x}^*\),对迭代式两边取极限,由 \(\boldsymbol{\Phi}\) 的连续性可得:\[\boldsymbol{x}^* = \lim_{k \to \infty} \boldsymbol{x}^{(k+1)} = \lim_{k \to \infty} \boldsymbol{\Phi}(\boldsymbol{x}^{(k)}) = \boldsymbol{\Phi}(\lim_{k \to \infty} \boldsymbol{x}^{(k)}) = \boldsymbol{\Phi}(\boldsymbol{x}^*) \]即极限 \(\boldsymbol{x}^*\) 就是不动点,也就是原方程组的解。
二、不动点迭代的收敛性定理
不动点迭代的核心问题是:迭代序列在什么条件下收敛?收敛速度由什么决定? 我们分别从全局收敛和局部收敛两个维度,给出严格的定理与推导。
2.1 全局收敛定理:压缩映射原理(定理7.7)
压缩映射原理是不动点迭代的核心理论基础,它给出了迭代全局收敛的充要条件,也是泛函分析中最基础的定理之一。
定理7.7 完整表述
设迭代函数 \(\boldsymbol{\Phi}\) 定义在区域 \(D \subset \mathbb{R}^n\) 上,满足以下两个条件:
- 压缩条件:存在闭集 \(D_0 \subset D\) 及常数 \(L \in (0,1)\),使得对任意 \(\boldsymbol{x},\boldsymbol{y} \in D_0\),有\[\|\boldsymbol{\Phi}(\boldsymbol{x}) - \boldsymbol{\Phi}(\boldsymbol{y})\| \leq L \|\boldsymbol{x} - \boldsymbol{y}\| \tag{7.36} \](\(\|\cdot\|\) 为任意相容的向量范数,如1范数、∞范数、2范数)
- 自映射条件:对任意 \(\boldsymbol{x} \in D_0\),有 \(\boldsymbol{\Phi}(\boldsymbol{x}) \in D_0\)(即 \(\boldsymbol{\Phi}\) 将 \(D_0\) 映射到自身)。
则有以下结论:
- 存在唯一性:\(\boldsymbol{\Phi}\) 在 \(D_0\) 内有唯一的不动点 \(\boldsymbol{x}^*\);
- 全局收敛性:对任意初始值 \(\boldsymbol{x}^{(0)} \in D_0\),由迭代式(7.35)生成的序列 \(\{\boldsymbol{x}^{(k)}\}\) 都收敛到不动点 \(\boldsymbol{x}^*\);
- 误差估计:有先验误差估计式\[\|\boldsymbol{x}^* - \boldsymbol{x}^{(k)}\| \leq \frac{L^k}{1-L} \|\boldsymbol{x}^{(1)} - \boldsymbol{x}^{(0)}\| \]
定理的核心解读与推导
- 压缩映射的意义:压缩条件本质是「映射后两点的距离严格小于映射前的距离」,迭代过程中,序列的相邻两项的距离会以指数级缩小,最终收敛到唯一的不动点。常数 \(L\) 称为压缩系数,\(L\) 越小,收敛速度越快。
- 存在性证明:
对任意初始值 \(\boldsymbol{x}^{(0)} \in D_0\),由自映射条件,序列 \(\{\boldsymbol{x}^{(k)}\}\) 全部落在 \(D_0\) 内。
由压缩条件,对任意正整数 \(m\),有:\[\|\boldsymbol{x}^{(k+m)} - \boldsymbol{x}^{(k)}\| \leq \sum_{i=k}^{k+m-1} \|\boldsymbol{x}^{(i+1)} - \boldsymbol{x}^{(i)}\| \leq \sum_{i=k}^{k+m-1} L^i \|\boldsymbol{x}^{(1)} - \boldsymbol{x}^{(0)}\| \]这是等比数列求和,公比 \(L<1\),因此当 \(k \to \infty\) 时,右边趋近于0,说明 \(\{\boldsymbol{x}^{(k)}\}\) 是柯西序列。
又因为 \(D_0\) 是闭集,柯西序列的极限 \(\boldsymbol{x}^*\) 一定在 \(D_0\) 内,对迭代式取极限可得 \(\boldsymbol{x}^* = \boldsymbol{\Phi}(\boldsymbol{x}^*)\),即不动点存在。 - 唯一性证明:
假设 \(D_0\) 内有两个不动点 \(\boldsymbol{x}^*\) 和 \(\boldsymbol{y}^*\),则:\[\|\boldsymbol{x}^* - \boldsymbol{y}^*\| = \|\boldsymbol{\Phi}(\boldsymbol{x}^*) - \boldsymbol{\Phi}(\boldsymbol{y}^*)\| \leq L \|\boldsymbol{x}^* - \boldsymbol{y}^*\| \]移项得 \((1-L)\|\boldsymbol{x}^* - \boldsymbol{y}^*\| \leq 0\),因为 \(L<1\),所以只能 \(\|\boldsymbol{x}^* - \boldsymbol{y}^*\|=0\),即 \(\boldsymbol{x}^*=\boldsymbol{y}^*\),不动点唯一。 - 误差估计式推导:
由 \(\|\boldsymbol{x}^{(k+1)} - \boldsymbol{x}^{(k)}\| \leq L \|\boldsymbol{x}^{(k)} - \boldsymbol{x}^{(k-1)}\|\),递推可得 \(\|\boldsymbol{x}^{(k+1)} - \boldsymbol{x}^{(k)}\| \leq L^k \|\boldsymbol{x}^{(1)} - \boldsymbol{x}^{(0)}\|\)。
对任意正整数 \(m\),有:\[\|\boldsymbol{x}^{(k+m)} - \boldsymbol{x}^{(k)}\| \leq \sum_{i=0}^{m-1} L^{k+i} \|\boldsymbol{x}^{(1)} - \boldsymbol{x}^{(0)}\| = L^k \cdot \frac{1-L^m}{1-L} \|\boldsymbol{x}^{(1)} - \boldsymbol{x}^{(0)}\| \]令 \(m \to \infty\),\(L^m \to 0\),即可得到误差估计式。
2.2 局部收敛定理(定理7.8)
压缩映射原理是全局收敛定理,要求在整个区域 \(D_0\) 上满足压缩条件,这个条件在实际中往往难以验证。因此我们给出更实用的局部收敛定理,仅要求在不动点的邻域内满足收敛条件。
定理7.8 完整表述
设迭代函数 \(\boldsymbol{\Phi}\) 在其不动点 \(\boldsymbol{x}^*\) 的邻域内有连续的一阶偏导数,且其雅可比矩阵的谱半径满足:
则存在 \(\boldsymbol{x}^*\) 的一个邻域 \(S\),对任意初始值 \(\boldsymbol{x}^{(0)} \in S\),迭代序列 \(\{\boldsymbol{x}^{(k)}\}\) 都收敛到 \(\boldsymbol{x}^*\)。
核心概念与解读
- 雅可比矩阵:迭代函数 \(\boldsymbol{\Phi}(\boldsymbol{x})=(\varphi_1(\boldsymbol{x}),\varphi_2(\boldsymbol{x}),\dots,\varphi_n(\boldsymbol{x}))^T\) 的雅可比矩阵为:\[\boldsymbol{\Phi}'(\boldsymbol{x}) = \begin{pmatrix} \frac{\partial \varphi_1}{\partial x_1} & \frac{\partial \varphi_1}{\partial x_2} & \dots & \frac{\partial \varphi_1}{\partial x_n} \\ \frac{\partial \varphi_2}{\partial x_1} & \frac{\partial \varphi_2}{\partial x_2} & \dots & \frac{\partial \varphi_2}{\partial x_n} \\ \vdots & \vdots & \ddots & \vdots \\ \frac{\partial \varphi_n}{\partial x_1} & \frac{\partial \varphi_n}{\partial x_2} & \dots & \frac{\partial \varphi_n}{\partial x_n} \end{pmatrix}\]
- 谱半径:矩阵 \(\boldsymbol{A}\) 的谱半径 \(\rho(\boldsymbol{A})\) 定义为其所有特征值的模的最大值,即 \(\rho(\boldsymbol{A}) = \max\{|\lambda| \mid \lambda \text{ 是 } \boldsymbol{A} \text{ 的特征值}\}\)。
- 与单变量迭代的对应关系:
单变量不动点迭代的局部收敛条件是 \(|\varphi'(x^*)| < 1\),多变量场景下,标量导数的绝对值,推广为雅可比矩阵的谱半径,谱半径小于1是局部收敛的充要条件(连续可微前提下)。 - 实用判据:由于谱半径的计算较为复杂,我们可以用矩阵范数来判定:对任意相容的矩阵范数,有 \(\rho(\boldsymbol{A}) \leq \|\boldsymbol{A}\|\)。因此只要 \(\|\boldsymbol{\Phi}'(\boldsymbol{x}^*)\| < 1\),就一定满足谱半径小于1的条件,迭代局部收敛。
2.3 向量序列的收敛阶
和单变量迭代一致,我们用收敛阶来刻画迭代序列的收敛速度,定义如下:
设序列 \(\{\boldsymbol{x}^{(k)}\}\) 收敛到 \(\boldsymbol{x}^*\),若存在常数 \(p \geq 1\) 和 \(\alpha > 0\),使得
则称序列 \(\{\boldsymbol{x}^{(k)}\}\) 是p阶收敛的。
- \(p=1\) 且 \(0<\alpha<1\):线性收敛;
- \(p>1\):超线性收敛;
- \(p=2\):平方收敛(二阶收敛)。
不动点迭代法在满足局部收敛条件时,通常为线性收敛,这也是它的收敛速度慢于牛顿法的核心原因。
三、例题详解(例7.14):不动点迭代法求解二元非线性方程组
例题题干
用不动点迭代法求解方程组:
步骤1:构造不动点迭代格式
我们将方程组改写为 \(\boldsymbol{x}=\boldsymbol{\Phi}(\boldsymbol{x})\) 的形式,将含 \(-10x_1\)、\(-10x_2\) 的项移到等式右侧,两边除以10,得到:
即迭代函数为:
步骤2:验证压缩映射条件,确定收敛区域
取闭区域 \(D = \{(x_1,x_2) \mid 0 \leq x_1,x_2 \leq 1.5\}\),我们验证定理7.7的两个条件。
条件1:自映射验证(\(\boldsymbol{\Phi}(D) \subset D\))
对任意 \(\boldsymbol{x} \in D\),\(x_1,x_2 \in [0,1.5]\),计算 \(\varphi_1\) 和 \(\varphi_2\) 的取值范围:
- \(\varphi_1\) 的最小值:\(x_1=x_2=0\) 时,\(\varphi_1=8/10=0.8\);最大值:\(x_1=x_2=1.5\) 时,\(\varphi_1=(2.25+2.25+8)/10=1.25\)。因此 \(\varphi_1 \in [0.8,1.25] \subset [0,1.5]\)。
- \(\varphi_2\) 的最小值:\(x_1=x_2=0\) 时,\(\varphi_2=8/10=0.8\);最大值:\(x_1=x_2=1.5\) 时,\(\varphi_2=(1.5 \times 2.25 + 1.5 + 8)/10=12.875/10=1.2875\)。因此 \(\varphi_2 \in [0.8,1.2875] \subset [0,1.5]\)。
因此对任意 \(\boldsymbol{x} \in D\),\(\boldsymbol{\Phi}(\boldsymbol{x}) \in D\),自映射条件成立。
条件2:压缩条件验证(1范数下)
对任意 \(\boldsymbol{x},\boldsymbol{y} \in D\),计算分量的差值:
-
对 \(\varphi_1\):
\[|\varphi_1(\boldsymbol{y}) - \varphi_1(\boldsymbol{x})| = \frac{1}{10}|y_1^2 - x_1^2 + y_2^2 - x_2^2| \leq \frac{1}{10}\left(|y_1-x_1||y_1+x_1| + |y_2-x_2||y_2+x_2|\right) \]由于 \(x_1,y_1 \leq 1.5\),\(|y_1+x_1| \leq 3\),同理 \(|y_2+x_2| \leq 3\),因此:
\[|\varphi_1(\boldsymbol{y}) - \varphi_1(\boldsymbol{x})| \leq \frac{3}{10}\left(|y_1-x_1| + |y_2-x_2|\right) = 0.3 \|\boldsymbol{y}-\boldsymbol{x}\|_1 \] -
对 \(\varphi_2\):
\[|\varphi_2(\boldsymbol{y}) - \varphi_2(\boldsymbol{x})| = \frac{1}{10}|y_1y_2^2 - x_1x_2^2 + y_1 - x_1| \]用三角不等式拆分:
\[|y_1y_2^2 - x_1x_2^2 + y_1 - x_1| \leq |y_1||y_2^2 - x_2^2| + |y_1 - x_1|(x_2^2 + 1) \]代入 \(|y_1| \leq 1.5\),\(|y_2^2 - x_2^2| \leq 3|y_2-x_2|\),\(x_2^2+1 \leq 3.25\),得:
\[|\varphi_2(\boldsymbol{y}) - \varphi_2(\boldsymbol{x})| \leq \frac{1}{10}\left(4.5|y_2-x_2| + 3.25|y_1-x_1|\right) \leq \frac{4.5}{10} \|\boldsymbol{y}-\boldsymbol{x}\|_1 = 0.45 \|\boldsymbol{y}-\boldsymbol{x}\|_1 \] -
合并得到1范数的压缩条件:
\[\|\boldsymbol{\Phi}(\boldsymbol{y}) - \boldsymbol{\Phi}(\boldsymbol{x})\|_1 = |\varphi_1(\boldsymbol{y}) - \varphi_1(\boldsymbol{x})| + |\varphi_2(\boldsymbol{y}) - \varphi_2(\boldsymbol{x})| \leq (0.3+0.45)\|\boldsymbol{y}-\boldsymbol{x}\|_1 = 0.75 \|\boldsymbol{y}-\boldsymbol{x}\|_1 \]压缩系数 \(L=0.75 \in (0,1)\),压缩条件成立。
根据定理7.7,\(\boldsymbol{\Phi}\) 在 \(D\) 内有唯一不动点,从 \(D\) 内任意初始值出发的迭代都收敛。
步骤3:迭代计算
取初始值 \(\boldsymbol{x}^{(0)}=(0,0)^T\),按迭代公式计算:
- 第1步:\(\boldsymbol{x}^{(1)} = \boldsymbol{\Phi}(\boldsymbol{x}^{(0)}) = (0.8, 0.8)^T\)
- 第2步:\(\boldsymbol{x}^{(2)} = \boldsymbol{\Phi}(\boldsymbol{x}^{(1)}) = \left(\frac{0.8^2+0.8^2+8}{10}, \frac{0.8 \times 0.8^2 + 0.8 +8}{10}\right) = (0.928, 0.9312)^T\)
- 持续迭代,第7步得到 \(\boldsymbol{x}^{(7)} = (0.999328, 0.999329)^T\),最终收敛到不动点 \(\boldsymbol{x}^*=(1,1)^T\)。
代入原方程验证:
- 第一个方程:\(1^2 -10 \times 1 + 1^2 +8 = 0\),成立;
- 第二个方程:\(1 \times 1^2 +1 -10 \times 1 +8 =0\),成立。
步骤4:局部收敛性验证
计算迭代函数的雅可比矩阵:
在不动点 \(\boldsymbol{x}^*=(1,1)\) 处,雅可比矩阵为:
其特征值为 \(\lambda_1=0\),\(\lambda_2=0.4\),谱半径 \(\rho(\boldsymbol{\Phi}'(\boldsymbol{x}^*))=0.4 < 1\),满足定理7.8的局部收敛条件,迭代收敛。
四、核心知识点归纳总结表
| 核心概念 | 定义与公式 | 核心意义 | 关键判据/特性 |
|---|---|---|---|
| 不动点迭代格式 | \(\boldsymbol{x}^{(k+1)} = \boldsymbol{\Phi}(\boldsymbol{x}^{(k)})\),\(\boldsymbol{x}=\boldsymbol{\Phi}(\boldsymbol{x})\) 是 \(\boldsymbol{F}(\boldsymbol{x})=\boldsymbol{0}\) 的等价改写 | 将非线性方程组求解转化为迭代序列的极限求解,是单变量不动点迭代的多变量推广 | 迭代收敛的极限就是方程组的解 |
| 压缩映射原理(全局收敛) | 1. 压缩条件:\(|\boldsymbol{\Phi}(\boldsymbol{x})-\boldsymbol{\Phi}(\boldsymbol{y})| \leq L|\boldsymbol{x}-\boldsymbol{y}|, L\in(0,1)\);2. 自映射:\(\boldsymbol{\Phi}(D_0) \subset D_0\) | 给出迭代全局收敛的充要条件,保证不动点的存在唯一性 | 压缩系数 \(L\) 越小,收敛速度越快;对任意初始值 \(\boldsymbol{x}^{(0)} \in D_0\) 都收敛 |
| 局部收敛定理 | 迭代函数在不动点 \(\boldsymbol{x}^*\) 处的雅可比矩阵谱半径 \(\rho(\boldsymbol{\Phi}'(\boldsymbol{x}^*)) < 1\) | 给出实用的局部收敛判据,无需验证全局压缩条件 | 谱半径小于1是局部收敛的充要条件;可用矩阵范数 \(|\boldsymbol{\Phi}'(\boldsymbol{x}^*)| <1\) 作为充分判据 |
| 收敛阶 | \(\lim_{k \to \infty} \frac{|\boldsymbol{x}^{(k+1)} - \boldsymbol{x}^*|}{|\boldsymbol{x}^{(k)} - \boldsymbol{x}^*|^p} = \alpha>0\) | 刻画迭代序列的收敛速度 | 不动点迭代通常为线性收敛(\(p=1\)),收敛速度慢于牛顿法 |
| 雅可比矩阵 | \(\boldsymbol{\Phi}'(\boldsymbol{x}) = \left(\frac{\partial \varphi_i}{\partial x_j}\right)_{n \times n}\) | 多变量迭代函数的导数,是局部收敛性的核心分析工具 | 第i行是第i个分量函数的梯度转置,谱半径决定迭代的局部收敛性 |
| 方法优缺点 | 优点:公式简单,易于实现,每步迭代计算量小;缺点:仅线性收敛,收敛速度慢,对迭代函数的构造要求高 | 非线性方程组求解的基础方法,适合低精度求解或作为高精度算法的初始迭代 | 仅适合低维、低精度需求的场景,高维高精度场景需使用牛顿法等更高效的算法 |
非线性方程组的牛顿迭代法 深度讲解与推导证明
各位同学,今天我们讲解非线性方程组求解的核心方法——牛顿迭代法。它是单变量牛顿法在多变量场景的直接推广,凭借二阶收敛的超快速度,成为工程中高精度求解非线性方程组的首选方法,也是后续所有改进型算法的基础。
一、牛顿迭代法的核心思想与迭代公式推导
1.1 核心思想:局部线性化
单变量牛顿法的核心是「以直代曲」,用切线近似非线性函数,将非线性方程转化为线性方程求解;对于n维非线性方程组,我们将这个思想推广到高维空间:
在当前迭代近似解的邻域内,用向量函数的一阶泰勒展开(局部线性近似)代替原非线性向量函数,将非线性方程组转化为线性方程组(牛顿方程)求解,用线性方程组的解作为原方程组解的新近似值,迭代直到收敛。
1.2 迭代公式的严格推导
我们的目标是求解n维非线性方程组:
其中 \(\boldsymbol{F}(\boldsymbol{x}) = \begin{pmatrix} f_1(\boldsymbol{x}) \\ f_2(\boldsymbol{x}) \\ \vdots \\ f_n(\boldsymbol{x}) \end{pmatrix}\) 是n维向量值函数,\(\boldsymbol{x} = \begin{pmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{pmatrix} \in \mathbb{R}^n\) 是n维自变量向量。
步骤1:向量函数的一阶泰勒展开
设第k步迭代的近似解为 \(\boldsymbol{x}^{(k)}\),将 \(\boldsymbol{F}(\boldsymbol{x})\) 在 \(\boldsymbol{x}=\boldsymbol{x}^{(k)}\) 处做一阶泰勒展开。对每个分量函数 \(f_i(\boldsymbol{x})\),多元函数的一阶泰勒展开为:
忽略高阶无穷小项,得到线性近似,将所有分量写成矩阵-向量形式:
其中 \(\boldsymbol{F}'(\boldsymbol{x})\) 是向量函数 \(\boldsymbol{F}(\boldsymbol{x})\) 的雅可比矩阵,定义为:
雅可比矩阵的第i行是第i个分量函数的梯度向量的转置,是单变量导数在多变量场景的直接推广。
步骤2:构造牛顿方程,求解迭代增量
我们的目标是找到 \(\boldsymbol{x}\) 使得 \(\boldsymbol{F}(\boldsymbol{x})=\boldsymbol{0}\),因此令线性近似式等于0,得到关于 \(\boldsymbol{x}\) 的线性方程组:
记迭代增量 \(\Delta \boldsymbol{x}^{(k)} = \boldsymbol{x} - \boldsymbol{x}^{(k)}\),方程可改写为牛顿方程:
步骤3:更新近似解,得到迭代公式
解牛顿方程得到增量 \(\Delta \boldsymbol{x}^{(k)}\),更新得到第k+1步的近似解:
将增量代入,得到牛顿法的标准迭代公式:
1.3 工程实现的核心要点
实际计算中,绝对不会直接计算雅可比矩阵的逆矩阵:
n阶矩阵求逆的计算量为 \(O(n^3)\),与解线性方程组的计算量相当,但数值稳定性更差。工程中均通过高斯消元、LU分解等方法直接求解牛顿方程,得到增量 \(\Delta \boldsymbol{x}^{(k)}\) 后直接更新近似解,完全避免求逆操作。
二、牛顿法的收敛性定理(定理7.9)详细解读
牛顿法的收敛性由以下定理严格保证,我们分条件、分结论完整解读。
定理7.9 完整表述
设 \(\boldsymbol{F}(\boldsymbol{x})\) 的定义域为 \(D \subset \mathbb{R}^n\),\(\boldsymbol{x}^* \in D\) 满足 \(\boldsymbol{F}(\boldsymbol{x}^*)=\boldsymbol{0}\)(即 \(\boldsymbol{x}^*\) 是方程组的真实解),且满足:
- 在 \(\boldsymbol{x}^*\) 的开邻域 \(S_0 \subset D\) 内,\(\boldsymbol{F}'(\boldsymbol{x})\) 存在且连续;
- \(\boldsymbol{F}'(\boldsymbol{x}^*)\) 非奇异(即雅可比矩阵在 \(\boldsymbol{x}^*\) 处可逆,满秩,\(\det(\boldsymbol{F}'(\boldsymbol{x}^*)) \neq 0\))。
则牛顿法生成的迭代序列 \(\{\boldsymbol{x}^{(k)}\}\) 在闭域 \(S \subset S_0\) 上超线性收敛于 \(\boldsymbol{x}^*\)。
若额外满足:存在常数 \(L>0\),使得对任意 \(\boldsymbol{x} \in S\),有
(即雅可比矩阵在 \(\boldsymbol{x}^*\) 的邻域内满足利普希茨连续条件)
则迭代序列 \(\{\boldsymbol{x}^{(k)}\}\) 至少平方收敛(二阶收敛)于 \(\boldsymbol{x}^*\)。
定理核心解读
-
核心前提:\(\boldsymbol{F}'(\boldsymbol{x}^*)\) 非奇异
这个条件对应单变量牛顿法中 \(f'(x^*) \neq 0\) 的要求,是牛顿法收敛的核心保障。它保证了在 \(\boldsymbol{x}^*\) 的邻域内,雅可比矩阵始终可逆,牛顿方程有唯一解,迭代可以正常进行。 -
超线性收敛
满足前两个条件时,牛顿法至少为超线性收敛,收敛速度已经快于不动点迭代的线性收敛。超线性收敛的意义是:迭代误差的下降速度快于线性,每一步的误差比上一步的误差更快趋近于0。 -
平方收敛(二阶收敛)
加上利普希茨条件后,牛顿法达到二阶收敛,这是它最核心的优势。二阶收敛的直观意义是:第k+1步的迭代误差,与第k步误差的平方成正比。
例如:第k步有2位有效数字,第k+1步就有4位,第k+2步就有8位,每迭代一次有效数字位数大约翻倍,收敛速度极快。 -
局部收敛性
和单变量牛顿法一致,非线性方程组的牛顿法是局部收敛的:只有当初始值 \(\boldsymbol{x}^{(0)}\) 足够接近真实解 \(\boldsymbol{x}^*\) 时,迭代才能保证收敛;初始值离解太远时,迭代可能发散。
三、例题详解(例7.15):牛顿法求解二元非线性方程组
我们用和不动点迭代完全相同的例题,直观对比两种方法的收敛速度差异。
例题题干
用牛顿法求解方程组:
步骤1:构造向量函数与雅可比矩阵
首先定义向量函数:
计算每个分量的偏导数,得到雅可比矩阵:
- \(\frac{\partial f_1}{\partial x_1} = 2x_1 - 10\),\(\frac{\partial f_1}{\partial x_2} = 2x_2\)
- \(\frac{\partial f_2}{\partial x_1} = x_2^2 + 1\),\(\frac{\partial f_2}{\partial x_2} = 2x_1x_2 - 10\)
因此雅可比矩阵为:
步骤2:第一次迭代计算(初始值 \(\boldsymbol{x}^{(0)}=(0,0)^T\))
- 计算函数值:\[\boldsymbol{F}(\boldsymbol{x}^{(0)}) = \begin{pmatrix} 0 - 0 + 0 + 8 \\ 0 + 0 - 0 + 8 \end{pmatrix} = \begin{pmatrix} 8 \\ 8 \end{pmatrix}, \quad -\boldsymbol{F}(\boldsymbol{x}^{(0)}) = \begin{pmatrix} -8 \\ -8 \end{pmatrix} \]
- 计算雅可比矩阵:\[\boldsymbol{F}'(\boldsymbol{x}^{(0)}) = \begin{pmatrix} 0 - 10 & 0 \\ 0 + 1 & 0 - 10 \end{pmatrix} = \begin{pmatrix} -10 & 0 \\ 1 & -10 \end{pmatrix} \]
- 解牛顿方程:\[\begin{pmatrix} -10 & 0 \\ 1 & -10 \end{pmatrix} \begin{pmatrix} \Delta x_1^{(0)} \\ \Delta x_2^{(0)} \end{pmatrix} = \begin{pmatrix} -8 \\ -8 \end{pmatrix} \]解得:\(\Delta x_1^{(0)}=0.8\),\(\Delta x_2^{(0)}=0.88\),即 \(\Delta \boldsymbol{x}^{(0)}=(0.8, 0.88)^T\)。
- 更新近似解:\[\boldsymbol{x}^{(1)} = \boldsymbol{x}^{(0)} + \Delta \boldsymbol{x}^{(0)} = (0.8, 0.88)^T \]
步骤3:迭代结果汇总
按照相同流程持续迭代,结果如下表:
| 迭代步数 \(k\) | \(x_1^{(k)}\) | \(x_2^{(k)}\) |
|---|---|---|
| 0 | 0.00 | 0.00 |
| 1 | 0.80 | 0.88 |
| 2 | 0.9917872 | 0.9917117 |
| 3 | 0.9999752 | 0.9999685 |
| 4 | 1.0000000 | 1.0000000 |
收敛速度对比
- 不动点迭代:迭代7步仅得到3位有效数字的近似解;
- 牛顿法:迭代4步就得到了精确到小数点后7位的解,迭代3步就有5位有效数字,完美体现了二阶收敛的压倒性优势。
四、牛顿法的优缺点与工程改进方向
核心优点
- 收敛速度极快:解的邻域内二阶收敛,迭代步数远少于不动点迭代,高精度求解场景下优势极其明显;
- 迭代格式通用:对任意维数的非线性方程组,迭代格式完全统一,仅需修改雅可比矩阵的维度;
- 数值稳定性好:只要初始值合适,迭代过程数值稳定,解的精度可控。
核心缺点
- 局部收敛性:仅当初始值足够接近真实解时才能收敛,初始值选择不当会导致迭代发散;
- 计算量大:每步迭代需要计算n×n雅可比矩阵的n²个偏导数,还要解一个n阶线性方程组,当n很大时(如大规模工程问题),计算成本极高;
- 依赖偏导数计算:需要手动推导每个分量的偏导数,函数形式复杂时难度大、易出错;
- 奇异失效:迭代过程中雅可比矩阵出现奇异(不可逆)时,牛顿方程无解,迭代中断。
工程改进方向
针对牛顿法的缺陷,工程中衍生出多种成熟的改进算法:
- 修正牛顿法:固定前几步的雅可比矩阵,每几步更新一次,牺牲部分收敛速度换取计算效率;
- 拟牛顿法(变尺度法):完全避免计算偏导数,通过迭代过程的函数值信息构造雅可比矩阵的近似矩阵,代表方法有BFGS、DFP等,是大规模非线性方程组求解的主流方法;
- 牛顿下山法:引入下山因子,保证每步迭代满足 \(\|\boldsymbol{F}(\boldsymbol{x}^{(k+1)})\| < \|\boldsymbol{F}(\boldsymbol{x}^{(k)})\|\),大幅扩大收敛域,解决初始值敏感问题;
- 自动微分:通过程序自动计算雅可比矩阵,避免手动推导偏导数,减少出错概率。
五、核心知识点归纳总结表
| 方法名称 | 迭代核心公式 | 收敛阶 | 每步核心计算量 | 核心优点 | 核心缺点 | 适用场景 |
|---|---|---|---|---|---|---|
| 不动点迭代法 | \(\boldsymbol{x}^{(k+1)} = \boldsymbol{\Phi}(\boldsymbol{x}^{(k)})\) | 线性收敛(p=1) | 仅需计算迭代函数的n个分量值 | 公式简单,易于实现,计算量极小,无需计算导数 | 收敛速度慢,迭代步数多,对迭代函数的构造要求高 | 低维、低精度需求的求解,或高精度算法的初始迭代 |
| 牛顿迭代法 | 解牛顿方程 \(\boldsymbol{F}'(\boldsymbol{x}^{(k)})\Delta\boldsymbol{x}^{(k)}=-\boldsymbol{F}(\boldsymbol{x}^{(k)})\),更新 \(\boldsymbol{x}^{(k+1)}=\boldsymbol{x}^{(k)}+\Delta\boldsymbol{x}^{(k)}\) | 局部二阶收敛(p=2) | 1. 计算n个函数值;2. 计算n×n雅可比矩阵;3. 解n阶线性方程组 | 收敛速度极快,迭代步数少,高精度求解优势明显 | 局部收敛,对初始值敏感;计算量大,需要计算偏导数 | 中低维、高精度需求的求解,能提供较好初始值,且可方便计算雅可比矩阵的场景 |
posted on 2026-02-28 08:36 Indian_Mysore 阅读(0) 评论(0) 收藏 举报
浙公网安备 33010602011771号