數值近似與誤差:以 0.33 近似 1/3 的絕對誤差、相對誤差與容許範圍

本頁導覽
  1. 目標與範圍
  2. 已知條件與符號
  3. 規則與來源
  4. 逐步主鏈
  5. 局部子步與引理
  6. 逐步反向審查
  7. 錯誤控制與反例
  8. 結論與限制
  9. 驗證及來源綁定

← 導讀目錄 · 原始 MKO

derivation-mko-numerical-approximation-error-01 · production-20261019-adopted-96

目標與範圍

以精確有理數計算:近似值 a=33/100 相對參照值 x=1/3 的絕對誤差與相對誤差;判定 a 是否在容許誤差 τ₁=1/250、τ₂=1/400、τ₃=1/300 之內(τ₃ 為端點情形);證明 |a−x|≤τ ⇔ x−τ≤a≤x+τ;比較放大 1000 倍後的誤差;說明參照值為 0 時相對誤差沒有定義,以及誤差數值本身不能說明誤差來源。

全部使用精確有理數(MKO 假設 a1),十進位寫法 0.33 讀作有理數 33/100,不涉及二進位浮點表示。相對誤差只在參照值非零時計算(假設 a2)。不處理條件數、穩定性或收斂階;不改動 canonical MKO 或英文 edition。

已知條件與符號

  • frac_rules
  • abs_rules
  • order_basics
  • mul_inverse_nonzero
  • case_analysis
  • G1 — 近似值 a=33/100(十進位 0.33 讀作精確有理數),參照值 x=1/3。
  • G2 — 容許誤差 τ₁=1/250、τ₂=1/400、τ₃=1/300,皆 ≥0。
  • G3 — 放大的一對:a′=330,x′=1000/3。
  • G4 — 參照值為零的一對:a₀=1/1000,x₀=0。
  • G5 — 兩位小數的產生方式:四捨五入取最接近的 k/100;截斷取不超過原數(正數)的最大 k/100(k 為整數)。
  • a,\ x — 近似值與參照值
  • |a-x| — 絕對誤差
  • \frac{|a-x|}{|x|} — 相對誤差(x≠0)
  • \tau — 容許誤差,τ≥0
  • [x-\tau,\ x+\tau] — 容許區間(含端點)

規則與來源

  • frac_rules · prerequisite — 分數運算(分母皆非零):a/c+b/c=(a+b)/c;(a/b)(c/d)=(ac)/(bd);(a/b)/(c/d)=(ad)/(bc)(另需 c≠0);a/b=(ak)/(bk)(k≠0)。
  • abs_rules · prerequisite — 絕對值(實數):|u|=u(u≥0)、|u|=−u(u<0);|u|≥0;|uv|=|u||v|;三角不等式 |u+v|≤|u|+|v|;|u|<r ⇔ −r<u<r。
  • order_basics · prerequisite — 實數的序:任兩數恰有 u<v、u=v、u>v 之一;u<v 且 v<w 推出 u<w;u<v 推出 u+w<v+w;u<v 且 w>0 推出 uw<vw;u<v 且 w<0 推出 uw>vw。
  • mul_inverse_nonzero · prerequisite — 非零數的倒數:在 ℚ、ℝ、ℂ 中,若 u≠0,存在 1/u 使 u·(1/u)=1;對 u≠0 定義 v/u 為 v·(1/u)。u=0 時沒有倒數,v/0 不定義。
  • case_analysis · prerequisite — 分情況論證:若 P∨Q 成立,且 P⇒R、Q⇒R 都已證,則 R 成立。所有情況必須涵蓋全部可能。
  • def_intro · prerequisite — 引入定義:可為一個命題、式子或物件取名;之後名稱與被定義者可互相替換。
  • numeric_evaluation · prerequisite — 明確整數或有理數算式的精確求值;可以獨立重算。
  • neg_mul · prerequisite — 負號與乘法:(−u)v=−(uv),(−u)(−v)=uv。
  • eq_refl_symm_trans · prerequisite — 等號的性質:u=u;若 u=v 則 v=u;若 u=v 且 v=w 則 u=w。
  • and_intro_elim · prerequisite — 合取:由 P 與 Q 得 P∧Q;由 P∧Q 可分別得 P 與 Q。
  • mko_error_def · cited — 給近似值 a 與參照值 x,絕對誤差為 |a−x|。若 x≠0,相對誤差為 |a−x|/|x|。容許誤差 τ≥0 時,|a−x|≤τ 才稱在該容許範圍內。 · mko-numerical-approximation-error
  • mko_error_sources · cited — 誤差數值本身不說明來源。要區分離散化、截斷、捨入、量測與模型誤差,必須另有產生過程資料。 · mko-numerical-approximation-error
  • frac_compare · prerequisite — 正分母的分數比較:若 b>0、d>0,則 a/b≤c/d ⇔ ad≤cb(兩邊同乘正數 bd)。
  • L_tol_interval · lemma — 對實數 a、x 與 τ≥0:|a−x|≤τ ⇔ x−τ≤a≤x+τ。

