1.1舍入方式与有效数字
绝对误差
Δ
=
a
−
A
\Delta=a-A
Δ=a−A
这里
a
a
a为近似值,
A
A
A为精确值
绝对误差限
ε
\varepsilon
ε(简称误差限)
ε
>
∣
Δ
∣
=
∣
a
−
A
∣
\varepsilon>|\Delta|=|a-A|
ε>∣Δ∣=∣a−A∣
相对误差 δ = Δ A ≈ Δ a \delta=\frac{\Delta}{A}\approx\frac{\Delta}{a} δ=AΔ≈aΔ
实际上代替后的误差
a
−
A
A
a
Δ
=
1
A
a
Δ
2
\frac{a-A}{Aa}\Delta=\frac{1}{Aa}\Delta^2
Aaa−AΔ=Aa1Δ2
注意我们除的是精确值
A
A
A,但一般
A
A
A不知道,故我们使用近似值
a
a
a
e.g.用最小刻度为毫米的卡尺测出杆的长度为
a
=
312
m
m
a=312mm
a=312mm,问实际长度x范围?
ε
(
a
)
=
0.5
m
m
311.5
m
m
≤
x
(
a
)
≤
312.5
\varepsilon(a)=0.5mm\\ 311.5mm\leq x(a)\leq 312.5
ε(a)=0.5mm311.5mm≤x(a)≤312.5
这里注意下误差限取最小分度值一半(虽然不知道为什么)(问题1)
这里是因为我们读数过程实际上是类似于一个四舍五入,靠着哪边近读那个,所以取最小单位的一半
相对误差限
η
\eta
η
∣
δ
∣
=
∣
Δ
a
∣
<
∣
ε
a
∣
=
η
(上界)
|\delta|=|\frac{\Delta}{a}|<|\frac{\varepsilon}{a}|=\eta(上界)
∣δ∣=∣aΔ∣<∣aε∣=η(上界)
绝对误差有量纲,但是相对误差没有
似乎算出来的结果都是用%表示,而且保留了两个小数(问题2)
实际上应该一般 η \eta η用%或‰表示,且保留两位有效数字(不是两位小数。。。)
舍入方法
- 截断法,即把某一位后的数全部变为0
A = ± a 0 a 1 . . . a m . a m + 1 . . . a m + n ⏟ 高位部分 ∣ a m + n + 1 . . . ⏟ 低位部分 A=\pm\underbrace{ a_0a_1...a_m.a_{m+1}...a_{m+n}}_{高位部分}|\underbrace{a_{m+n+1}...}_{低位部分} A=±高位部分 a0a1...am.am+1...am+n∣低位部分 am+n+1...
低位部分全部被扔去,留下
a 0 a 1 . . . a m . a m + 1 . . . a m + n a_0a_1...a_m.a_{m+1}...a_{m+n} a0a1...am.am+1...am+n
此时我们有
∣ Δ ∣ = ∣ a − A ∣ ≤ 1 × 1 0 − n = ε |\Delta|=|a-A|\leq 1\times 10^{-n}=\varepsilon ∣Δ∣=∣a−A∣≤1×10−n=ε
产生的绝对误差不超过近似数 a a a最末位的一个单位
- 四舍五入法
∣ Δ ∣ = ∣ a − A ∣ ≤ 0.5 × 1 0 − n = ε |\Delta|=|a-A|\leq0.5\times 10^{-n}=\varepsilon ∣Δ∣=∣a−A∣≤0.5×10−n=ε
结论:由准确值经过四舍五入得到的近似值,其绝对误差限等于近似值末位的半个单位
有效数字
定义:
如果近似数 x x x的绝对误差限不超过某一位数字的半个单位,则称** x x x准确到这一位**
从该位数字到左边第一个非零的所有数字称为有效数字
若近似数 x x x的绝对误差限不超过最末一位的半个单位,则称 x x x为有效数
显然我们可以从有效数得到该数字的误差限
截断法和四舍五入得到的有效数字不同
e.g. a = 9.00 a=9.00 a=9.00
若 a a a为截断得到的近似值,则有效数位为2,但若为四舍五入得到的近似值,则为3
故由准确值(这个前提一定不能忘)四舍五入近似得到的数字为有效数,但由截断得到的不是!!!
截断得到近似数的有效数为倒数第二位
有效数(四舍五入法)相对误差限估算
5
第一位非零数字
×
1
0
−
有效数字位数
\frac{5}{第一位非零数字}\times10^{-有效数字位数}
第一位非零数字5×10−有效数字位数
证明:
我们令有效数
A
=
±
a
0
a
1
.
.
.
a
m
.
a
m
+
1
.
.
.
a
m
+
n
A=\pm a_0a_1...a_m.a_{m+1}...a_{m+n}
A=±a0a1...am.am+1...am+n
∣
δ
∣
≤
1
2
×
1
0
−
n
∣
A
∣
≤
1
2
×
1
0
−
n
a
0
×
1
0
m
1
2
a
0
×
1
0
−
(
m
+
n
)
5
a
0
×
1
0
−
(
m
+
n
+
1
)
\begin{aligned} |\delta|&\leq\frac{\frac{1}{2}\times10^{-n}}{|A|}\\ &\leq\frac{\frac{1}{2}\times10^{-n}}{a_0\times10^m}\\ &\frac{1}{2a_0}\times10^{-(m+n)}\\ &\frac{5}{a_0}\times10^{-(m+n+1)} \end{aligned}
∣δ∣≤∣A∣21×10−n≤a0×10m21×10−n2a01×10−(m+n)a05×10−(m+n+1)
有效数字位数越多,对应相对误差越小
浮点数形式表示的有效数
由定点部分定有效数位决定
e.g. x = 15 × 1 0 − 5 x=15\times 10^{-5} x=15×10−5
- 定点部分15有2位有效数字 → x \rightarrow x →x有两位有效数字
- 误差限 ε = 0.5 × 1 0 − 5 \varepsilon=0.5\times10^{-5} ε=0.5×10−5
- 相对误差限 η = 0.5 × 1 0 − 5 15 × 1 0 − 5 = 3.3 % \eta=\frac{0.5\times10^{-5}}{15\times10^{-5}}=3.3\% η=15×10−50.5×10−5=3.3%
近似数的舍入处理:
若已知近似数
x
x
x及其误差限
ε
\varepsilon
ε,求舍入数字
处理方法:
- 首先确定其准确位
- 再四舍五入到准确位
e.g.
x
=
2.45648
x=2.45648
x=2.45648,其误差限
ε
=
0.000789456
\varepsilon=0.000789456
ε=0.000789456
ε
≤
0.5
×
1
0
−
2
\varepsilon\leq0.5\times10^{-2}
ε≤0.5×10−2
x
x
x准确到小数点第二位,舍入处理后
x
=
2.46
x=2.46
x=2.46
但是这里2.46不是有效数,其误差包含了舍入误差和原误差
(如果我们考虑 x = 2.454 x=2.454 x=2.454,舍入后得到的 2.45 2.45 2.45则为有效数字)
有效数字是把近似数四舍五入到有效数,但这里是把精确数四舍五入为有效数,故不是有效数==(问题3)==
多复习下这个点吧,才弄懂这个东西
精确数的舍入处理
已知精确数 A A A和 a a a的误差限要求 ε \varepsilon ε,求 a a a
e.g. 要求 A = 2.45648214 A=2.45648214 A=2.45648214的近似数 a a a的误差限小于 ε = 0.00045 \varepsilon=0.00045 ε=0.00045。请给出 a a a,指出 a a a有几位有效数字
首先将 ε ≥ 0.5 × 1 0 − k \varepsilon\ge0.5\times10^{-k} ε≥0.5×10−k,然后四舍五入到某一位
则 a = 2.4565 a=2.4565 a=2.4565有5位有效数字
1.2算术运算中的误差
1.2.1加减运算
x ∗ , y ∗ x^*,y^* x∗,y∗为准确值, x , y x,y x,y为近似值
误差为 Δ x = x − x ∗ , Δ y = y − y ∗ \Delta x=x-x^*,\Delta y=y-y^* Δx=x−x∗,Δy=y−y∗
误差限为 ∣ x − x ∗ ∣ ≤ ε x , ∣ y − y ∗ ∣ ≤ ε y |x-x^*|\le\varepsilon_x,|y-y^*|\le\varepsilon_y ∣x−x∗∣≤εx,∣y−y∗∣≤εy
C
=
x
±
y
C=x\pm y
C=x±y
δ
C
=
C
−
C
∗
=
(
x
±
y
)
−
(
x
∗
±
y
∗
)
=
Δ
x
±
Δ
y
\begin{aligned} \delta C&=C-C^*\\ &=(x\pm y)-(x^*\pm y^*)\\ &=\Delta x \pm \Delta y \end{aligned}
δC=C−C∗=(x±y)−(x∗±y∗)=Δx±Δy
∣ Δ C ∣ ≤ ∣ Δ x + Δ y ∣ ≤ ∣ Δ x ∣ + ∣ Δ y ∣ ≤ ε x + ε y = ε C |\Delta C|\le|\Delta x+\Delta y|\le|\Delta x|+|\Delta y|\le \varepsilon_x+\varepsilon_y=\varepsilon_C ∣ΔC∣≤∣Δx+Δy∣≤∣Δx∣+∣Δy∣≤εx+εy=εC
即和差运算的误差线等于各个数字误差限之和
e . g . 求有效数 285.35 , 196.87 , 58.43 , 4.96 的和 e.g.求有效数285.35,196.87,58.43,4.96的和 e.g.求有效数285.35,196.87,58.43,4.96的和
和的绝对误差限为 0.5 × 1 0 − 2 × 4 = 0.2 × 1 0 − 1 < 0.5 × 1 0 − 1 0.5\times 10^{-2}\times4=0.2\times10^{-1}<0.5\times 10^{-1} 0.5×10−2×4=0.2×10−1<0.5×10−1
显然它们的和为545.61,舍入处理后为545.6
当数字较为复杂时,其实可以先舍入再计算
由于这里实际上由很多无效数字,舍入考虑最小的有效数字的后一位(这里为7684.388,为3位,其他数字舍入为4位即可)
1.2.2乘积运算
x
∗
,
y
∗
x^*,y^*
x∗,y∗为准确值,
x
,
y
x,y
x,y为近似值,误差为
Δ
x
=
x
−
x
∗
,
Δ
y
=
y
−
y
∗
\Delta x=x-x^*,\Delta y=y-y^*
Δx=x−x∗,Δy=y−y∗,误差限为
∣
x
−
x
∗
∣
≤
ε
x
,
∣
y
−
y
∗
∣
≤
ε
y
|x-x^*|\le\varepsilon_x,|y-y^*|\le\varepsilon_y
∣x−x∗∣≤εx,∣y−y∗∣≤εy,
C
=
x
y
C=x y
C=xy
d
C
=
x
d
y
+
y
d
x
dC=xdy+ydx
dC=xdy+ydx
Δ C ≈ x Δ y + y Δ x \Delta C\approx x\Delta y+y\Delta x ΔC≈xΔy+yΔx
Δ C ≤ ∣ x Δ y ∣ + ∣ y Δ x ∣ ≤ ∣ y ∣ ε x + ∣ x ∣ ε y δ C = Δ C C = δ x + δ y δ C = ∣ δ x + δ y ∣ ≤ ∣ δ x ∣ + ∣ δ y ∣ ≤ η x + η y \Delta C\le |x\Delta y|+|y\Delta x|\le |y|\varepsilon_x+|x|\varepsilon_y\\ \delta_ C=\frac{\Delta C}{C}=\delta_x+\delta_y\\ \delta_C=|\delta_x+\delta_y|\le |\delta_x|+|\delta_y|\le \eta _x+\eta_y ΔC≤∣xΔy∣+∣yΔx∣≤∣y∣εx+∣x∣εyδC=CΔC=δx+δyδC=∣δx+δy∣≤∣δx∣+∣δy∣≤ηx+ηy
故我们有
η
C
=
η
x
+
η
y
\eta_C=\eta_x+\eta_y
ηC=ηx+ηy
乘积运算的相对误差(或相对误差限)为各个乘数的相对误差(或相对误差限)之和
1.2.3商运算
C = x y , Δ C = y Δ x − x Δ y y 2 C=\frac{x}{y},\Delta C=\frac{y\Delta x-x\Delta y}{y^2} C=yx,ΔC=y2yΔx−xΔy
δ C = Δ C c ≤ ∣ Δ x x ∣ + ∣ Δ y y ∣ η C = η x + η y \delta C=\frac{\Delta C}{c}\le|\frac{\Delta x}{x}|+|\frac{\Delta y}{y}|\\ \eta _C=\eta_x+\eta_y δC=cΔC≤∣xΔx∣+∣yΔy∣ηC=ηx+ηy
商运算相对误差限等于除数与被除数相对误差限之和
e . g . 求有效数字 25.7 和 3.6 的商以及商的相对误差限 e.g.求有效数字25.7和3.6的商以及商的相对误差限 e.g.求有效数字25.7和3.6的商以及商的相对误差限
C = 25.7 / 3.6 = 7.13889 C=25.7/3.6=7.13889 C=25.7/3.6=7.13889
η C = 0.05 25.7 + 0.05 3.6 = 1.6 % \eta_C=\frac{0.05}{25.7}+\frac{0.05}{3.6}=1.6\% ηC=25.70.05+3.60.05=1.6%
ε C = η C × C = 0.11 < 0.5 \varepsilon_C=\eta_C \times C=0.11<0.5 εC=ηC×C=0.11<0.5
∴ 25.7 / 3.6 = 7 \therefore25.7/3.6=7 ∴25.7/3.6=7
1.2.4幂运算
c = x p ( p > 0 , p ≠ 1 ) d c = p x p − 1 d x Δ c = p x p − 1 Δ x δ c = Δ c c = p x p − 1 Δ x x p = p Δ x x δ c = p δ x c=x^p(p>0,p\not=1)\\ dc=px^{p-1}dx\\ \Delta c=px^{p-1}\Delta x\\ \delta c=\frac{\Delta c}{c}=\frac{px^{p-1}\Delta x}{x^p}=p\frac{\Delta x}{x}\\ \delta c=p\delta x c=xp(p>0,p=1)dc=pxp−1dxΔc=pxp−1Δxδc=cΔc=xppxp−1Δx=pxΔxδc=pδx
幂运算相对误差(或相对误差限)为底数相对误差限的指数倍
1.2.5数学问题解的误差估计
我们先来考虑数学模型的误差限
对于一个函数 f ( x 1 , x 2 , . . . , x n ) f(x_1,x_2,...,x_n) f(x1,x2,...,xn)
误差限:
∣
Δ
f
(
x
1
,
x
2
,
.
.
.
,
x
n
)
∣
≈
∣
∂
f
∂
x
1
Δ
x
1
+
∂
f
∂
x
2
Δ
x
2
+
.
.
.
+
∂
f
∂
x
n
Δ
x
n
∣
≤
∣
∂
f
∂
x
1
Δ
x
1
∣
+
∣
∂
f
∂
x
2
Δ
x
2
∣
+
.
.
.
+
∣
∂
f
∂
x
n
Δ
x
n
∣
≤
∣
∂
f
∂
x
1
Δ
ε
1
∣
+
∣
∂
f
∂
x
2
Δ
ε
2
∣
+
.
.
.
+
∣
∂
f
∂
x
n
ε
n
∣
=
ε
f
\begin{aligned} |\Delta f(x_1,x_2,...,x_n)|&\approx|\frac{\partial f}{\partial x_1}\Delta x_1+\frac{\partial f}{\partial x_2}\Delta x_2+...+\frac{\partial f}{\partial x_n}\Delta x_n|\\ &\le |\frac{\partial f}{\partial x_1}\Delta x_1|+|\frac{\partial f}{\partial x_2}\Delta x_2|+...+|\frac{\partial f}{\partial x_n}\Delta x_n|\\ &\le |\frac{\partial f}{\partial x_1}\Delta \varepsilon_1|+|\frac{\partial f}{\partial x_2}\Delta \varepsilon_2|+...+|\frac{\partial f}{\partial x_n}\varepsilon_n|\\ &=\varepsilon_f \end{aligned}
∣Δf(x1,x2,...,xn)∣≈∣∂x1∂fΔx1+∂x2∂fΔx2+...+∂xn∂fΔxn∣≤∣∂x1∂fΔx1∣+∣∂x2∂fΔx2∣+...+∣∂xn∂fΔxn∣≤∣∂x1∂fΔε1∣+∣∂x2∂fΔε2∣+...+∣∂xn∂fεn∣=εf
这里我们记录
∂
f
∂
x
i
=
A
i
\frac{\partial f}{\partial x_i}=A_i
∂xi∂f=Ai
相对误差限:
∣
δ
f
(
x
1
,
x
2
,
.
.
.
,
x
n
)
∣
≈
∣
∑
i
=
1
n
∂
f
∂
x
i
x
i
f
Δ
x
i
x
i
∣
=
∑
i
=
1
n
∣
∂
f
∂
x
i
x
i
f
∣
η
i
|\delta f(x_1,x_2,...,x_n)|\approx |\sum_{i=1}^n\frac{\partial f}{\partial x_i}\frac{x_i}{f}\frac{\Delta x_i}{x_i}|=\sum_{i=1}^n|\frac{\partial f}{\partial x_i} \frac{x_i}{f}|\eta_i
∣δf(x1,x2,...,xn)∣≈∣i=1∑n∂xi∂ffxixiΔxi∣=i=1∑n∣∂xi∂ffxi∣ηi
这里我们记录
∂
f
∂
x
i
x
i
f
=
B
i
\frac{\partial f}{\partial x_i} \frac{x_i}{f}=B_i
∂xi∂ffxi=Bi
公式当且仅当 Δ x i \Delta x_i Δxi比较小的时候才能进行, A i , b i A_i,b_i Ai,bi用来衡量解对数据误差的敏感程度
cos那个的保留方式是什么,或者说每次计算怎么考虑保留的有效数位2数(问题1)?
自己多写几个就行
1.3算法举例
不同的算法可能造成不同的误差影响
e . g . 计算 D = 0.0287 × 0.0103 × 0.0101 0.0073 × 0.0125 × 0.0135 e.g. 计算D=\frac{0.0287\times0.0103\times0.0101}{0.0073\times0.0125\times0.0135} e.g.计算D=0.0073×0.0125×0.01350.0287×0.0103×0.0101
算法1:分子分母分别计算后相除(取六位有效数字)
A
=
0.0287
×
0.0103
×
0.0101
=
2.98566
×
1
0
−
6
(
有舍入
)
B
=
0.0073
×
0.0125
×
0.0135
=
1.23188
×
1
0
−
6
(
有舍入
)
D
=
A
B
=
2.42366
η
D
=
∣
0.5
×
1
0
−
5
2.98566
∣
+
∣
0.5
×
1
0
−
5
1.23188
∣
≈
0.0057
%
ε
D
=
η
D
D
=
0.0057
%
×
2.42366
=
1.4
×
1
0
−
5
<
0.5
×
1
0
−
4
A=0.0287\times 0.0103\times0.0101=2.98566\times10^{-6}(有舍入)\\ B=0.0073\times0.0125\times0.0135=1.23188\times10^{-6}(有舍入)\\ D=\frac{A}{B}=2.42366\\ \eta_D=|\frac{0.5\times 10^{-5}}{2.98566}|+|\frac{0.5\times10^{-5}}{1.23188}|\approx 0.0057\%\\ \varepsilon_D=\eta_DD=0.0057\%\times 2.42366=1.4\times10^{-5}<0.5\times10^{-4}
A=0.0287×0.0103×0.0101=2.98566×10−6(有舍入)B=0.0073×0.0125×0.0135=1.23188×10−6(有舍入)D=BA=2.42366ηD=∣2.985660.5×10−5∣+∣1.231880.5×10−5∣≈0.0057%εD=ηDD=0.0057%×2.42366=1.4×10−5<0.5×10−4
故我们最后取
D
=
2.4237
D=2.4237
D=2.4237
算法2:分成三组因子计算
a
=
0.0287
/
0.0073
=
3.93151
(
有舍入
)
b
=
0.0103
/
0.0125
=
0.824
c
=
0.0101
/
0.0135
=
0.748148
(
有舍入
)
D
=
3.93151
×
0.824
×
0.748148
=
2.42367
η
D
=
∣
0.5
×
1
0
−
5
3.93151
∣
+
∣
0.5
×
1
0
−
6
0.748148
∣
≈
0.00019
%
ε
D
=
2.42367
×
0.00019
%
=
0.46
×
1
0
−
5
<
0.5
×
1
0
−
5
a=0.0287/0.0073=3.93151(有舍入)\\ b=0.0103/0.0125=0.824\\ c=0.0101/0.0135=0.748148(有舍入)\\ D=3.93151\times0.824\times0.748148=2.42367\\ \eta_D=|\frac{0.5\times10^{-5}}{3.93151}|+|\frac{0.5\times10^{-6}}{0.748148}|\approx0.00019\%\\ \varepsilon_D=2.42367\times0.00019\%=0.46\times10^{-5}<0.5\times{10^{-5}}\\
a=0.0287/0.0073=3.93151(有舍入)b=0.0103/0.0125=0.824c=0.0101/0.0135=0.748148(有舍入)D=3.93151×0.824×0.748148=2.42367ηD=∣3.931510.5×10−5∣+∣0.7481480.5×10−6∣≈0.00019%εD=2.42367×0.00019%=0.46×10−5<0.5×10−5
最后我们取
D
=
2.42367
D=2.42367
D=2.42367
而实际上真值为 2.423672044... 2.423672044... 2.423672044...,显然算法二更优秀
这里我们需要注意到,b实际上是没有误差的,所以不用舍入处理,同时后面也不用参与相对误差的计算
问问那个地方取6位有效数字是固定的吗?,似乎算出来为精确的就不用保留6位数字(问题二)?
自己多写几个就行
不同算法可能导致结果差异
原因:商运算分母很小时,商的误差就会比较大
一般计算保留位数比要求的多1-3位即可
运算次数越多,显然我们得到的误差就越大,故一般我们希望减少计算步骤
e . g . 计算多项式 e.g. 计算多项式 e.g.计算多项式
P
(
x
)
=
a
n
x
n
+
a
n
−
1
x
n
−
1
+
…
a
1
x
+
a
0
P(x)=a_nx^n+a_{n-1}x^{n-1}+\dots a_1x+a_0
P(x)=anxn+an−1xn−1+…a1x+a0
运算次数:
乘法:
n
+
(
n
−
1
)
+
(
n
−
2
)
+
.
.
.
+
1
=
n
(
n
−
1
)
2
n+(n-1)+(n-2)+...+1=\frac{n(n-1)}{2}
n+(n−1)+(n−2)+...+1=2n(n−1)
若改写为:
P
(
x
)
=
x
(
x
.
.
.
(
x
(
a
n
+
a
n
−
1
)
+
a
n
−
2
)
+
.
.
.
+
a
1
)
+
a
0
P(x)=x(x...(x(a_n+a_{n-1})+a_{n-2})+...+a_1)+a_0
P(x)=x(x...(x(an+an−1)+an−2)+...+a1)+a0
运算次数:
乘法:
n
n
n,加法:
n
n
n
e . g . 解二次方式 x 2 − 100000 x + 1 = 0 e.g.解二次方式x^2-100000x+1=0 e.g.解二次方式x2−100000x+1=0
若按照求根公式且保留八位有效数字
x
1
=
100000
+
10000
0
2
−
4
2
=
100000
+
100000.00
2
=
100000.00
x
2
=
100000
−
10000
0
2
−
4
2
=
100000
−
100000.00
2
=
0
x_1=\frac{100000+\sqrt{100000^2-4}}{2}=\frac{100000+100000.00}{2}=100000.00\\ x_2=\frac{100000-\sqrt{100000^2-4}}{2}=\frac{100000-100000.00}{2}=0
x1=2100000+1000002−4=2100000+100000.00=100000.00x2=2100000−1000002−4=2100000−100000.00=0
显然后面那个
x
=
0
x=0
x=0结果不太好(注意下这里0应该是8位有效数字,只是没写出来)
方法1:增加有效数位,比如增加至11位
x 1 = 99999.999990 , x 2 = 0.000010 x_1=99999.999990,x_2=0.000010 x1=99999.999990,x2=0.000010 (这里 x 2 x_2 x2似乎没有11位数字)(问题三)
然而课上就解决了,只是没写出来,感觉考试肯定不能这么写
方法2:选择求根公式
x
1
=
−
b
−
s
i
g
n
(
b
)
b
2
−
4
a
c
2
a
=
100000.00
韦达定理:
x
2
=
c
a
x
1
=
1
100000.00
=
0.00001
x_1=\frac{-b-sign(b)\sqrt{b^2-4ac}}{2a}=100000.00\\ 韦达定理: x_2=\frac{c}{ax_1}=\frac{1}{100000.00}=0.00001
x1=2a−b−sign(b)b2−4ac=100000.00韦达定理:x2=ax1c=100000.001=0.00001
并且这里
x
1
x_1
x1和
x
2
x_2
x2有相同的相对误差限,相同的有效数字位数(这里
x
2
x_2
x2有效数字没有写完)
其实就相当于 x 2 x_2 x2的相对误差为除数与被除数相对误差之和,但被除数为常数故不考虑
为什么有效数字位数相同呢?(问题四)
注意相对误差限方式
5
第一位非零数字
×
1
0
−
有效数字位数
\frac{5}{第一位非零数字}\times10^{-有效数字位数}
第一位非零数字5×10−有效数字位数
这里两者的第一个有效数字相同,且相对误差限相同,则有效数字相同(再多看看)
两个相近数相减,容易失去有效位,所以我们一般转换公式或者增加字长
e . g . 计算 I n = ∫ 0 1 x n e x − 1 d x , n = 0 , . . . , 7 e.g.计算I_n=\int_0^1x^ne^{x-1}dx,n=0,...,7 e.g.计算In=∫01xnex−1dx,n=0,...,7
算法1:
I n = 1 − n I n − 1 I_n=1-nI_{n-1} In=1−nIn−1
取 I 0 = ∫ 0 1 e x − 1 d x = e x − 1 ∣ 0 1 ≈ 1 − 0.3679 = 0.6321 I_0=\int_0^1e^{x-1}dx=e^{x-1}|_0^1\approx1-0.3679=0.6321 I0=∫01ex−1dx=ex−1∣01≈1−0.3679=0.6321
逐步递推可以得到 I 1 , I 2 , . . . , I 9 I_1,I_2,...,I_9 I1,I2,...,I9
I t I_t It的误差为 t ! Δ t!\Delta t!Δ
算法2:
按照公式
I
n
−
1
=
(
1
−
I
n
)
n
I_{n-1}=\frac{(1-I_n)}{n}
In−1=n(1−In)
KaTeX parse error: Expected group after '_' at position 33: …1}=\mathop{min}_̲\limits{0\le x\…
我们取
I
9
≈
1
2
(
e
−
1
10
+
1
10
)
=
0.0684
I_9\approx \frac{1}{2} (\frac{e^{-1}}{10}+\frac{1}{10})=0.0684
I9≈21(10e−1+101)=0.0684,反向计算得到
I
8
,
I
7
.
.
.
I
0
I_8,I_7...I_0
I8,I7...I0
其中 I t I_t It的误差为 Δ ( 9 − t ) ! \frac{\Delta}{(9-t)!} (9−t)!Δ
显然算法二更为优秀
这里我们称误差不增长的算法为稳定的算法,否则为不稳定的算法
避免大数吃小数,由于可能由于有效数字限制,小数被截断
比如计算机在做加法时,两个加数的指数先向大指数对齐,再将定点部分相加
e . g . 1 0 3 ( 0.8961 ) + 1 0 − 3 ( 0.4688 ) e.g.\,10^3(0.8961)+10^{-3}(0.4688) e.g.103(0.8961)+10−3(0.4688)
对阶后为 1 0 3 ( 0.8961 ) + 1 0 3 ( 0.0000 ) 004688 10^3(0.8961)+10^{3}(0.0000)004688 103(0.8961)+103(0.0000)004688
故后面那个数会被直接截断
所以计算时我们一般先按照绝对值从小到大计算
e . g . y = 1 + 1 2 + . . . + 1 10 e.g.\,y=1+\frac{1}{2}+...+\frac{1}{10} e.g.y=1+21+...+101
从左到右 y = 2.91 y=2.91 y=2.91,从右到左 y = 2.93 y=2.93 y=2.93
真值 2.928968254 2.928968254 2.928968254
1.4数值计算的误差
1.4.1四个误差
模型误差
通过实际问题建立数学模型的时候,为了简化模型我们忽略了一些次要因素,且设立了部分特定条件
定义:实际问题真解和模型真解的误差
观测误差
数学模型中的参数和原始数据,是由观测和试验得到的
由于测量工具的精度、观测方法或客观条件的限制,数据含有测量误差,
这类误差造成的结果的误差叫做观测误差或数据误差
截断误差(方法误差)
用计算机可实现的数值计算方法求解数学模型得到数学模型的近似解,由此产生的误差
-精确公式用近似公式代替时,所产生的误差
-截断误差是数值计算中必须考虑的一类误差
e . g . 无穷级数中我们只取了前面的几项 e.g. 无穷级数中我们只取了前面的几项 e.g.无穷级数中我们只取了前面的几项
舍入误差
计算机的字长有限,参加运算的数据以及运算结果在计算机上存放会产生误差,这种误差称舍入误差
e
.
g
e.g
e.g
π
=
3.1415926...
\pi=3.1415926...
π=3.1415926...
1.4.2误差与不同模型间关系
$$
\begin{aligned}
实际问题的解&\mathop{\leftarrow}^{模型误差}数学模型的精确解\
&\mathop{\leftarrow}^{观测误差}参数模型的精确解\
&\mathop{\leftarrow}^{截断误差}计算模型的精确解\
&\mathop{\leftarrow}^{舍入误差}计算模型的近似解
\end{aligned}
$$
上述舍入分析方法仅对计算量很少的问题适用,大规模计算没有有效方法估计
1.4.3确定数值计算正确性的方式
- 模型问题的定性分析
- 数值计算问题的定性分析
数学问题的适定性定义
设 D D D为 X = ( x 1 , x 2 , . . . x n ) X=(x_1,x_2,...x_n) X=(x1,x2,...xn),的值域,简记数学问题的解 Y Y Y与参量(原始数据) X X X的关系为 Y = f ( X ) Y=f(X) Y=f(X)。若
- 对 X ∈ D X\in D X∈D,数学问题的解存在且唯一
- 满足连续性条件,即当 ∣ ∣ Δ X ∣ ∣ → 0 ||\Delta X||\rightarrow0 ∣∣ΔX∣∣→0,有 ∣ ∣ Δ Y ∣ ∣ → 0 ||\Delta Y||\rightarrow0 ∣∣ΔY∣∣→0成立
则称该数学问题是适定的
反之,若数学问题的解多于一个,或者解不连续依赖于原始数据,则称为不适定的
良态问题和病态问题
针对于数学模型(但似乎也有对于参数模型)
在适定的情况下,若对于原始数据很小的变化,数学模型解的变化也很小,则称该数学问题是良态问题
若原始数据很小的变化,数学模型解的变化很大,则称为病态问题
∣
f
(
x
)
−
f
(
x
∗
)
f
(
x
)
/
Δ
X
x
∣
≈
∣
x
f
′
(
x
)
f
(
x
)
∣
=
C
p
|\frac{f(x)-f(x^*)}{f(x)}/\frac{\Delta X}{x}|\approx |\frac{xf'(x)}{f(x)}|=C_p
∣f(x)f(x)−f(x∗)/xΔX∣≈∣f(x)xf′(x)∣=Cp
C
p
C_p
Cp称为条件数,大则为病态,小则为良态(实际判断标准根据题目不同而不同)
稳定性
运算过程中误差不增长则为稳定的算法,否则不稳定
-
数学问题的性态是针对数学模型的
-
数值稳定性是针对数值方法(计算模型)的
1.5误差分配原理与处理方法
1.5.1误差配置原理
计算模型的近似解相对于参数模型的精确解的总误差 ε = R ( 截断误差 ) + ϵ ( 舍入误差 ) \varepsilon=R(截断误差)+\epsilon(舍入误差) ε=R(截断误差)+ϵ(舍入误差)
1. R < ϵ R<\epsilon R<ϵ
此时总误差取决于舍入误差
多位字长计算可以提高计算精度,同时减小误差
2. R > ϵ R>\epsilon R>ϵ
总误差取决于截断误差,且过多字长无意义,可以增加计算项来增加精度
3. R ≈ ϵ R\approx \epsilon R≈ϵ
这里我们认为恰好合适,对任意一个改进都不能提高精度
故我们认为1,2可以改进,3不太能改进(属于较为理想的情况)
几个例子
1.给定舍入误差 ϵ \epsilon ϵ,确定参与计算的数值字长
对于
u
=
f
(
x
1
,
x
2
,
.
.
.
,
x
n
)
u=f(x_1,x_2,...,x_n)
u=f(x1,x2,...,xn),设
x
i
x_i
xi的舍入误差为
Δ
x
i
\Delta x_i
Δxi,那么舍入误差估算为
d
u
=
∑
i
=
1
n
∣
∂
f
x
i
Δ
x
i
∣
du=\sum_{i=1}^{n}|\frac{\partial f}{x_i}\Delta x_i|
du=i=1∑n∣xi∂fΔxi∣
一般我们认为所有的
Δ
x
i
\Delta x_i
Δxi都相同,记为
Δ
x
\Delta x
Δx,故有
ϵ
=
d
u
=
∑
i
=
1
n
∣
∂
f
x
i
∣
Δ
x
\epsilon=du=\sum_{i=1}^{n}|\frac{\partial f}{x_i}|\Delta x
ϵ=du=i=1∑n∣xi∂f∣Δx
则
Δ
x
=
ϵ
∑
i
=
1
n
∂
f
x
i
\Delta x=\frac{\epsilon}{\sum_{i=1}^n\frac{\partial f}{x_i}}
Δx=∑i=1nxi∂fϵ
然后利用
Δ
x
≥
0.5
×
1
0
−
k
\Delta x\ge0.5\times10^{-k}
Δx≥0.5×10−k
取小数点后
k
k
k位数字即可
这里注意下应该是 ≥ \ge ≥,因为我们需要实际的误差小于 Δ x \Delta x Δx
2.近似数的项数已经确定,但是字长待定
- 估算余式 R n \R_n Rn的大小
- 令 ϵ ≈ R n \epsilon\approx \R_n ϵ≈Rn,按照1的方式估算字长
3.总误差 ε \varepsilon ε给定,要求确认项数和字长
- 我们令 R n = ϵ = ε 2 \R_n=\epsilon=\frac{\varepsilon}{2} Rn=ϵ=2ε
- 利用2的方式进行估算
e . g . 求 ∑ i = 1 ∞ 1 i 5 , 要求总误差 ε = 0.0005 e.g.求\sum_{i=1}^{\infty}\frac{1}{i^5},要求总误差\varepsilon=0.0005 e.g.求∑i=1∞i51,要求总误差ε=0.0005
这里我们 R n = ϵ = ϵ 2 = 0.00025 R_n=\epsilon=\frac{\epsilon}{2}=0.00025 Rn=ϵ=2ϵ=0.00025
截断误差 R n = ∑ i = n + 1 ∞ 1 i 5 ≤ ∫ n ∞ d x x 5 = 1 4 n 2 R_n=\sum_{i=n+1}^\infty \frac{1}{i^5}\le \int_n^\infty \frac{dx}{x^5}=\frac{1}{4n^2} Rn=∑i=n+1∞i51≤∫n∞x5dx=4n21
我们想要 1 4 n 2 < 0.00025 \frac{1}{4n^2}<0.00025 4n21<0.00025,则有 n > 5.6 n>5.6 n>5.6
所以 n = 6 n=6 n=6,我们取前面的5项
5 Δ = 0.00025 → Δ = 0.5 × 1 0 − 4 5\Delta=0.00025\rightarrow\Delta=0.5\times10^{-4} 5Δ=0.00025→Δ=0.5×10−4
所以每一项我们取到4位小数
S 5 = 1 + 0.0313 + 0.0041 + 0.0010 + 0.0003 = 1.0367 S_5=1+0.0313+0.0041+0.0010+0.0003 =1.0367 S5=1+0.0313+0.0041+0.0010+0.0003=1.0367
结合最开始
ε
=
0.5
×
1
0
−
3
\varepsilon=0.5\times10^{-3}
ε=0.5×10−3
S
=
1.037
S=1.037
S=1.037
4.数字字长已经确定,待定求出近似数项数
直接看例子吧我觉得
e
.
g
.
对于
0
≤
x
<
1
,求出
e
x
的
T
a
y
l
o
r
展开的部分和,要求取小数点后面
5
位,试确定应该取到第几项
e.g.对于0\le x<1,求出e^x的Taylor展开的部分和,要求取小数点后面5位,试确定应该取到第几项
e.g.对于0≤x<1,求出ex的Taylor展开的部分和,要求取小数点后面5位,试确定应该取到第几项
R
n
(
x
)
=
e
θ
x
(
n
+
1
)
!
x
n
+
1
≤
3
(
n
+
1
)
!
x
n
+
1
R_n(x)=\frac{e^{\theta x}}{(n+1)!}x^{n+1}\le\frac{3}{(n+1)!}x^{n+1}
Rn(x)=(n+1)!eθxxn+1≤(n+1)!3xn+1
ϵ n = n × ( 0.5 × 1 0 − 5 ) \epsilon_n=n\times(0.5\times10^{-5}) ϵn=n×(0.5×10−5)
我们逐渐增加 n n n使得 R n ( x ) ≈ ϵ n R_n(x)\approx\epsilon_n Rn(x)≈ϵn,经过计算得到这样的 n n n为7
所以我们最后取出前面8项