參考資料:
書籍: 數值分析簡明教程/王兵團,張作泉,張平福編著. --北京:清華大學出版社;北京交通大學出版社,2012.8
視頻:學堂在線APP中北京交通大學“數值分析I”
前期回顧
- 【數值分析】01-緒論-重要性、計算機中的數系與運算特點
重要性:
- 減少計算機科學計算式的錯誤;
- 使計算機計算的結果更可信;
- 計算機解決實際問題四個步驟:數學建模-》選擇數值方法-》編寫程序-》上機計算
機器數系及運算特點:
- 機器數系是有限實數集合;
- 表達式:f(β,t,L,U)={βc×0.a1a2a3?at∣ai∈{0,1,?,β?1},L≤c≤U}f(\beta,t,L,U)=\{\beta^c\times 0.a_1a_2a_3\cdots a_t|a_i\in\{0,1,\cdots,\beta-1\},L\leq c \leq U\}f(β,t,L,U)={βc×0.a1?a2?a3??at?∣ai?∈{0,1,?,β?1},L≤c≤U}
- 計算機對數的接收:首先判斷給定實數是否屬于給定機器數系,如果屬于,則原樣接收;不屬于但給定實數是否在最小值與最大值之間,用接近給定實數fl(x)fl(x)fl(x)表示并記錄x
- 計算處理:加減:先對階、運算、舍入;乘除:運算、舍入
科學計算的實質是用近似的數據,去獲得可用的結果,強調計算結果的可用性,而不是準確性。
科學計算保證計算結果可用性的依據是對計算誤差控制。那本期咱們就來學習誤差。
1.3 誤差
所謂誤差就是準確值與近似值的差異。
1.3.1 誤差的來源
主要來源有4個方面:
- 模型誤差(也稱描述誤差)
建立數據模型時引入的誤差,不是數值分析可以解決的;
- 觀測誤差(也稱數據誤差)
采集元素數據時引入的誤差,也不是數值分析能解決的問題,例如:儀器精度等
- 截斷誤差(也稱方法誤差)
對計算的數學公式做簡化處理后所產生的誤差。由于科學結算經常要把一些數學函數變成計算機易于處理的形式,總會產生截斷誤差,是數值分析主要研究的誤差;
- 舍入誤差(也稱計算誤差)
計算機因數系有限,在接收和運算數據時引起的誤差,也是數值分析關注的內容;
1.3.2 誤差的定義
絕對誤差(簡稱誤差)定義: 設xxx是準確值,x?x^*x?是xxx的一個近似值,稱差x??xx^*-xx??x為近似值x?x^*x?的絕對誤差,簡稱誤差,記為e?或e(x?)e^*或e(x^*)e?或e(x?),即e(x?)=x??xe(x^*)=x^*-xe(x?)=x??x。
由于準確值xxx通常是未知的,故誤差e?e^*e?一般是計算不出來的,為此引入誤差限對誤差進行估計。
誤差限定義:滿足∣e?∣=∣x??x∣≤??|e^*|=|x*-x|\leq \epsilon^*∣e?∣=∣x??x∣≤??的正數??\epsilon^*??為近似值x?x^*x?的誤差限。
誤差限一般可以求出,例如用具有毫米刻度的皮尺去測量某個物件的長度,測得的數據與物件的實際長度不會超過半個毫米,這半個毫米就是物件長度的誤差限。
誤差限給出了準確值xxx所在范圍為x????≤x≤x?+??x^*-\epsilon^*\leq x\leq x^*+\epsilon^*x????≤x≤x?+??,該范圍常用x=x?±??x=x^*\pm \epsilon^*x=x?±??
通常誤差限一般取為獲得該近似數儀器精度的半個單位,顯然誤差限??\epsilon^*??越小,近似值越準確。
絕對誤差不能反映近似值x?x^*x?的近似程度,為描述近似數的近似程度,需要引入相對誤差:
相對誤差定義:設xxx是準確值,x?x^*x?是xxx的一個近似值,稱e?x=x??xx\frac{e^*}{x}=\frac{x^*-x}{x}xe??=xx??x?為近似值x?x^*x?的相對誤差,記為er?或er(x?)e_r^*或e_r(x^*)er??或er?(x?),即er(x?)=e?x=x??xxe_r(x^*)=\frac{e^*}{x}=\frac{x^*-x}{x}er?(x?)=xe??=xx??x?
相對誤差的絕對值越小,近似程度越高。
由于準確值xxx通常是未知的,故相對誤差一般是計算不出來的,為此引入相對誤差限對相對誤差進行估計。
稱滿足∣er(x?)∣=∣x??xx∣≤?r?|e_r(x^*)|=|\frac{x^*-x}{x}|\leq \epsilon_r^*∣er?(x?)∣=∣xx??x?∣≤?r??為正數?r?\epsilon_r^*?r??為近似數x?x^*x?的相對誤差限。
使用中常用絕對誤差限來估計,為方便估計相對誤差限制,實用中常用e?x?=x??xx?\frac{e^*}{x^*}=\frac{x^*-x}{x^*}x?e??=x?x??x?進行誤差限計算。
1.3.3 數值計算的誤差
帶有誤差的數經過四則運算后誤差的變化有如下估算關系:
定理1-1 假設x?和y?x^*和y^*x?和y?分別是準確值x和yx和yx和y的一個近似值,則有:
(1)四則運算的絕對誤差估計:e(x?±y?)=e(x?)±e(y?)e(x?×y?)≈y?e(x?)+x?e(y?)e(x?y?)≈y?e(x?)?x?e(y?)(y?)2e(x^*\pm y^*)=e(x^*)\pm e(y^*)\\ \space \\ e(x^*\times y^*)\approx y^*e(x^*)+x^*e(y*)\\ \space \\ e(\frac{x^*}{y^*})\approx \frac{y^*e(x^*)-x^*e(y^*)}{(y^*)^2}e(x?±y?)=e(x?)±e(y?)?e(x?×y?)≈y?e(x?)+x?e(y?)?e(y?x??)≈(y?)2y?e(x?)?x?e(y?)?
(2)四則運算的相對誤差估計:er(x?±y?)≈x?er(x?)±y?er(y?)x?±y?er(x?×y?)≈er(x?)+er(y?)e(x?y?)≈er(x?)?er(y?)e_r(x^*\pm y^*)\approx\frac{x^*e_r(x^*) \pm y^*e_r(y^*)}{x^*\pm y^*}\\ \space \\ e_r(x^*\times y^*)\approx e_r(x^*)+e_r(y*)\\ \space \\ e(\frac{x^*}{y^*})\approx e_r(x^*)-e_r(y^*)er?(x?±y?)≈x?±y?x?er?(x?)±y?er?(y?)??er?(x?×y?)≈er?(x?)+er?(y?)?e(y?x??)≈er?(x?)?er?(y?)
近似數xxx的絕對誤差和相對誤差與微分的關系:絕對誤差與微分:dx=e(x?)相對誤差與微分:dln?x=er(x?)絕對誤差與微分:dx=e(x^*)\\ 相對誤差與微分:d\ln x=e_r(x^*)絕對誤差與微分:dx=e(x?)相對誤差與微分:dlnx=er?(x?)
【例1-2】考查函數y=xny=x^ny=xn的相對誤差與自變量x的相對誤差關系。
解:兩邊同時去對數得:ln?y=nln?x?dln?y=ndln?x由相對誤差與微分關系式:dln?x=er(x?)故:er((x?)n)=ner(x?)由此可知函數xn的相對誤差為自變量x的相對誤差的n倍兩邊同時去對數得:\\ \ln y=n\ln x\Longrightarrow d \ln y=nd\ln x \\ 由相對誤差與微分關系式:d\ln x=e_r(x^*)\\ 故:e_r((x^*)^n)=ne_r(x^*)\\ 由此可知函數x^n的相對誤差為自變量x的相對誤差的n倍兩邊同時去對數得:lny=nlnx?dlny=ndlnx由相對誤差與微分關系式:dlnx=er?(x?)故:er?((x?)n)=ner?(x?)由此可知函數xn的相對誤差為自變量x的相對誤差的n倍。
處理一般函數計算的誤差問題常用Taylor展開式進行估計:
定理1-2 設多元函數u=f(x1,x2,?,xn)u=f(x_1,x_2,\cdots,x_n)u=f(x1?,x2?,?,xn?),向量自變量(x1,x2,?,xn)(x_1,x_2,\cdots,x_n)(x1?,x2?,?,xn?)的近似值為(x1?,x2?,?,xn?)(x_1^*,x_2^*,\cdots,x_n^*)(x1??,x2??,?,xn??),則有多元函數f(x1,x2,?,xn)f(x_1,x_2,\cdots,x_n)f(x1?,x2?,?,xn?)的誤差估計:
(1)e(f(x1?,x2?,?,xn?))≈∑i=1n?f(x1?,x2?,?,xn?)?xie(xi?)e(f(x_1^*,x_2^*,\cdots,x_n^*))\approx \sum_{i=1}^{n}\frac{\partial f(x_1^*,x_2^*,\cdots,x_n^*)}{\partial x_i}e(x_i^*)e(f(x1??,x2??,?,xn??))≈∑i=1n??xi??f(x1??,x2??,?,xn??)?e(xi??)
(2)?(f(x1?,x2?,?,xn?))≈∑i=1n∣?f(x1?,x2?,?,xn?)?xi∣?(xi?)\epsilon(f(x_1^*,x_2^*,\cdots,x_n^*))\approx \sum_{i=1}^{n}|\frac{\partial f(x_1^*,x_2^*,\cdots,x_n^*)}{\partial x_i}|\epsilon(x_i^*)?(f(x1??,x2??,?,xn??))≈∑i=1n?∣?xi??f(x1??,x2??,?,xn??)?∣?(xi??)
(3)?r(f(x1?,x2?,?,xn?))≈∑i=1n∣?f(x1?,x2?,?,xn?)?xi∣?(xi?)∣f(x1?,x2?,?,xn?)∣≈?(f(x1?,x2?,?,xn?))∣f(x1?,x2?,?,xn?)∣\epsilon_r(f(x_1^*,x_2^*,\cdots,x_n^*))\approx \sum_{i=1}^{n}|\frac{\partial f(x_1^*,x_2^*,\cdots,x_n^*)}{\partial x_i}|\frac{\epsilon(x_i^*)}{|f(x_1^*,x_2^*,\cdots,x_n^*)|}\approx \frac{\epsilon(f(x_1^*,x_2^*,\cdots,x_n^*))}{{|f(x_1^*,x_2^*,\cdots,x_n^*)|}}?r?(f(x1??,x2??,?,xn??))≈∑i=1n?∣?xi??f(x1??,x2??,?,xn??)?∣∣f(x1??,x2??,?,xn??)∣?(xi??)?≈∣f(x1??,x2??,?,xn??)∣?(f(x1??,x2??,?,xn??))?
【例1-3】 設有一長方體水池,測得其長、寬、深分別為50m±0.01m,25m±0.01m,20m±0.01m50m\pm 0.01m,25m\pm 0.01m,20m\pm 0.01m50m±0.01m,25m±0.01m,20m±0.01m,試按所給數據求出該水池的容積,并給出絕對誤差限和相對誤差限。
**解:**令l,w,h,vl,w,h,vl,w,h,v分別代表長方體的長、寬、深、容積,由長方體體積公式可得:v=v(l,w,h)=lwhv=v(l,w,h)=lwhv=v(l,w,h)=lwh
由題意可得長、寬、深的近似值和誤差限如下:近似值:l?=50m,w?=25m,h?=20m誤差限:?(l?)=?(w?)=?(h?)=0.01m近似值:l^*=50m,w^*=25m,h^*=20m \\ 誤差限:\epsilon(l^*)=\epsilon(w^*)=\epsilon(h^*)=0.01m近似值:l?=50m,w?=25m,h?=20m誤差限:?(l?)=?(w?)=?(h?)=0.01m
按所給數據求出該水池的容積為:v(l?,w?,h?)=l?w?h?=50×25×20=2500m3v(l^*,w^*,h^*)=l^*w^*h^*=50\times 25 \times 20=2500m^3v(l?,w?,h?)=l?w?h?=50×25×20=2500m3
依據多元函數絕對誤差限制公式可得:?(v(l?,w?,h?))≈?v??l?(l?)+?v??w?(w?)+?v??h?(h?)≈w?h??(l?)+l?h??(w?)+w?l??(h?)≈25×20×0.01+50×25×0.01+50×20×0.01≈27.50m3\epsilon(v(l^*,w^*,h^*))\approx \frac{\partial v*}{\partial l}\epsilon(l^*)+ \frac{\partial v*}{\partial w}\epsilon(w^*)+ \frac{\partial v*}{\partial h}\epsilon(h^*)\\ \approx w^*h^*\epsilon(l^*)+l^*h^*\epsilon(w^*)+w^*l^*\epsilon(h^*)\\ \approx 25\times20\times 0.01+50\times 25 \times 0.01+50\times 20 \times 0.01\\ \approx27.50m^3?(v(l?,w?,h?))≈?l?v???(l?)+?w?v???(w?)+?h?v???(h?)≈w?h??(l?)+l?h??(w?)+w?l??(h?)≈25×20×0.01+50×25×0.01+50×20×0.01≈27.50m3
依據多元函數相對誤差限制公式可得:?r(v?)≈?(v?)v?=27.50/2500=0.11%\epsilon_r(v^*)\approx \frac{\epsilon(v*)}{v^*}=27.50/2500=0.11\%?r?(v?)≈v??(v?)?=27.50/2500=0.11%
故絕對容積的誤差限和相對誤差限分別為27.50立方米、0.11%0.11\%0.11%
1.3.4 計算機的舍入誤差
設計算機的數系為f(β,t,L,U)f(\beta,t,L,U)f(β,t,L,U),m和M是其中絕對值最小和最大的正數,某數x=±βc×0.a1a2?,a1≠0滿足m<∣x∣<M,x?f(β,t,L,U)x=\pm \beta^c\times 0.a_1a_2\cdots,a_1\neq 0滿足m\lt |x| \lt M,x\notin f(\beta,t,L,U)x=±βc×0.a1?a2??,a1?=0滿足m<∣x∣<M,x∈/f(β,t,L,U),則計算機舍入處理后以數fl(x)fl(x)fl(x)接收,則
fl(x)=±βc×a ̄a ̄={0.a1a2?at,0≤at+1<β20.a1a2?at+β?t,at+1≥β2}fl(x)=\pm \beta^c\times \overline{a}\\ \overline{a}= \left \{ \begin{matrix} 0.a_1a_2\cdots a_t,0\leq a_{t+1}\lt \frac{\beta}{2} \\ 0.a_1a_2\cdots a_t+\beta^{-t},a_{t+1}\ge \frac{\beta}{2} \end{matrix} \right \}fl(x)=±βc×aa={0.a1?a2??at?,0≤at+1?<2β?0.a1?a2??at?+β?t,at+1?≥2β??}
因此計算機對xxx的舍入絕對誤差和舍入相對誤差有如下估計:
(1) ∣e(fl(x))∣=∣x?fl(x)∣≤0.5×βc?t|e(fl(x))|=|x-fl(x)|\leq 0.5 \times \beta^{c-t}∣e(fl(x))∣=∣x?fl(x)∣≤0.5×βc?t
(2)∣er(fl(x))∣=∣x?fl(x)∣∣x∣≤0.5×β1?t|e_r(fl(x))|=\frac{|x-fl(x)|}{|x|}\leq 0.5 \times \beta^{1-t}∣er?(fl(x))∣=∣x∣∣x?fl(x)∣?≤0.5×β1?t
由上述公式可知,計算機對任何實數的舍入相對誤差限與實數本身無關,只與計算機字長ttt有,其值為0.5×β1?t0.5 \times \beta^{1-t}0.5×β1?t,通常定義eps=0.5×β1?teps=0.5 \times \beta^{1-t}eps=0.5×β1?t為計算機的精度。