数值分析思考题参考解答——第一章
1.算法这一概念,数学上是如何描述的?
在数学中,算法通常是按照一定 规则解决某一类问题的明确和有限的步骤。
2.数值分析中计算误差有哪些?举列说明截断误差来源。
计算误差有截断误差和舍入误差。由实际问题建立起来的数学模型,在很多情况下要得到准确解是困难的,通常要用数值方法求出它的近似解。例如常用有限过程逼近无限过程,用能计算的问题代替不能计算的问题。这种数学模型的精确解与由数值方法求出的近似解之间的误差称为截断误差,由于截断误差是数值方法固有的,故又称为方法误差。
例如:
用函数f(x)的泰勒(Taylor)展开式的部分和Sn(x)去近似代替f(x),其余项Rn,就是真值f(x)的截断误差:
sin
x
=
x
−
1
3
!
x
3
+
cos
ξ
5
!
x
5
≈
x
−
1
3
!
x
3
,
当
∣
x
∣
比较小时
\sin x=x-\frac{1}{3 !} x^{3}+\frac{\cos \xi}{5 !} x^{5} \approx x-\frac{1}{3 !} x^{3} \quad, \quad \text { 当 }|x| \text { 比较小时 }
sinx=x−3!1x3+5!cosξx5≈x−3!1x3, 当 ∣x∣ 比较小时
3.浮点数由哪两部分组成?指出各部分重点。
浮点数由尾数部和阶码部两部分组成。在机器中表示一个浮点数时,一是要给出尾数,用定点小数形式表示。尾数部分给出有效数字的位数,因而决定了浮点数的表示精度。二是要给出指数,用整数形式表示,常称为阶码,阶码指明小数点在数据中的位置,因而决定了浮点数的表示范围。浮点数也要有符号位。
4.有效数字的概念是如何抽象而来的,简单给予叙述。
有效数字位数与计算近似值x的误差这两个概念是通过末位数半个单位相联系的。由于计算机的机器数只能表示有限位浮点数,对于很多数据只能近似表示,近似采用“四舍五入”的原则进行。有效数字概念正是根据日常生活中的“四舍五入”原则抽象而来的。若近似值 x 的绝对误差限是某一位上半个单位,该位到 x 的第一位非零数字一共有 n 位,则称这一近似数具有 n 位有效数字。
5.何谓秦九韶算法,秦九韶算法有何优点?
秦九韶算法是中国南宋时期的数学家秦九韶提出的一种多项式简化算法,在西方被称作霍纳算法。
设给定n次多项式:
p
(
x
)
=
a
0
x
n
+
a
1
x
n
−
1
+
⋯
+
a
n
−
1
x
+
a
n
,
a
0
≠
0
p(x)=a_{0} x^{n}+a_{1} x^{n-1}+\cdots+a_{n-1} x+a_{n}, a_{0} \neq 0
p(x)=a0xn+a1xn−1+⋯+an−1x+an,a0=0
求
x
⋆
x^{\star}
x⋆处的值
p
(
x
⋆
)
\mathrm{p}\left(x^{\star}\right)
p(x⋆)
采用
p
(
x
)
=
(
⋯
(
a
0
x
+
a
1
)
x
+
⋯
+
a
n
−
1
)
x
+
a
n
\mathrm{p}(\mathrm{x})=\left(\cdots\left(a_{0} x+a_{1}\right) x+\cdots+a_{n-1}\right) x+a_{n}
p(x)=(⋯(a0x+a1)x+⋯+an−1)x+an
它可表示为:
{
b
0
=
a
0
b
i
=
b
i
−
1
x
⋆
+
a
i
i
=
1
,
2
,
3
…
n
\left\{\frac{b_{0}=a_{0}}{b_{i}=b_{i-1} x^{\star}+a_{i} \quad i=1,2,3 \ldots n}\right.
{bi=bi−1x⋆+aii=1,2,3…nb0=a0
则 b n = p ( x ⋆ ) b_{n}=p\left(x^{\star}\right) bn=p(x⋆),即为所求,此算法成为秦九韶算法。
秦九韶算法有何优点
该算法最大的优点在于将求n次多项式的值转化为求n个一次多项式的值。在人工计算时,利用秦九韶算法和其中的系数表可以大幅简化运算;对于计算机程序算法而言,加法比乘法的计算效率要高很多,因此该算法仍有极大的意义,用于减少CPU运算时间。
6.在数值计算中,会发生大数吃小数现象,试对这一现象做解释
“大数吃小数”现象是数值运算中常见的一种影响计算精度的现象,当以计算机计算一个实数a与实数b≠0的代数和时,如果|b|相对于|a|小到一定程度,会出现a+b=a的现象,一般称作数b被数a“吃掉”了。
“大数吃小数”现象一个典型的例子就是计算N个实数的累加和
∑
n
=
1
N
a
n
\sum_{n=1}^{N} a_{n}
∑n=1Nan,其中
a
1
≫
a
i
>
0
,
i
=
2
,
3
…
,
N
a_{1} \gg a_{i}>0, i=2,3 \ldots, N
a1≫ai>0,i=2,3…,N,若以正常的顺序累加,则自
a
2
a_{2}
a2之后所有元素均被
a
1
a_{1}
a1 “吃掉”,累加结果为
∑
n
=
1
N
a
n
=
a
1
\sum_{n=1}^{N} a_{n}=a_{1}
∑n=1Nan=a1,其误差为
∑
n
=
2
N
a
n
\sum_{n=2}^{N} a_{n}
∑n=2Nan,如果N取值很大,那么
∑
n
=
2
N
a
n
\sum_{n=2}^{N} a_{n}
∑n=2Nan很可能是个较大的数,这样数值计算就会有一个较大的误差。