切换科目
重点科目
主要科目
次要科目
科数网
首页
刷题
学习
VIP会员
赞助
组卷
集合
教材
VIP
写作
游客,
登录
注册
在线学习
数值分析
序言
最后
更新:
2026-06-12 18:56
查看:
3
次
纠错
评论(0)
课件
开VIP
序言
## 概述 > 数值分析,就是研究怎么使用计算机来接近数学问题。比如当我们在计算器上输入 $\sqrt{2}$,计算机立刻给你他的值为$1.414$, 但是后者这个结果不是机器自动产生的,需要人工编写程序计算,数值分析就是通过理论研究数据的计算方法。 数值分析又常被称为数值计算或计算方法,是研究适合于在计算机上使用的实际可行、理论可靠、计算复杂性好的求解方法.数值分析作为计算数学的一门重要课程,既具有数学科学的抽象性、严密性,又具有广泛的实践性、应用性,在科学研究、工程、经济等许多领域都有广泛的用途. 数值分析是计算数学专业的一门基础课程,研究用计算机求解数学问题的数值计算方法及其软件实现。数值计算效能与计算工具发展密切相关、相辅相成:一方面,虽然一些数值计算方法或概念很早就被提出,但是直到计算机出现以后,数值计算才迅速发展并成为数学科学中一个重要的分支;另一方面,计算方法的进步促进了计算能力的大幅度提高,也促进了计算机软硬件技术的发展。此外,随着计算机、计算技术的发展及其在各科学技术领域的应用与深化,新的计算学科分支,如计算力学、计算物理、计算化学、计算经济学等不断出现,经典的数值方法不断被评价、筛选、改造和创新,涌现出许多新概念、新课题和新方法,这就构成了包含丰富内容的现代数值分析,促进了数值计算的飞速发展.因此,数值分析是各种计算性学科的联系纽带和基础,它成为理工类各专业进行科学计算的一门基础性课程,也是一门让学生能顺利使用计算机进行数值模拟和仿真的基础课程。 通常来说数值方法和求解对象有关,也和计算机软硬件系统有关。它具有如下特点:第一,算法需要面向计算机.由于传统计算机的计算部件是"加法器",所以无论面对多么复杂的问题,算法都需要细分成计算机可执行的加、减、乘、除四则运算和各种逻辑运算.第二,算法需要可靠的理论保证.数值分析中的算法理论主要是基于连续系统的离散化及离散系统的数值求解.这些数值方法通常采取迭代法、近似法,它们在计算过程中不可避免地会产生误差,所以"稳定、收敛快"成为刻画计算效率的重要方面,需要仔细分析.第三,算法要有良好的复杂性及可数值验证.计算复杂性包括时间复杂性和空间复杂性,它是算法好坏的标志。"稳定、收敛快"的数值方法还需要满足计算复杂性小这一特点。一些复杂算法由于难以获得其计算复杂性的先验信息,因此通过数值试验来检验其计算复杂性成为一个重要途径. 值得说明的是:虽然数值分析只需具备微积分、线性代数、常微分方程、编程基础即可,但是数值分析是一门理论与实践紧密结合的课程,需要特别注重实践环节,这与纯理论学科的学习方法有所不同. 学习过程不仅需要了解一般的理论知识,理解各种方法的基本原理、构造方法、误差分析理论,还需要亲自进行程序设计,多动手编写程序, 注意与实际问题相联系 ## 数值计算的一些基本原则 **1.避免绝对值小的数作除数** 这一原则主要指尽量避免除数绝对值远远小于被除数绝对值的除法.误差分析如下: 设 $z=\frac{y}{x}(x \neq 0)$ ,如果 $x$ 的绝对值远小于 $y$ 的绝对值,由于 $$ \varepsilon\left(\frac{y}{x}\right) \approx \frac{|x| \varepsilon(y)+|y| \varepsilon(x)}{|x|^2}=\frac{\varepsilon(y)}{|x|}+\frac{|y|}{|x|^2} e(x), $$ 这表明当 $x$ 的绝对值很小时,用 $y$ 除以 $x$ 所得结果的绝对误差可能很大. **2.避免两个相近的数据相减** 如果 $y \approx x$ ,现分析两个数的近似数作减法所得结果的误差.设 $z=y-x$ ,则利用误差估计 $$ \varepsilon(z)=\varepsilon(y)+\varepsilon(x), $$ 得相对误差估计 $$ \left.\varepsilon_r(z) \leqslant \frac{|y|}{|z|} \varepsilon_r(y) \right\rvert\,+\frac{|x|}{|z|} \varepsilon_r(x) . $$ 当 $y \approx x$ 时,有 $z \approx 0$ ,计算结果的相对误差限可能很大,导致数值计算结果的有效数字位数减少。 为了避免两相近的数据直接作减法运算,具体处理方案随数学表达式的不同而不同。常用一些恒等式来将其变形,如当 $x$ 为充分大正数时 $$ \sqrt{x+1}-\sqrt{x}=1 /(\sqrt{x+1}+\sqrt{x}) . $$ **3.要防止大数"吃掉"小数** 由于计算机对数的表示位数是有限的,当一个绝对值很大的数和一个绝对值很小的数直接相加时,很可能发生所谓"大数吃小数"的现象,从而影响计算结果的可靠性。 例如,$a=10^{13}, b=4$ ,设想这两个数在具有 12 位浮点数计算机系统( 12 位有效位数系)中相加,在机器数系统中相加的原则是先对阶,后相加.对阶时 $$ a+b=10^{13}+4=1.00000000000 \times 10^{13}+0.0000000000004 \times 10^{13} . $$ 由于系统只保留前 12 位作为有效数,方框中数据被舍去,实际加法操作如下: $$ 1.00000000000 \times 10^{13}+0.00000000000 \times 10^{13} . $$ 最后 $a+b$ 计算结果是 $a$ 的值作为计算结果赋给 $a+b$ .这显然是很不合理的. **4.尽量减少计算工作量** 在考虑算法时应注意简化计算步骤,减少运算次数.计算机执行一个算法所花费的时间代价除了与问题的规模大小有关外,主要依赖于计算过程中所用乘除法次数的多少,也就是计算工作量的大小.计算工作量小的算法不仅节约运行时间,而且误差积累小。 `例` 设计算法用于计算多项式 $$ P_n(x)=a_0+a_1 x+a_2 x^2+\cdots+a_n x^n $$ 的值.并分析算法的计算工作量. 解 先考虑直接相加的累加算法,从低次项开始逐项累加. $$ \begin{aligned} & S_0=a_0, \\ & S_k=S_{k-1}+a_k x^k \quad(k=1,2, \cdots, n), \\ & P_n(x)=S_n . \end{aligned} $$ 在设计算法时,为了节约计算量引入一个工作变量 $u$ 用以保存自变量的方幂 $x^k(k= 1,2, \cdots, n)$ 。算法框图见图1.3.计算一个 $n$ 次多项式需要用 $2 n$ 次乘法. 另一种典型算法是秦九韶算法.下面以 4 次多项式为例来说明.将多项式写成 $$ P_4(x)=a_0+a_1 x+a_2 x^2+a_3 x^3+a_4 x^4=a_0+x\left(a_1+x\left(a_2+x\left(a_3+x a_4\right)\right)\right) . $$ 计算时规定内层括号优先,即最先计算 $a_3+x a_4$ 的值.对 $n$ 次多项式,算法如下: $$ \begin{aligned} & S_n=a_n \\ & S_{k-1}=a_{k-1}+x S_k, \quad k=n, n-1, \cdots, 1 \\ & P_n(x)=S_0 \end{aligned} $$ 算法框图见图 1.4.计算一个 $n$ 次多项式只需要用 $n$ 次乘法.显然,秦九韶算法优于累加算法.  **5.选用数值稳定性好的算法** 对同一个数学问题,即使在数学公式已经确定的情况下,仍然可以设计出不同的算法。而不同的算法在执行过程中对数据误差的影响是不一样的,舍入误差对计算结果影响不大的算法被称为数值稳定的算法,否则称为不稳定的算法.分析一个算法在计算过程中是否稳定,实际上是考察误差是否增长. 例1.5 利用递推式计算定积分 $I_n=\mathrm{e}^{-1} \int_0^1 x^n \mathrm{e}^x \mathrm{~d} x, n=0,1,2, \cdots, 20$ 的值。 解 由分部积分法 $$ I_n=\mathrm{e}^{-1}\left(\left.x^n \mathrm{e}^x\right|_0 ^1-n \int_0^1 x^{n-1} \mathrm{e}^x \mathrm{~d} x\right)=1-n I_{n-1} $$ 而 $$ I_0=\mathrm{e}^{-1} \int_0^1 \mathrm{e}^x \mathrm{~d} x=\mathrm{e}^{-1}(\mathrm{e}-1)=1-\mathrm{e}^{-1} $$ 得带初值的递推关系式 $$ \left\{\begin{array}{l} I_0=1-\mathrm{e}^{-1} \\ I_n=1-n I_{n-1}, \quad n=1,2, \cdots \end{array}\right. $$ 对于初值的计算,会出现误差.取十进制 14 位有效数字进行计算,得 $$ I_0=1-\mathrm{e}^{-1} \approx 0.63212055882856 $$ 利用递推式可得 20 个数据见表1.2. 表 1.2 从低阶到高阶的积分迭代计算  表1.2中 $S_1, \cdots, S_{20}$ 是积分值 $I_1, \cdots, I_{20}$ 的递推计算值.由于积分值 $$ \int_0^1 x^n \mathrm{e}^x \mathrm{~d} x \geqslant\left(\min _{0 \leqslant x \leqslant 1} \mathrm{e}^x\right) \int_0^1 x^n \mathrm{~d} x=\frac{1}{n+1}, \quad \int_0^1 x^n \mathrm{e}^x \mathrm{~d} x \leqslant\left(\max _{0 \leqslant x \leqslant 1} \mathrm{e}^x\right) \int_0^1 x^n \mathrm{~d} x=\frac{\mathrm{e}}{n+1}, $$ 所以,对任意正整数 $n$ ,有估计式 $$ \frac{\mathrm{e}^{-1}}{n+1} \leqslant \mathrm{e}^{-1} \int_0^1 x^n \mathrm{e}^x \mathrm{~d} x \leqslant \frac{1}{n+1} $$ 成立.但是表1.2中显示出有两个负数:$S_{18}$ 和 $S_{20}$ ,这说明 $\left|e\left(S_{18}\right)\right|$ 和 $\left|e\left(S_{20}\right)\right|$ 很大.导致这样计算结果的直接原因是初始数据的误差在计算过程中不断增大.下面分析一下原因. 由于初值 $S_0=0.63212055882856$ 具有 14 位有效数字,所以 $$ \varepsilon\left(S_0\right)=5 \times 10^{-15} $$ 将 $S_n=1-n S_{n-1}$ 和 $I_n=1-n I_{n-1}$ 两式相减,得 $$ S_n-I_n=-n\left(S_{n-1}-I_{n-1}\right) \text { 或者 } e\left(S_n\right)=-n \times e\left(S_{n-1}\right) \text {. } $$ 由此递推,即得 $$ E\left(S_n\right)=(-1)^n(n!) e\left(S_0\right) . $$ 从上式可以看出,尽管初始值的绝对误差限非常小,但是随着递推过程进行,阶乘数迅速增大,使得误差在计算过程中扩散,这是不稳定的算法. 考虑另一种算法,由递推公式 $I_n=1-n I_{n-1}$ 解得 $I_{n-1}=\frac{1}{n}\left(1-I_n\right)$ ,这是逆向递推公式,由 $I_n$ 的估计式 $$ \frac{\mathrm{e}^{-1}}{n+1} \leqslant I_n \leqslant \frac{1}{n+1}, $$ 取 $I_{30} \approx S_{30}=\frac{1}{31}, \varepsilon\left(S_{30}\right)=\left(1-\mathrm{e}^{-1}\right) / 31 \approx 0.0204$ ,利用递推公式 $$ S_{n-1}=\frac{1}{n}\left(1-S_n\right), \quad n=30,29,28, \cdots, 2, $$ 计算出 $S_{29}, S_{28}, \cdots, S_1$ ,并选取前 20 个数据,如表1.3所示.  表 1.3 的数据变化表明实数序列 $\left\{S_n\right\}$ 随 $n$ 的增加单调下降趋于零,这与积分值数列 $\left\{I_n\right\}$ 的变化规律相吻合。 虽然初始数据 $S_{30}$ 带有明显误差,分析误差传播规律 $$ e\left(S_{n-1}\right)=I_{n-1}-S_{n-1}=\frac{1}{n}\left(1-I_n\right)-\frac{1}{n}\left(1-S_n\right)=-\frac{1}{n} e\left(S_n\right), $$ 可知 $$ \left|e\left(S_{n-1}\right)\right|=\frac{1}{n \times(n+1) \times \cdots \times 29 \times 30}\left|e\left(S_{30}\right)\right|, \quad n=29,28, \cdots, 2 . $$ 由于递推使误差绝对值逐次减小,所以这是一种数值稳定的算法. 比较前面两种不同的算法可知,在数学上是完全等价的两种递推公式,由于运算次序的不同,可能会出现完全不同的情况.
科数题库(单机版)
会议室预约系统(book)
今日还可看
0
篇 未注册用户每天查看4篇,
注册
用户每天8篇,
开通VIP
会员无限制查看。
免费注册
《高等数学》难点解析
高数教程
泰勒公式
切线与法线
切平面与法平面
驻点·拐点·极值点·零点
间断点
渐进线
瑕积分
欧拉方程
伯努利方程
Abel 收敛定理
偏导数的几何意义
偏导数的几何意义
梯度
数量场与向量场
多元函数极值
拉格朗日算子
通量与散度
环流量与旋度
格林公式
高斯公式
斯托克斯公式
三大公式比较
傅里叶级数
极坐标微元
点法式方程
变上限定积分
X型计算面积
Y型计算面积
微分的意义
渐近线
间断点
y''+py'+qy=f(x)方程
高斯
黎曼
傅里叶变换(复数)
拉普拉斯变换(复数)
《线性代数》难点解析
线代教程
近世代数对数学的整体思考
线性的意义
矩阵乘法(列视角)
矩阵乘法(行视角)
矩阵左乘
矩阵右乘
逆矩阵求解方程组
阶梯形矩阵的求法
方程组解的判定
四阶行列式的计算
线性变换的意义
线性空间
向量组的等价
线性空间的几何意义
基础解系的求法
施密特正交化
特征值与特征向量的意义
矩阵相似的几何意义
矩阵可对角化的理解
秩的意义(向量版)
秩的意义(方程版)
二次型的意义
《概率论与数理统计》难点解析
概率教程
置信区间与上a分位数
概率中的“取”与“放”
贝叶斯公式
全概率公式
泊松分布
指数分布
伽玛分布
二维密度图的意义
卷积的意义
相关系数的意义
k阶矩是与矩母函数
卡方分布的作用
单正态区间估计理解
假设检验理解
切比雪夫不等式
中心极限定理
上一篇:
没有了
下一篇:
第一篇 非线性方程的数值解法
本文对您是否有用?
有用
(
0
)
无用
(
0
)
赞助:
知乎 Mathhub
启明星
商务合作
赞助本站
科数网
是专业的数学网站,为您提供题库与教程 版权所有 禁止镜像
部分内容采用AI辅助生成,请注意识别
如果页面无法显示请联系 18155261033 或 983506039@qq.com