逐步主鏈

S01 · definition

操作前

a=\tfrac{33}{100},\ x=\tfrac{1}{3}

操作後

e_{\mathrm{abs}}=|a-x|,\ e_{\mathrm{rel}}=\frac{|a-x|}{|x|}\ (x\neq 0),\ \text{within }\tau\iff |a-x|\le\tau

條件:\tau\ge 0

規則:mko_error_def · 依賴:G1, G2

葉節點依據:mko_error_def + def_intro

依 MKO 寫出三個定義。絕對誤差保留原量的尺度;相對誤差只在 x≠0 時定義,把誤差和參照量比較;「在容許範圍內」用的是 ≤,所以等號成立時也算在內。

S02 · equivalent

操作前

a-x=\tfrac{33}{100}-\tfrac{1}{3}

操作後

a-x=-\tfrac{1}{300}

條件:100\neq 0,\ 3\neq 0

規則:frac_rules · 依賴:G1

葉節點依據:frac_rules + numeric_evaluation

通分到公分母 300 後相減,細節在 S02.1、S02.2。結果為負,表示近似值比參照值小。

S03 · equivalent

操作前

|a-x|=\left|-\tfrac{1}{300}\right|

操作後

|a-x|=\tfrac{1}{300}

條件:-\tfrac{1}{300}<0

規則:abs_rules · 依賴:S02

葉節點依據:abs_rules + neg_mul

因 −1/300<0,依絕對值定義 |u|=−u,得 1/300。這就是絕對誤差,單位與 x 相同。

S04 · implies

操作前

x=\tfrac{1}{3}

操作後

x\neq 0,\ |x|=\tfrac{1}{3}

條件:\tfrac{1}{3}>0

規則:abs_rules · 依賴:G1

葉節點依據:abs_rules + order_basics

1/3>0,所以 x≠0,且 |x|=x=1/3。這是 MKO 計算相對誤差的前提。

S05 · equivalent

操作前

e_{\mathrm{rel}}=\frac{1/300}{1/3}

操作後

e_{\mathrm{rel}}=\tfrac{1}{100}

條件:\tfrac{1}{3}\neq 0

規則:frac_rules · 依賴:S03, S04

葉節點依據:frac_rules + mul_inverse_nonzero

依 (a/b)/(c/d)=(ad)/(bc)(c≠0):(1·3)/(300·1)=3/300=1/100。相對誤差是無因次的比,也就是 1%。

S06 · equivalent

操作前

\tfrac{1}{300}\le\tfrac{1}{250}

操作後

250\le 300\ (\text{true}),\ \text{so }a\ \text{within }\tau_1

條件:300>0,\ 250>0

規則:frac_compare · 依賴:S03, G2

葉節點依據:frac_compare + order_basics

依分數比較,兩邊同乘正數 300·250:1/300≤1/250 ⇔ 1·250≤1·300,後者成立。所以 |a−x|≤τ₁,a 在容許誤差 τ₁ 之內。

S07 · equivalent

操作前

|a-x|\le\tau

操作後

x-\tau\le a\le x+\tau

條件:\tau\ge 0

規則:L_tol_interval · 依賴:L_tol_interval

葉節點依據:abs_rules + order_basics + case_analysis

依引理 L_tol_interval(在 S07.1 到 S07.3 分情況證明),誤差界等價於 a 位於含端點的區間 [x−τ, x+τ],這是 MKO 第二段的說法。庫中的 abs_rules 只給嚴格版 |u|<r,所以非嚴格版需要自己證明。

S08 · implies

操作前

[x-\tau_1,\ x+\tau_1]

操作後

\left[\tfrac{247}{750},\ \tfrac{253}{750}\right]\ni\tfrac{33}{100}

條件:\tau_1\ge 0

規則:L_tol_interval · 依賴:S07, G1, G2, S06

葉節點依據:L_tol_interval + frac_compare + numeric_evaluation

