1.数值计算中的误差

1.1舍入方式与有效数字

绝对误差
Δ = a − A \Delta=a-A Δ=aA
这里 a a a为近似值, A A A为精确值

绝对误差限 ε \varepsilon ε(简称误差限)
ε > ∣ Δ ∣ = ∣ a − A ∣ \varepsilon>|\Delta|=|a-A| ε>∣Δ∣=aA

相对误差 δ = Δ 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 AaaAΔ=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.5mmx(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 ∣Δ∣=aA1×10n=ε

​ 产生的绝对误差不超过近似数 a a a最末位的一个单位

  • 四舍五入法
    ∣ Δ ∣ = ∣ a − A ∣ ≤ 0.5 × 1 0 − n = ε |\Delta|=|a-A|\leq0.5\times 10^{-n}=\varepsilon ∣Δ∣=aA0.5×10n=ε

结论:由准确值经过四舍五入得到的近似值,其绝对误差限等于近似值末位的半个单位

有效数字

定义

如果近似数 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} δA21×10na0×10m21×10n2a01×10(m+n)a05×10(m+n+1)

有效数字位数越多,对应相对误差越小

浮点数形式表示的有效数

定点部分定有效数位决定

e.g. x = 15 × 1 0 − 5 x=15\times 10^{-5} x=15×105

  • 定点部分15有2位有效数字 → x \rightarrow x x有两位有效数字
  • 误差限 ε = 0.5 × 1 0 − 5 \varepsilon=0.5\times10^{-5} ε=0.5×105
  • 相对误差限 η = 0.5 × 1 0 − 5 15 × 1 0 − 5 = 3.3 % \eta=\frac{0.5\times10^{-5}}{15\times10^{-5}}=3.3\% η=15×1050.5×105=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×102
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×10k,然后四舍五入到某一位

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=xx,Δy=yy

误差限为 ∣ x − x ∗ ∣ ≤ ε x , ∣ y − y ∗ ∣ ≤ ε y |x-x^*|\le\varepsilon_x,|y-y^*|\le\varepsilon_y xxεx,yyε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=CC=(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.35196.8758.434.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×102×4=0.2×101<0.5×101

显然它们的和为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=xx,Δy=yy,误差限为 ∣ x − x ∗ ∣ ≤ ε x , ∣ y − y ∗ ∣ ≤ ε y |x-x^*|\le\varepsilon_x,|y-y^*|\le\varepsilon_y xxεx,yyε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 ΔCxΔ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 ΔCxΔy+yΔxyε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ΔxxΔ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ΔCxΔx+yΔyηC=ηx+ηy

商运算相对误差限等于除数与被除数相对误差限之和

e . g . 求有效数字 25.7 和 3.6 的商以及商的相对误差限 e.g.求有效数字25.7和3.6的商以及商的相对误差限 e.g.求有效数字25.73.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=pxp1dxΔc=pxp1Δxδc=cΔc=xppxp1Δ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)x1fΔx1+x2fΔx2+...+xnfΔxnx1fΔx1+x2fΔx2+...+xnfΔxnx1fΔε1+x2fΔε2+...+xnfεn=εf
这里我们记录 ∂ f ∂ x i = A i \frac{\partial f}{\partial x_i}=A_i xif=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=1nxiffxixiΔxi=i=1nxiffxiηi
这里我们记录 ∂ f ∂ x i x i f = B i \frac{\partial f}{\partial x_i} \frac{x_i}{f}=B_i xiffxi=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×106(有舍入)B=0.0073×0.0125×0.0135=1.23188×106(有舍入)D=BA=2.42366ηD=2.985660.5×105+1.231880.5×1050.0057%εD=ηDD=0.0057%×2.42366=1.4×105<0.5×104
故我们最后取 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×105+0.7481480.5×1060.00019%εD=2.42367×0.00019%=0.46×105<0.5×105
最后我们取 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+an1xn1+a1x+a0
运算次数:
乘法: n + ( n − 1 ) + ( n − 2 ) + . . . + 1 = n ( n − 1 ) 2 n+(n-1)+(n-2)+...+1=\frac{n(n-1)}{2} n+(n1)+(n2)+...+1=2n(n1)

若改写为:
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+an1)+an2)+...+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.解二次方式x2100000x+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+10000024 =2100000+100000.00=100000.00x2=210000010000024 =2100000100000.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=2absign(b)b24ac =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=01xnex1dx,n=0,...,7

算法1:

I n = 1 − n I n − 1 I_n=1-nI_{n-1} In=1nIn1

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=01ex1dx=ex10110.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} In1=n(1In)
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 I921(10e1+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)!} (9t)!Δ

显然算法二更为优秀

这里我们称误差不增长的算法为稳定的算法,否则为不稳定的算法

避免大数吃小数,由于可能由于有效数字限制,小数被截断

比如计算机在做加法时,两个加数的指数先向大指数对齐,再将定点部分相加

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)+103(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)。若

  1. X ∈ D X\in D XD,数学问题的解存在且唯一
  2. 满足连续性条件,即当 ∣ ∣ Δ 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ΔXf(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=1nxifΔ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=1nxif∣Δx

Δ x = ϵ ∑ i = 1 n ∂ f x i \Delta x=\frac{\epsilon}{\sum_{i=1}^n\frac{\partial f}{x_i}} Δx=i=1nxifϵ
然后利用
Δ x ≥ 0.5 × 1 0 − k \Delta x\ge0.5\times10^{-k} Δx0.5×10k
小数点后 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=1i51,要求总误差ε=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+1i51nx5dx=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} =0.00025Δ=0.5×104

所以每一项我们取到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×103
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.对于0x<1,求出exTaylor展开的部分和,要求取小数点后面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×105)

我们逐渐增加 n n n使得 R n ( x ) ≈ ϵ n R_n(x)\approx\epsilon_n Rn(x)ϵn,经过计算得到这样的 n n n为7

所以我们最后取出前面8项

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值