ทฤษฎีบทค่ากลาง (Mean Value Theorem) คืออะไร
ทฤษฎีบทค่ากลาง (Mean Value Theorem หรือ MVT) เป็นทฤษฎีบทพื้นฐานที่สำคัญที่สุดทฤษฎีหนึ่งในแคลคูลัส กล่าวว่าถ้าฟังก์ชัน f ต่อเนื่องบนช่วงปิด [a, b] และหาอนุพันธ์ได้บนช่วงเปิด (a, b) แล้วจะมีจุด c อย่างน้อยหนึ่งจุดใน (a, b) ที่ f'(c) = (f(b) - f(a)) / (b - a)
ความหมายทางเรขาคณิตคือ มีจุดอย่างน้อยหนึ่งจุดบนกราฟที่เส้นสัมผัส (tangent line) ขนานกับเส้นตรงที่ลากจากจุด (a, f(a)) ไปยังจุด (b, f(b)) ซึ่งก็คือ secant line นั่นเอง
ทฤษฎีบทค่ากลางมีเงื่อนไข 2 ข้อที่ต้องเป็นจริงคือ f ต้องต่อเนื่อง (continuous) บนช่วงปิด [a, b] และ f ต้องหาอนุพันธ์ได้ (differentiable) บนช่วงเปิด (a, b) ถ้าเงื่อนไขข้อใดข้อหนึ่งไม่เป็นจริงทฤษฎีบทนี้ใช้ไม่ได้
ทฤษฎีบทค่ากลางเป็นรากฐานสำหรับทฤษฎีบทอื่นๆอีกมากเช่น L'Hôpital's Rule, Taylor's Theorem และ Fundamental Theorem of Calculus นอกจากนี้ยังใช้ในการพิสูจน์ว่าฟังก์ชันที่มีอนุพันธ์เป็นศูนย์ทุกจุดจะเป็นฟังก์ชันค่าคงที่
การพิสูจน์ทฤษฎีบทค่ากลางของ Lagrange
พิสูจน์ Mean Value Theorem โดยใช้ Rolle's Theorem เป็นฐาน
# การพิสูจน์ Mean Value Theorem (Lagrange's MVT)
#
# กำหนดให้:
# - f ต่อเนื่องบน [a, b]
# - f หาอนุพันธ์ได้บน (a, b)
#
# ต้องพิสูจน์ว่า:
# มี c ∈ (a, b) ที่ f'(c) = (f(b) - f(a)) / (b - a)
#
# วิธีพิสูจน์:
# ขั้นที่ 1: สร้างฟังก์ชันช่วย g(x)
# สมการเส้นตรงจาก (a, f(a)) ถึง (b, f(b)):
# L(x) = f(a) + [(f(b)-f(a))/(b-a)] * (x-a)
#
# กำหนด g(x) = f(x) - L(x)
# g(x) = f(x) - f(a) - [(f(b)-f(a))/(b-a)] * (x-a)
#
# ขั้นที่ 2: ตรวจสอบเงื่อนไขของ Rolle's Theorem
# g(a) = f(a) - f(a) - 0 = 0 ✓
# g(b) = f(b) - f(a) - [(f(b)-f(a))/(b-a)]*(b-a)
# = f(b) - f(a) - f(b) + f(a) = 0 ✓
# g ต่อเนื่องบน [a, b] ✓ (เพราะ f ต่อเนื่องและ L ต่อเนื่อง)
# g หาอนุพันธ์ได้บน (a, b) ✓
#
# ขั้นที่ 3: ใช้ Rolle's Theorem
# เนื่องจาก g(a) = g(b) = 0 และเป็นไปตามเงื่อนไข
# ดังนั้นมี c ∈ (a, b) ที่ g'(c) = 0
#
# ขั้นที่ 4: หา g'(c)
# g'(x) = f'(x) - (f(b)-f(a))/(b-a)
# g'(c) = 0
# f'(c) - (f(b)-f(a))/(b-a) = 0
# f'(c) = (f(b)-f(a))/(b-a) ∎ (Q.E.D.)
#
# ตัวอย่าง: f(x) = x² บน [1, 3]
# f(1) = 1, f(3) = 9
# (f(3)-f(1))/(3-1) = (9-1)/2 = 4
# f'(x) = 2x
# f'(c) = 4 → 2c = 4 → c = 2
# c = 2 ∈ (1, 3) ✓
ทฤษฎีบทค่ากลางของ Rolle และความสัมพันธ์
Rolle's Theorem เป็นกรณีพิเศษของ Mean Value Theorem ที่ f(a) = f(b)
# Rolle's Theorem
#
# กำหนดให้:
# - f ต่อเนื่องบน [a, b]
# - f หาอนุพันธ์ได้บน (a, b)
# - f(a) = f(b)
#
# สรุป: มี c ∈ (a, b) ที่ f'(c) = 0
#
# การพิสูจน์:
# กรณี 1: f(x) = f(a) สำหรับทุก x ∈ [a, b]
# → f เป็นฟังก์ชันค่าคงที่ → f'(c) = 0 สำหรับทุก c ∈ (a, b)
#
# กรณี 2: มี x₀ ∈ (a, b) ที่ f(x₀) > f(a)
# → โดย Extreme Value Theorem f มีค่าสูงสุดบน [a, b]
# → ค่าสูงสุดเกิดที่จุด c ∈ (a, b) (ไม่ใช่ที่ปลาย เพราะ f(a)=f(b)
คำนวณและพิสูจน์ด้วย Python SymPy
ใช้ Python และ SymPy สำหรับคำนวณและ verify ทฤษฎีบทค่ากลาง
#!/usr/bin/env python3
# mvt_calculator.py — คำนวณ Mean Value Theorem ด้วย SymPy
from sympy import *
x = Symbol('x')
def verify_mvt(f_expr, a_val, b_val):
"""ตรวจสอบ Mean Value Theorem สำหรับฟังก์ชันที่กำหนด"""
f = Lambda(x, f_expr)
f_prime = Lambda(x, diff(f_expr, x))
fa = f(a_val)
fb = f(b_val)
slope = (fb - fa) / (b_val - a_val)
print(f"f(x) = {f_expr}")
print(f"f'(x) = {diff(f_expr, x)}")
print(f"[a, b] = [{a_val}, {b_val}]")
print(f"f({a_val}) = {fa}")
print(f"f({b_val}) = {fb}")
print(f"Secant slope = (f(b)-f(a))/(b-a) = {slope}")
# หาค่า c ที่ f'(c) = slope
equation = Eq(f_prime(x), slope)
solutions = solve(equation, x)
valid_c = [s for s in solutions if a_val < s < b_val]
print(f"\nSolving f'(c) = {slope}:")
print(f"All solutions: {solutions}")
print(f"Valid c ∈ ({a_val}, {b_val}): {valid_c}")
for c_val in valid_c:
print(f"\n c = {c_val}")
print(f" f'({c_val}) = {f_prime(c_val)} = {float(f_prime(c_val)):.6f}")
print(f" Secant slope = {float(slope):.6f}")
print(f" Match: {abs(float(f_prime(c_val)) - float(slope)) < 1e-10}")
return valid_c
# ตัวอย่างที่ 1: f(x) = x³ - 3x + 2 บน [-2, 2]
print("=" * 50)
print("Example 1: f(x) = x³ - 3x + 2 on [-2, 2]")
print("=" * 50)
verify_mvt(x**3 - 3*x + 2, -2, 2)
# ตัวอย่างที่ 2: f(x) = sin(x) บน [0, π]
print("\n" + "=" * 50)
print("Example 2: f(x) = sin(x) on [0, π]")
print("=" * 50)
verify_mvt(sin(x), 0, pi)
# ตัวอย่างที่ 3: f(x) = ln(x) บน [1, e]
print("\n" + "=" * 50)
print("Example 3: f(x) = ln(x) on [1, e]")
print("=" * 50)
verify_mvt(ln(x), 1, E)
# ตัวอย่างที่ 4: f(x) = √x บน [0, 4]
print("\n" + "=" * 50)
print("Example 4: f(x) = √x on [0, 4]")
print("=" * 50)
verify_mvt(sqrt(x), 0, 4)
# พิสูจน์ Rolle's Theorem
print("\n" + "=" * 50)
print("Rolle's Theorem: f(x) = x² - 4x + 3 on [1, 3]")
print("=" * 50)
f_rolle = x**2 - 4*x + 3
print(f"f(1) = {f_rolle.subs(x, 1)}, f(3) = {f_rolle.subs(x, 3)}")
print(f"f(a) = f(b) = 0 ✓")
c_vals = solve(diff(f_rolle, x), x)
print(f"f'(x) = {diff(f_rolle, x)}")
print(f"f'(c) = 0 → c = {c_vals}")
# pip install sympy
การประยุกต์ใช้ทฤษฎีบทค่ากลางในการวิเคราะห์
ตัวอย่างการใช้ MVT ในปัญหาจริงและการพิสูจน์อสมการ
#!/usr/bin/env python3
# mvt_applications.py — การประยุกต์ใช้ Mean Value Theorem
import numpy as np
import matplotlib.pyplot as plt
from sympy import *
x = Symbol('x')
def plot_mvt(f_expr, a_val, b_val, title="Mean Value Theorem"):
"""วาดกราฟแสดง MVT"""
f = lambdify(x, f_expr, 'numpy')
f_prime = lambdify(x, diff(f_expr, x), 'numpy')
fa, fb = f(a_val), f(b_val)
slope = (fb - fa) / (b_val - a_val)
# หา c
c_solutions = solve(Eq(diff(f_expr, x), slope), x)
c_vals = [float(s) for s in c_solutions if a_val < s < b_val]
xs = np.linspace(float(a_val) - 0.5, float(b_val) + 0.5, 500)
ys = f(xs)
plt.figure(figsize=(10, 6))
plt.plot(xs, ys, 'b-', linewidth=2, label=f'f(x) = {f_expr}')
# Secant line
secant_y = fa + slope * (xs - float(a_val))
plt.plot(xs, secant_y, 'r--', linewidth=1, label='Secant line')
# Tangent line at c
for c in c_vals:
fc = f(c)
tangent_y = fc + slope * (xs - c)
plt.plot(xs, tangent_y, 'g--', linewidth=1, label=f'Tangent at c={c:.3f}')
plt.plot(c, fc, 'go', markersize=8)
plt.plot([a_val, b_val], [fa, fb], 'ro', markersize=8)
plt.xlabel('x')
plt.ylabel('f(x)')
plt.title(title)
plt.legend()
plt.grid(True, alpha=0.3)
plt.savefig(f'mvt_plot.png', dpi=150, bbox_inches='tight')
plt.show()
# Application 1: พิสูจน์อสมการด้วย MVT
# พิสูจน์ว่า |sin(a) - sin(b)| ≤ |a - b|
print("Application 1: |sin(a) - sin(b)| <= |a - b|")
print("พิสูจน์:")
print(" f(x) = sin(x), f'(x) = cos(x)")
print(" โดย MVT: ∃c ที่ sin(b)-sin(a) = cos(c)(b-a)")
print(" |sin(b)-sin(a)| = |cos(c)||b-a| ≤ |b-a|")
print(" เพราะ |cos(c)| ≤ 1 สำหรับทุก c")
print()
# ทดสอบด้วยตัวเลข
a_test, b_test = 0.5, 2.3
lhs = abs(np.sin(a_test) - np.sin(b_test))
rhs = abs(a_test - b_test)
print(f" Test: |sin({a_test})-sin({b_test})| = {lhs:.6f}")
print(f" |{a_test}-{b_test}| = {rhs:.6f}")
print(f" {lhs:.6f} <= {rhs:.6f} ✓")
# Application 2: พิสูจน์ว่า e^x ≥ 1+x
print("\nApplication 2: e^x >= 1+x for all x")
print("พิสูจน์:")
print(" f(t) = e^t บน [0, x] (สมมุติ x > 0)")
print(" โดย MVT: e^x - e^0 = e^c * (x - 0) สำหรับ c ∈ (0, x)")
print(" e^x - 1 = e^c * x")
print(" เนื่องจาก c > 0 → e^c > 1")
print(" ดังนั้น e^x - 1 > x → e^x > 1 + x")
# Application 3: หาค่า approximate
print("\nApplication 3: Approximate √(26)")
print(" f(x) = √x, a=25, b=26")
print(" f'(x) = 1/(2√x)")
print(" โดย MVT: √26 - √25 ≈ f'(25) * (26-25)")
print(f" √26 ≈ 5 + 1/(2*5) = 5 + 0.1 = 5.1")
print(f" Actual: √26 = {np.sqrt(26):.6f}")
# วาดกราฟ
plot_mvt(x**2, 1, 3, "MVT: f(x) = x² on [1, 3]")
Cauchy Mean Value Theorem และ Extended Versions
ทฤษฎีบทค่ากลางแบบ Cauchy เป็นรูปทั่วไปที่ใช้กับ 2 ฟังก์ชัน
# Cauchy Mean Value Theorem (Generalized MVT)
#
# กำหนดให้:
# - f, g ต่อเนื่องบน [a, b]
# - f, g หาอนุพันธ์ได้บน (a, b)
# - g'(x) ≠ 0 สำหรับทุก x ∈ (a, b)
#
# สรุป: มี c ∈ (a, b) ที่
# f'(c) / g'(c) = (f(b) - f(a)) / (g(b) - g(a))
#
# การพิสูจน์:
# กำหนด h(x) = f(x) - [(f(b)-f(a))/(g(b)-g(a))] * g(x)
#
# h(a) = f(a) - [(f(b)-f(a))/(g(b)-g(a))] * g(a)
# h(b) = f(b) - [(f(b)-f(a))/(g(b)-g(a))] * g(b)
#
# h(b) - h(a) = [f(b)-f(a)] - [(f(b)-f(a))/(g(b)-g(a))] * [g(b)-g(a)]
# = [f(b)-f(a)] - [f(b)-f(a)] = 0
#
# ดังนั้น h(a) = h(b)
# โดย Rolle's Theorem: ∃c ∈ (a, b) ที่ h'(c) = 0
# h'(c) = f'(c) - [(f(b)-f(a))/(g(b)-g(a))] * g'(c) = 0
# f'(c)/g'(c) = (f(b)-f(a))/(g(b)-g(a)) ∎
# ตัวอย่าง: ใช้ Cauchy MVT พิสูจน์ L'Hôpital's Rule
#
# ถ้า lim(x→a) f(x) = 0 และ lim(x→a) g(x) = 0
# โดย Cauchy MVT บน [a, x]:
# f(x)/g(x) = f(x)-f(a) / g(x)-g(a) = f'(c)/g'(c)
# เมื่อ x → a, c → a
# ดังนั้น lim(x→a) f(x)/g(x) = lim(x→a) f'(x)/g'(x)
from sympy import *
x = Symbol('x')
# ตัวอย่าง Cauchy MVT
# f(x) = x², g(x) = x³ บน [1, 2]
f_expr = x**2
g_expr = x**3
a, b = 1, 2
f_diff = (f_expr.subs(x, b) - f_expr.subs(x, a))
g_diff = (g_expr.subs(x, b) - g_expr.subs(x, a))
ratio_fg = f_diff / g_diff
f_prime = diff(f_expr, x)
g_prime = diff(g_expr, x)
ratio_prime = f_prime / g_prime
c_val = solve(Eq(ratio_prime, ratio_fg), x)
print(f"f(x) = {f_expr}, g(x) = {g_expr}")
print(f"[f(b)-f(a)]/[g(b)-g(a)] = {f_diff}/{g_diff} = {ratio_fg}")
print(f"f'(x)/g'(x) = {ratio_prime}")
print(f"Solving: c = {c_val}")
valid = [c for c in c_val if 1 < c < 2]
print(f"Valid c ∈ (1, 2): {valid}")
FAQ คำถามที่พบบ่อย
Q: Mean Value Theorem ใช้ไม่ได้เมื่อไหร่?
A: MVT ใช้ไม่ได้เมื่อฟังก์ชันไม่ต่อเนื่องบนช่วงปิด [a, b] หรือหาอนุพันธ์ไม่ได้บนช่วงเปิด (a, b) ตัวอย่างเช่น f(x) = |x| บน [-1,1] ต่อเนื่องแต่หาอนุพันธ์ไม่ได้ที่ x=0 ทำให้ไม่มี c ที่ f'(c) = 0 แม้ว่า secant slope จะเป็น 0
Q: Rolle's Theorem กับ Mean Value Theorem ต่างกันอย่างไร?
A: Rolle's Theorem เป็นกรณีพิเศษของ MVT ที่ f(a) = f(b) ทำให้ secant slope เป็น 0 จึงสรุปได้ว่ามี c ที่ f'(c) = 0 ส่วน MVT เป็นรูปทั่วไปที่ไม่จำเป็นต้อง f(a) = f(b) ในทางปฏิบัติ MVT ถูกพิสูจน์โดยใช้ Rolle's Theorem เป็นฐาน
Q: ค่า c ใน MVT หาได้เสมอไหม?
A: MVT รับประกันว่า c มีอยู่จริง แต่อาจหาค่าที่แน่นอนไม่ได้เสมอ สำหรับฟังก์ชันง่ายๆเช่น polynomial สามารถหาค่า c ได้โดยแก้สมการ f'(c) = (f(b)-f(a))/(b-a) แต่สำหรับฟังก์ชันซับซ้อนอาจต้องใช้วิธี numerical เช่น Newton's Method หรือใช้ SymPy คำนวณ
Q: MVT ประยุกต์ใช้ในชีวิตจริงอย่างไร?
A: ตัวอย่างคลาสสิกคือถ้าขับรถจากเมือง A ไปเมือง B ระยะทาง 120 กม. ใช้เวลา 1 ชั่วโมง ความเร็วเฉลี่ย 120 กม./ชม. โดย MVT การันตีว่ามีช่วงเวลาหนึ่งที่ความเร็วจริงเท่ากับ 120 กม./ชม. พอดี ใช้ในฟิสิกส์สำหรับพิสูจน์ทฤษฎีเกี่ยวกับความเร็วและความเร่ง
Q: SymPy สามารถพิสูจน์ทฤษฎีบทได้จริงหรือ?
A: SymPy ไม่ได้พิสูจน์ทฤษฎีบทโดยตรง แต่ช่วยตรวจสอบ (verify) ว่าทฤษฎีบทใช้ได้กับฟังก์ชันเฉพาะ โดยคำนวณหาค่า c ที่ทำให้สมการเป็นจริงและตรวจสอบว่า c อยู่ในช่วงที่กำหนด สำหรับการพิสูจน์ทางคณิตศาสตร์จริงๆต้องใช้ proof assistant เช่น Lean, Coq หรือ Isabelle