第二條路線核對 S06:1/3−1/250=250/750−3/750=247/750,1/3+1/250=253/750。交叉相乘:33·750=24750≥247·100=24700,且 24750≤253·100=25300,所以 247/750≤33/100≤253/750。依 L_tol_interval,這與 |a−x|≤τ₁ 等價,與 S06 一致。

S09 · equivalent

操作前

\tfrac{1}{300}\le\tfrac{1}{400}\ ?

操作後

400\le 300\ \text{false};\ \tfrac{1}{300}>\tfrac{1}{400};\ a\ \text{not within }\tau_2

條件:300>0,\ 400>0

規則:frac_compare · 依賴:S03, G2

葉節點依據:frac_compare + order_basics

依分數比較,1/300≤1/400 ⇔ 400≤300,後者不成立,所以 |a−x|>τ₂,a 不在容許誤差 τ₂ 之內。分子同為 1 時,分母較大的分數較小。

S10 · implies

操作前

|a-x|=\tfrac{1}{300}=\tau_3

操作後

|a-x|\le\tau_3,\ a=x-\tau_3\ \text{(left endpoint)}

條件:\tau_3\ge 0

規則:mko_error_def · 依賴:S03, S07, G2

葉節點依據:mko_error_def + eq_refl_symm_trans + order_basics

τ₃=1/300 時 |a−x|=τ₃,而定義用 ≤,所以 a 在容許範圍內。事實上 x−τ₃=1/3−1/300=99/300=33/100=a,a 正好在左端點;MKO 說明端點包含在容許範圍。

S11 · implies

操作前

a'=330,\ x'=\tfrac{1000}{3}

操作後

