数值计算方法第一章—数值计算引论
數值計算引論
本文參考書為馬東升著《數值計算方法》
誤差的來源
-
觀測誤差(測量誤差)
觀測或實驗所得到的參數與真值的誤差
-
模型誤差(描述誤差)
建立的數學模型與實際事物的差距。如自由落體的數學模型 s=12gt2s=\dfrac 12gt^2s=21?gt2 忽略了空氣阻力
-
截斷誤差(方法誤差)
許多數學運算是通過極限過程來定義的,而計算機只能完成有限次運算。故實際應用需要將解題方案加工成有限序列,即表現為無窮過程的截斷
例:數學模型是無窮級數
∑k=0+∞1k!f(k)(x0)\sum_{k=0}^{+\infty}\frac 1{k!}f^{(k)}(x_0) k=0∑+∞?k!1?f(k)(x0?)
實際計算中,只能截取前面的有限項
∑k=0n?11k!f(k)(x0)\sum_{k=0}^{n-1}\frac 1{k!}f^{(k)}(x_0) k=0∑n?1?k!1?f(k)(x0?)
即舍去無窮級數后半段,產生了截斷誤差
-
舍入誤差(計算誤差)
因為受計算機字長限制,參與運算的數據總是只能具有有限位,原始數據表示可能產生誤差,每一次運算又可能產生新的誤差
例:圓周率只能存儲有限位,如 π\piπ 存儲為四位小數 3.14163.14163.1416 ,則
3.1416?π=0.0000073?3.1416-\pi=0.0000073\cdots 3.1416?π=0.0000073?
即為舍入誤差
近似數的誤差表示
-
絕對誤差
設 x?x^*x? 為準確值 xxx 的一個近似值,稱
e(x?)=x?xxe(x^*)=x-x^x e(x?)=x?xx
是近似值 xxx 的絕對誤差。簡記為 e?e^*e?因為準確值往往不知道,故定義:若
∣e?∣=∣x?x?∣≤ε(x?)|e^*|=|x-x^*|\le \varepsilon(x^*) ∣e?∣=∣x?x?∣≤ε(x?)
則稱 ε(x?)\varepsilon(x^*)ε(x?) 為絕對誤差限。簡記為 ε?\varepsilon^*ε?例:
四舍五入誤差限
∣x?x?∣≤12×10m?n|x-x^*|\le \dfrac 12 \times 10^{m-n} ∣x?x?∣≤21?×10m?n
即四舍五入得到的近似數的誤差限是末位的半個單位例: 圓周率四舍五入近似數3.1416,求其誤差限
解:
- 法1,誤差限是末位的半個單位
ε?=12×10?4\varepsilon ^*=\dfrac 12\times 10^{-4} ε?=21?×10?4
- 法2(主要方法)
ε?=12×10m?n,m=1,n=5\varepsilon^*=\dfrac 12\times10^{m-n}\ ,\ m=1\ ,\ n=5 ε?=21?×10m?n?,?m=1?,?n=5
故
m?n=?4,ε?=12×10?4m-n=-4\ ,\ \varepsilon ^*=\dfrac 12\times 10^{-4} m?n=?4?,?ε?=21?×10?4
-
相對誤差
設 x?x^*x? 為準確值 xxx 的一個近似值,稱
er(x?)=e?x=x?x?xe_r(x^*)=\dfrac {e^*}x=\dfrac {x-x^*}x er?(x?)=xe??=xx?x??
為近似值 x?x^*x? 的相對誤差。簡記為 er?e_r^*er??若正數 εr?\varepsilon_r^*εr?? 滿足
∣er?∣=∣x?x?x∣≤εr?|e_r^*|=|\dfrac {x-x^*}x|\le \varepsilon_r^* ∣er??∣=∣xx?x??∣≤εr??
則稱 εr?\varepsilon_r^*εr?? 為 xxx 的相對誤差限實際上精確值往往未知,故常把
∣er?∣=∣x?x?x∣≤ε?∣x?∣=εr(x?)|e_r^*|=|\dfrac {x-x^*}x|\le \dfrac {\varepsilon^*}{|x^*|}=\varepsilon_r(x^*) ∣er??∣=∣xx?x??∣≤∣x?∣ε??=εr?(x?)
作為 x?x^*x? 的相對誤差例: 取3.14作為 π\piπ 的四舍五入近似值時,求其相對誤差限
解: 近似值 x?=3.14x^*=3.14x?=3.14 的絕對誤差限為 ε?=12×10?2\varepsilon^*=\dfrac 12\times 10^{-2}ε?=21?×10?2 ,則其相對誤差限為
εr?=ε?∣x?∣=12×10?23.14=0.159%\varepsilon_r^*=\dfrac {\varepsilon^*}{|x^*|}=\dfrac {\dfrac 12\times10^{-2}}{3.14}=0.159\% εr??=∣x?∣ε??=3.1421?×10?2?=0.159%
-
有效數字
設近似值 x?=0.x1x2?xn?×10mx^*=0.x_1x_2\cdots x_n\cdots \times10^mx?=0.x1?x2??xn??×10m ,且 x1≠0x_1\ne0x1??=0 ,若
∣x?x?∣≤12×10m?n|x-x^*|\le \frac 12\times 10^{m-n} ∣x?x?∣≤21?×10m?n
則稱 x?x^*x? 為 xxx 具有 nnn 位有效數字的近似值**例:**取3.142和3.141作為 π\piπ 的近似值,各有幾位有效數字?
解:∣π?3.142∣=0.000407?<0.0005<12×10?3|\pi-3.142|=0.000407\cdots<0.0005<\dfrac 12\times10^{-3}∣π?3.142∣=0.000407?<0.0005<21?×10?3
因為 m?n=?3,m=1m-n=-3,m=1m?n=?3,m=1 ,故有 n=4n=4n=4 (4位有效數字)
∣π?3.141∣=0.00059?<0.005<12×10?2|\pi-3.141|=0.00059\cdots<0.005<\dfrac 12\times10^{-2}∣π?3.141∣=0.00059?<0.005<21?×10?2
因為 m?n=?2,m=1m-n=-2,m=1m?n=?2,m=1 ,故有 n=3n=3n=3 (3位有效數字)
快速判斷:
- 因為四舍五入誤差限
∣x?x?∣≤12×10m?n|x-x^*|\le \dfrac 12 \times 10^{m-n} ∣x?x?∣≤21?×10m?n
即四舍五入得到的近似數的誤差限是末位的半個單位
故四舍五入得到的近似數全是有效數字
- 若用四舍五入取準確值的前 nnn 位 x?x^*x? 作為近似值,則 x?x^*x? 必有 nnn 個有效數字
例: 自然對數的底 e=2.718281828459045?e=2.718281828459045\cdotse=2.718281828459045?
取四舍五入近似值
e?=2.718e^*=2.718e?=2.718 ,有4位有效數字(第四位 2 被四舍五入舍去)
e?=2.7182e^*=2.7182e?=2.7182 ,有4位有效數字(不是四舍五入)
e?=2.71828e^*=2.71828e?=2.71828 ,有6位有效數字(第六位 1 被四舍五入舍去)
-
有效數字與相對誤差
-
若近似數 x?=0.x1x2?xn?×10mx^*=0.x_1x_2\cdots x_n\cdots \times10^mx?=0.x1?x2??xn??×10m 具有 nnn 位有效數字,則其相對誤差
∣er?∣≤12x1×10?(n?1)|e_r^*|\le \dfrac 1{2x_1}\times10^{-(n-1)} ∣er??∣≤2x1?1?×10?(n?1)
即有效數字位數越多,相對誤差越小 -
若近似數 x?=0.x1x2?xn?×10mx^*=0.x_1x_2\cdots x_n\cdots \times10^mx?=0.x1?x2??xn??×10m 的相對誤差
∣er?∣≤12(x1+1)×10?(n?1)|e^*_r|\le\dfrac 1{2(x_1+1)}\times10^{-(n-1)} ∣er??∣≤2(x1?+1)1?×10?(n?1)
則該近似數至少具有 nnn 位有效數字
例: 取3.14作為圓周率四舍五入近似值,試求其相對誤差
解: 四舍五入近似數3.14有三位有效數字,故
εr?=12x1×10?(n?1)=12×3×10?(3?1)=0.17%\varepsilon_r^*=\dfrac 1{2x_1}\times10^{-(n-1)}=\dfrac 1{2\times 3}\times10^{-(3-1)}=0.17\% εr??=2x1?1?×10?(n?1)=2×31?×10?(3?1)=0.17%例: 求 6\sqrt 66? 的近似值,使其相對誤差不超過 12×10?3\dfrac 12\times10^{-3}21?×10?3
解: 因為 6=2.4494?\sqrt 6=2.4494\cdots6?=2.4494? 則由
12×2×10?(n?1)≤12×10?3\dfrac 1{2\times2}\times10^{-(n-1)}\le \dfrac 12 \times10^{-3} 2×21?×10?(n?1)≤21?×10?3
得 n=4n=4n=4 ,故取 x?=2.449x^*=2.449x?=2.449但當 x?=2.45x^*=2.45x?=2.45 時,∣6?2.452.45∣≈0.0208%<12×10?3|\dfrac {\sqrt 6-2.45}{2.45}|\approx0.0208\%<\dfrac 12\times10^{-3}∣2.456??2.45?∣≈0.0208%<21?×10?3
由于定理一是對所有具有 n 位有效數字得近似數都成立,故誤差限的估計偏大
例: 已知近似數的相對誤差為 0.25%0.25\%0.25% ,問可能有幾位有效數字
解: 由
∣er?∣≤12(x1+1)×10?(n?1)|e^*_r|\le\dfrac 1{2(x_1+1)}\times10^{-(n-1)} ∣er??∣≤2(x1?+1)1?×10?(n?1)
得 0.25%=12(x1+1)×10?(n?1)0.25\%=\dfrac 1{2(x_1+1)}\times10^{-(n-1)}0.25%=2(x1?+1)1?×10?(n?1)
{x1=1,則n=3x1=9,則n=2.3\begin{cases} x_1=1,\ 則n=3\\ x_1=9,\ 則n=2.3 \end{cases} {x1?=1,?則n=3x1?=9,?則n=2.3?
按最不利得情況,至少有 2 位有效數字 -
近似數的運算
-
近似數的加法
- 和的絕對誤差等于各項絕對誤差之和
- 和的絕對誤差限不超過各項絕對誤差限之和
- 和的相對誤差介于各項的相對誤差中的最大值和最小值之間
-
近似數的減法
- 差的絕對誤差限不超過兩數絕對誤差限之和
-
近似數的乘法
- 積的相對誤差限不超過各因子的相對誤差限之和
-
函數運算誤差
- e(f(x?))≈∣f′(x?)∣ε?e(f(x^*))\approx|f'(x^*)|\varepsilon^*e(f(x?))≈∣f′(x?)∣ε?
- er(f(x?))≈∣f′(x?)f(x?)ε?∣e_r(f(x^*))\approx|\dfrac {f'(x^*)}{f(x^*)}\varepsilon^*|er?(f(x?))≈∣f(x?)f′(x?)?ε?∣
例: 設 x>0x>0x>0 ,xxx 的相對誤差為 2%2\%2% ,求 xnx^nxn 的相對誤差
解:
er(xn)≈nxn?1e(x)xn=2n%e_r(x^n)\approx\dfrac{nx^{n-1}e(x)}{x^n}=2n\% er?(xn)≈xnnxn?1e(x)?=2n%
數值穩定性和減小運算誤差
-
數值穩定性
原始數據有擾動(即誤差),而計算中舍入誤差不增長,則稱此算法數值穩定。否則,若誤差增長則稱算法數值不穩定
-
減小運算誤差
- 使用數值穩定的算法
- 避免兩個相似數相減
- 絕對值太小的數不宜作除數
- 避免大數吃小數(計算機運算位數)
- 如 109+1=0.10000000×1010+0.00000000×1010=0.10000000×101010^9+1=0.10000000\times10^{10}+0.00000000\times10^{10}=0.10000000\times10^{10}109+1=0.10000000×1010+0.00000000×1010=0.10000000×1010
- 算法的遞推性
總結
以上是生活随笔為你收集整理的数值计算方法第一章—数值计算引论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32F103--移植FreeRTO
- 下一篇: iOS IPv6 被拒2