第 4 章 不等式與絕對值¶
本章重點:
- 了解不等式的意義與解集的表示方式(區間、數線)。
- 使用 SymPy 解一元一次、二次及簡單分式不等式。
- 處理絕對值方程與不等式,理解「分段討論」的觀念。
- 認識
solve_univariate_inequality與solveset的差異與用途。 - 透過圖形與數線,連結「解」與「範圍」的直覺。
不等式在現實生活中十分常見,例如:溫度需低於某值、成本不得超過預算、 機率必須介於 0 與 1 之間等等。本章希望讓你把代數技巧與這些直覺連結起來。
4.1 匯入 SymPy 與基本設定¶
先匯入 SymPy 並建立一個實數變數 $x$:
import sympy as sp
sp.init_printing()
x = sp.symbols('x', real=True)
x
4.2 一元一次不等式¶
考慮不等式:
$2x - 3 > 1$。
手算時,我們會把 3 移到右邊,得到 $2x > 4$,再除以 2 得 $x > 2$。
在 SymPy 中,可以使用 solve_univariate_inequality:
from sympy import solve_univariate_inequality
ineq1 = 2*x - 3 > 1
solution_ineq1 = solve_univariate_inequality(ineq1, x)
ineq1, solution_ineq1
solve_univariate_inequality 的結果通常是一個區間或區間聯集,
例如 (2, oo) 表示 $x > 2$,其中 oo 代表 $+\infty$。
4.3 一元二次不等式¶
考慮:
$x^2 - 5x + 6 \ge 0$。
手算時,我們通常先因式分解:$x^2 - 5x + 6 = (x-2)(x-3)$, 再用號線分析或圖形觀察。SymPy 可以直接求解:
ineq2 = x**2 - 5*x + 6 >= 0
solution_ineq2 = solve_univariate_inequality(ineq2, x)
ineq2, solution_ineq2
若想先觀察根與因式分解,也可以搭配 factor:
expr = x**2 - 5*x + 6
sp.factor(expr), sp.solve(sp.Eq(expr, 0), x)
你可以想像這個二次函數的圖形是一條開口向上的拋物線, 在 $x=2$ 與 $x=3$ 處與 $x$ 軸相交,因此「大於等於 0」的區域會落在兩側。
ineq3 = 1/(x-1) > 0
solution_ineq3 = solve_univariate_inequality(ineq3, x)
ineq3, solution_ineq3
你可以自己畫出 $y = 1/(x-1)$ 的圖形(在 $x=1$ 有垂直漸近線), 並確認在哪些區間上函數值為正。
4.5 絕對值的定義與基本操作¶
絕對值 $|x|$ 定義為:
[ |x| = \begin{cases} x, & x \ge 0 \\ -x, & x < 0 \end{cases} ]
在 SymPy 中,絕對值用 sp.Abs 表示:
from sympy import Abs
expr_abs = Abs(x - 3)
expr_abs
可以代入具體數值觀察:
expr_abs_1 = expr_abs.subs(x, 5)
expr_abs_2 = expr_abs.subs(x, 1)
expr_abs_1, expr_abs_2
eq_abs1 = sp.Eq(Abs(x-3), 2)
sp.solve(eq_abs1, x)
也可以用分段的想法手動處理:
- 當 $x-3 \ge 0$,則 $|x-3| = x-3$。
- 當 $x-3 < 0$,則 $|x-3| = -(x-3)$。
這個觀念在絕對值不等式中會更重要。
4.7 絕對值不等式:$|x-a| < b$¶
例如:
$|x-1| < 3$。
在數學上,這表示「$x$ 與 1 的距離小於 3」,也就是:
$-3 < x-1 < 3$,進一步得到 $-2 < x < 4$。
用 SymPy:
ineq_abs = Abs(x-1) < 3
solution_abs = solve_univariate_inequality(ineq_abs, x)
ineq_abs, solution_abs
對於 $|x-a| \le b$ 的情況,也會得到封閉區間 [a-b, a+b]。
你可以試著改變數字(a, b),看看解集區間如何隨之平移與縮放。
4.8 使用 Piecewise 顯式寫出絕對值的分段定義¶
SymPy 的 Piecewise 可以幫助我們練習「分段討論」的觀念。以 $|x-3|$ 為例:
pw = sp.Piecewise((x-3, x-3 >= 0), (-(x-3), True))
pw
我們可以比較 Abs(x-3) 與 Piecewise 是否在各點相同:
for val in [-1, 0, 3, 5]:
print("x =", val)
print("Abs(x-3) =", Abs(val-3))
print("Piecewise =", pw.subs(x, val))
print("---")
x = -1 Abs(x-3) = 4 Piecewise = 4 --- x = 0 Abs(x-3) = 3 Piecewise = 3 --- x = 3 Abs(x-3) = 0 Piecewise = 0 --- x = 5 Abs(x-3) = 2 Piecewise = 2 ---
這種方式讓你更具體地理解「絕對值就是一個分段函數」, 在未來微分、積分或更複雜的不等式中會很有幫助。
x = sp.symbols('x', real=True)
ineq_error = Abs(x-10) <= 0.2
solve_univariate_inequality(ineq_error, x)
結果是一個區間,對應到實際可接受的測量範圍。這種思考方式大量出現在工程、實驗科學以及統計中的「可信區間」概念中。
4.10 啟發性例子二:解集的圖形直觀¶
考慮不等式:
$x^2 - 4 < 0$。
這等價於:$-2 < x < 2$,代表拋物線 $y = x^2 - 4$ 在 x 軸下方的區域。
我們可以用 SymPy 畫出圖形來輔助理解:
# 在支援繪圖的環境中,可視化拋物線
sp.plot(x**2 - 4, (x, -4, 4), title='y = x^2 - 4')
<sympy.plotting.backends.matplotlibbackend.matplotlib.MatplotlibBackend at 0x7f2b28bd16a0>
觀察圖形可以幫助你把「不等式」視為「某函數在某區域的正負性」。 在微積分與應用問題中,我們常需要判斷在哪些區間上函數大於或小於某個值。
4.11 啟發性例子三:雙重不等式與區間運算¶
雙重不等式例子:
$1 < 2x + 1 \le 5$。
我們可以把它拆成兩個不等式:
$1 < 2x + 1$ 與 $2x + 1 \le 5$,
解出各自的解集後取交集。SymPy 也可以利用 reduce_inequalities 處理:
from sympy.solvers.inequalities import reduce_inequalities
sol = reduce_inequalities([1 < 2*x + 1, 2*x + 1 <= 5], x)
sol
這裡代表「同時滿足」,解集是兩個區間的交集。
4.12 本章小結¶
本章你學到了:
- 如何用
solve_univariate_inequality解一元不等式(一次、二次、分式)。 - 絕對值的分段定義以及如何用 SymPy 表達與求解。
- 絕對值方程 $|x-a| = b$ 與不等式 $|x-a| < b, |x-a| \le b$ 的幾何意義(距離與區間)。
- 利用
Piecewise清楚寫出分段函數,培養分段討論的概念。 - 如何把不等式與圖形(函數的正負區域)連結起來。
請記住:
- 不等式的「答案」往往是一整個範圍(區間),而不是單一數值。
- 電腦代數系統可以幫忙算出解集,但理解解集代表什麼樣的情境或限制, 仍然仰賴你的數學直覺與生活經驗。
4.13 練習題¶
請在本 Notebook 中新增儲存格,試著完成以下練習:
基本一次不等式
(a) 解不等式 $3x - 2 \le 7$。
(b) 把解集用區間表示,並說明對應的數線圖形(可用文字描述)。二次不等式
使用solve_univariate_inequality解下列不等式:
(a) $x^2 - x - 6 > 0$
(b) $-x^2 + 4x - 3 \ge 0$
並試著畫出對應的拋物線,從圖形角度解釋為什麼解集是那樣的區間。分式不等式與定義域
解不等式 $\dfrac{x+1}{x-2} < 0$。
(a) 用 SymPy 解,寫出解集。
(b) 手動畫出號線,分析在哪些區間上分子與分母的符號。絕對值方程與不等式
(a) 解方程 $|x+2| = 5$。
(b) 解不等式 $|x-4| \le 1$,並用數線描述解的範圍。
(c) 試著用Piecewise的分段定義來手動解 $|x-4| \le 1$。雙重不等式
解不等式 $-1 < 3x - 2 \le 7$。
(a) 先拆成兩個不等式解,再取交集。
(b) 直接使用And與solve_univariate_inequality解,確認結果相同。應用情境:誤差與容許範圍
某產品設計長度為 5 公分,允許誤差為 $\pm 0.05$ 公分。
(a) 請用絕對值不等式表示這個規格條件。
(b) 用 SymPy 解出實際允許的長度範圍。
(c) 解釋為什麼這樣寫能正確反映「誤差不超過 0.05」的意思。加分題:絕對值與二次不等式的結合
解不等式 $|x-1| < x^2$。
提示:可以先用 SymPy 得到解集,再嘗試用圖形或分段討論理解其結構, 並寫下一段你對這個解集形狀的觀察與說明。