|a'-x'|=\tfrac{10}{3},\ \frac{|a'-x'|}{|x'|}=\tfrac{1}{100}

條件:x'\neq 0

規則:mko_error_def · 依賴:G3, mko_error_def

葉節點依據:mko_error_def + frac_rules + abs_rules

330=990/3,所以 a′−x′=−10/3,絕對誤差 10/3;x′=1000/3≠0,相對誤差 (10/3)/(1000/3)=1/100。兩個量都放大 1000 倍後,絕對誤差也放大 1000 倍(10/3=1000·1/300),相對誤差不變。兩種誤差回答不同的問題。

S12 · implies

操作前

a_0=\tfrac{1}{1000},\ x_0=0

操作後

|a_0-x_0|=\tfrac{1}{1000},\ \frac{|a_0-x_0|}{|x_0|}\ \text{undefined}

條件:x_0=0

規則:mul_inverse_nonzero · 依賴:G4, mko_error_def

葉節點依據:mul_inverse_nonzero + abs_rules

絕對誤差照常計算:|1/1000−0|=1/1000。相對誤差要除以 |x₀|=0,而 0 沒有倒數,v/0 不定義,所以依 MKO 假設 a2 不計算相對誤差;不能把它寫成無限大或改用其他分母而不加說明。

S13 · implies

操作前

\text{error }\tfrac{1}{300}\ \text{for }0.33

操作後

\text{rounding and truncation both give }\tfrac{33}{100};\ \text{source not determined by the value}

條件:無

規則:mko_error_sources · 依賴:G1, G5, mko_error_sources

葉節點依據:mko_error_sources + frac_compare + numeric_evaluation

33/100≤1/3<34/100,且 1/3 到 33/100 的距離 1/300 小於到 34/100 的距離 2/300,所以四捨五入與截斷都給出 33/100,誤差同為 1/300。同一個誤差值可能來自兩種不同程序,所以誤差值本身不能告訴我們來源。對 2/3 兩者就不同:四捨五入得 67/100(誤差 1/300),截斷得 66/100(誤差 1/150)。

S14 · implies

操作前

\text{computed and proved facts}

操作後

e_{\mathrm{abs}}=\tfrac{1}{300},\ e_{\mathrm{rel}}=\tfrac{1}{100};\ \text{within }\tau_1,\tau_3;\ \text{not within }\tau_2

條件:無

規則:and_intro_elim · 依賴:S03, S05, S06, S09, S10, S12, S13

葉節點依據:and_intro_elim

合併結論:絕對誤差 1/300,相對誤差 1/100;在 τ₁ 與 τ₃(端點)之內,不在 τ₂ 之內;參照值為 0 時相對誤差沒有定義;誤差值不決定來源。

局部子步與引理

S02.1 · equivalent

操作前

\tfrac{33}{100},\ \tfrac{1}{3}

操作後

\tfrac{99}{300},\ \tfrac{100}{300}

條件:3\neq 0,\ 100\neq 0

規則:frac_rules · 依賴:G1

葉節點依據:frac_rules

依 a/b=(ak)/(bk)(k≠0):33/100 分子分母同乘 3 得 99/300;1/3 同乘 100 得 100/300。

S02.2 · equivalent

操作前

\tfrac{99}{300}-\tfrac{100}{300}

操作後

-\tfrac{1}{300}

條件:無

規則:frac_rules · 依賴:S02.1

葉節點依據:frac_rules + numeric_evaluation

同分母相減:(99−100)/300=−1/300。

S07.1 · equivalent

操作前

u\ge 0:\ |u|\le\tau

操作後

-\tau\le u\le\tau

條件:u\ge 0; \tau\ge 0

規則:abs_rules · 依賴:abs_rules

葉節點依據:abs_rules + order_basics

設 u=a−x 且 u≥0。此時 |u|=u,所以 |u|≤τ ⇔ u≤τ。而 −τ≤0≤u 自動成立(因 τ≥0),所以 u≤τ ⇔ −τ≤u≤τ。

S07.2 · equivalent

操作前

u<0:\ |u|\le\tau

操作後

-\tau\le u\le\tau

條件:u<0; \tau\ge 0

規則:abs_rules · 依賴:abs_rules

葉節點依據:abs_rules + order_basics + neg_mul

設 u<0。此時 |u|=−u,−u≤τ ⇔ −τ≤u(兩邊乘 −1 反轉不等號)。而 u<0≤τ 使 u≤τ 自動成立,所以 −u≤τ ⇔ −τ≤u≤τ。

S07.3 · equivalent

操作前

|a-x|\le\tau\iff -\tau\le a-x\le\tau

操作後

|a-x|\le\tau\iff x-\tau\le a\le x+\tau

條件:\tau\ge 0

規則:case_analysis · 依賴:S07.1, S07.2

葉節點依據:case_analysis + order_basics

u≥0 與 u<0 涵蓋所有實數(三分律),兩種情形都得到同一個等價,依分情況論證它對每個 u=a−x 成立。最後三邊同加 x 得 x−τ≤a≤x+τ。S07.1 到 S07.3 合起來證得引理 L_tol_interval。

逐步反向審查

  • S14 · sufficient_goal_reduction · S03, S05, S06, S09, S10, S12, S13, and_intro_elim — 目標 G:本稿目標的各項判定。足夠條件 H:S03、S05、S06、S09、S10、S12、S13(H⇒G 由合取引入)。H 由給定條件正向推出,沒有把 G 當作前提。
  • S13 · premise_audit · mko_error_sources, G5, frac_compare — 需要兩種程序的定義與精確比較;結論是「不能由數值判定來源」,不是「來源是某一種」。
  • S12 · premise_audit · mul_inverse_nonzero, mko_error_def — 只需要 x₀=0;這是定義的界限,而不是計算困難。
  • S11 · premise_audit · mko_error_def, frac_rules, abs_rules — 相對誤差需要 x′≠0,這裡成立。此例只說明尺度效應,不宣稱相對誤差對任何變換都不變。
  • S10 · premise_audit · mko_error_def, S03, L_tol_interval — 結論依賴「≤」而非「<」;若定義改用嚴格不等號,端點就會被排除,所以必須照 MKO 的定義。
  • S09 · inverse_equivalence · frac_compare, order_basics — 與 S06 相同的等價變形,雙向成立;結論是否定的。
  • S08 · premise_audit · L_tol_interval, frac_compare, numeric_evaluation — 需要引理與正分母的分數比較;這是對同一結論的獨立核對,S06 不依賴它。
  • S07.3 · inverse_equivalence · case_analysis, order_basics — 加 x 與減 x 互為反運算且保持不等號,雙向成立;兩種情形完整涵蓋。
  • S07.2 · inverse_equivalence · abs_rules, order_basics — 乘 −1 兩次回到原式,右界在此情形恆真,雙向成立。
  • S07.1 · inverse_equivalence · abs_rules, order_basics — 左界 −τ≤u 在此情形下恆真,加入或去掉它都不改變真假,雙向成立;這裡用到 τ≥0。
  • S07 · inverse_equivalence · L_tol_interval — 引理本身是雙條件,兩個方向都在子步證明。
  • S06 · inverse_equivalence · frac_compare, order_basics — 本步的兩個分母 300、250 均為正,乘以其正乘積保持不等號方向,除回可還原。這是所用引理的充分前提,不表示每個分母都正是所有比較的必要條件:兩個負分母的乘積也為正;乘積為負才反向,分母為零則商未定義。
  • S05 · inverse_equivalence · frac_rules, S04 — 除以 1/3 需要 S04 的 x≠0;反向是乘回 1/3 得 1/300。
  • S04 · premise_audit · abs_rules, order_basics — 需要 x 的正負;正數推出非零,反向不宣稱(非零數也可能是負的)。
  • S03 · inverse_equivalence · abs_rules — 兩式表示同一個非負數;先確定 u 的符號才能選對絕對值的分支。
  • S02.2 · inverse_equivalence · frac_rules, numeric_evaluation — 整數 99−100=−1 的精確計算,雙向成立。
  • S02.1 · inverse_equivalence · frac_rules — 約去非零公因數 3 或 100 即回到原式,雙向成立。
  • S02 · inverse_equivalence · frac_rules, numeric_evaluation — 精確有理數運算,雙向是同一個數;反向可驗算 1/3+(−1/300)=99/300=33/100。
  • S01 · premise_audit · G1, G2, mko_error_def — 此步只寫出定義與數據,不推出新事實;x≠0 的條件要在 S04 檢查後才能使用相對誤差。

錯誤控制與反例

參照值為零不能算相對誤差

MKO 指出的誤解之一是參照值為零仍計算相對誤差。S12 中 |a₀−x₀|=1/1000 可以算,但 (1/1000)/0 沒有定義。若需要描述靠近 0 的量,應改用絕對誤差或明示另一個非零尺度,並說明理由。

不是所有誤差都是捨入誤差

MKO 指出的另一個誤解是把所有誤差都叫捨入誤差。S13 顯示 0.33 可能由四捨五入或截斷得到,誤差都是 1/300;它也可能來自量測或模型。誤差數值本身不說明來源,必須有產生過程的資料。

端點包含在內,比較分數要注意方向

定義用 ≤,所以 S10 中恰在端點的 a 算在容許範圍內。比較 1/300 與 1/400 時不能把分母的大小方向直接當成分數的大小方向:正分母的分數可用交叉相乘比較(S06、S09),分子同為 1 時分母越大分數越小。

  • a₀=1/1000 相對 x₀=0 的相對誤差是無限大 → reject — 相對誤差只在參照值非零時定義;除以 0 沒有定義(S12)。
  • a=33/100 剛好在邊界上,所以不在容許誤差 τ₃=1/300 之內 → reject — 定義是 |a−x|≤τ,端點包含在內(S10)。
  • |a−x|=1/300 證明 0.33 是由四捨五入得到的 → reject — 截斷也得到 33/100 與同一個誤差(S13)。
  • 因為 300<400,所以 1/300<1/400,a 在 τ₂ 之內 → reject — 1/300≤1/400 ⇔ 400≤300,不成立;實際上 1/300>1/400(S09)。
  • a′=330 與 x′=1000/3 的相對誤差同為 1/100,所以絕對誤差也同為 1/300 → reject — 絕對誤差保留尺度,是 10/3(S11)。

結論與限制

a=33/100 近似 x=1/3 的絕對誤差是 1/300,相對誤差是 1/100。它在 τ₁=1/250 之內,等價地 a∈[247/750, 253/750];不在 τ₂=1/400 之內;在 τ₃=1/300 之內且恰在左端點。放大 1000 倍後絕對誤差變為 10/3,相對誤差仍為 1/100。參照值為 0 時相對誤差沒有定義。誤差值 1/300 可由四捨五入或截斷產生,所以不能由數值判定來源。

  • 本稿把十進位 0.33 讀作精確有理數 33/100;二進位浮點顯示值與其真正儲存值的差異不在範圍內。

驗證及來源綁定

16 個本稿宣告算術檢查;只支持所列算式。

  • source commit: b28a5edbd46279b1db2a3f3f48bb3f447e18899f
  • adopted source SHA-256: 58bd7e5c1024dfee361ec4fcc28dfa4a57c63d8a4f604d1e27e3e41147838585
  • original source SHA-256: b3644181d9d4bd6d19b2e0af1af975697928d76dee4dcb2c3153092b30403bce
  • Lean: NOT_RUN · independent AI: NOT_MEASURED

同源完整 JSON(含公式、AST、反控制與修訂記錄)