北航数值分析大作业三:牛顿法与分片二次插值应用

需积分: 10 40 下载量 97 浏览量 更新于2024-07-20 3 收藏 294KB DOCX 举报
本篇文档是关于北京大学航空学院的一份数值分析大作业题目,主要涉及非线性方程组的求解方法以及分片二次插值的运用。作业主题是关于数值分析中的一个典型问题——利用牛顿法解决非线性方程组。 首先,作业的核心是牛顿法的算法设计。牛顿法是一种迭代方法,用于寻找非线性方程组的根。该方法从给定的初始估计值(通常称为初值)开始,通过构造并求解一个线性化问题来逐步逼近真实解。具体步骤如下: 1. 选择一个初始值 `x0` 和 `y0`,并设定一个预设的精度 `Eps1`(本例中为1.0e-12)作为终止标准。 2. 计算函数和其导数 `f(x, y)` 及其雅克比矩阵(即函数梯度和Hessian矩阵)在 `(x0, y0)` 处的值。 3. 使用Doolittle分解法求解由雅克比矩阵构成的线性方程组,这一步确保了下一个迭代点的更新方向。 4. 如果新解满足精度要求(即 `|f(x, y)| < Eps1`),则停止迭代;否则,继续进行下一轮迭代。 分片二次插值部分则是用来构建一个数值表,将非线性方程组的解应用到一个二维区域内的插值函数中。选择插值节点时,遵循一定的规则,例如当 `x` 或 `y` 接近边界时,选择1或4作为插值点。利用Lagrange插值公式,根据这些节点计算出插值多项式,然后将函数值代入,形成数表。 接下来,作业要求拟合一个曲面,为此构建了系数矩阵。这个过程可能涉及到计算曲面拟合多项式的系数,通过逐次增加 `k` 的值,直到达到所需的精度。这里的 `k` 可能与插值节点的增加有关,每个 `k` 值对应着曲面的一个局部逼近。 最后,作业通过实际操作来评估逼近效果。这包括: - 解非线性方程组得到函数值 `z`, - 用分片二次插值得到插值函数的值, - 比较两者,即 `z` 与插值函数的值,以判断数值分析方法的逼近效果是否满意。 整个过程涉及的编程实现部分包括使用 C++ 编程语言编写函数,如 `IteNewton`、`vNorminf`、`Doolittle`、`Interp2` 等,以及矩阵运算函数如矩阵求逆、转置和乘法。`main` 函数整合了这些步骤,并处理输入数据和输出结果。 这份大作业涵盖了数值分析中的核心概念,包括非线性方程组求解、插值方法和矩阵运算,旨在锻炼学生在实际问题中的理论理解和编程能力。