Technology

bài tập đường trung bình

bài tập đường trung bình
bài tập đường trung bình | SiamCafe Blog
2026-03-26· อ. บอม — SiamCafe.net· 1,831 คำ

Bài Tập Đường Trung Bình — แบบฝึกหัดเส้นกึ่งกลางสามเหลี่ยม

Đường trung bình (เส้นกึ่งกลาง หรือ Midsegment) ของสามเหลี่ยมคือส่วนของเส้นตรงที่เชื่อมจุดกึ่งกลางของด้านสองด้าน คุณสมบัติสำคัญคือ เส้นกึ่งกลางขนานกับด้านที่สามและมีความยาวเท่ากับครึ่งหนึ่งของด้านนั้น ทฤษฎีนี้เป็นพื้นฐานสำคัญในเรขาคณิตที่ใช้ในการแก้โจทย์หลากหลาย บทความนี้รวบรวมแบบฝึกหัดพร้อมเฉลยและ Python tools สำหรับคำนวณและพิสูจน์

ทฤษฎีเส้นกึ่งกลาง (Midsegment Theorem)

# midsegment_theory.py — Midsegment theorem
import json
import math

class MidsegmentTheorem:
    THEOREM = {
        "statement": "เส้นกึ่งกลางของสามเหลี่ยม = ขนานกับด้านที่สาม และยาวเท่ากับครึ่งหนึ่งของด้านนั้น",
        "formal": "ถ้า M เป็นจุดกึ่งกลางของ AB และ N เป็นจุดกึ่งกลางของ AC → MN // BC และ MN = BC/2",
        "corollaries": [
            "สามเหลี่ยมมีเส้นกึ่งกลาง 3 เส้น (ต่อด้านละ 1)",
            "เส้นกึ่งกลาง 3 เส้น แบ่งสามเหลี่ยมออกเป็น 4 สามเหลี่ยมเท่ากัน",
            "สามเหลี่ยมที่เกิดจากเส้นกึ่งกลาง คล้ายกับสามเหลี่ยมเดิม (อัตราส่วน 1:2)",
        ],
    }

    PROPERTIES = {
        "parallel": "MN // BC (ขนานกับด้านที่สาม)",
        "half_length": "MN = BC / 2 (ยาวครึ่งหนึ่ง)",
        "area": "พื้นที่สามเหลี่ยม MN = 1/4 ของสามเหลี่ยมเดิม",
        "perimeter": "เส้นรอบรูปสามเหลี่ยมเส้นกึ่งกลาง = 1/2 ของสามเหลี่ยมเดิม",
    }

    def show_theorem(self):
        print("=== Midsegment Theorem ===\n")
        print(f"  {self.THEOREM['statement']}")
        print(f"\n  Formal: {self.THEOREM['formal']}")
        print(f"\n  Corollaries:")
        for c in self.THEOREM['corollaries']:
            print(f"    • {c}")

    def show_properties(self):
        print(f"\n=== Properties ===")
        for key, prop in self.PROPERTIES.items():
            print(f"  [{key}] {prop}")

theorem = MidsegmentTheorem()
theorem.show_theorem()
theorem.show_properties()

แบบฝึกหัดพื้นฐาน

# basic_exercises.py — Basic midsegment exercises
import json
import math

class BasicExercises:
    EXERCISES = {
        "ex1": {
            "question": "สามเหลี่ยม ABC มี BC = 12 cm, M เป็นจุดกึ่งกลาง AB, N เป็นจุดกึ่งกลาง AC จงหาความยาว MN",
            "solution": "MN = BC / 2 = 12 / 2 = 6 cm",
            "answer": 6,
        },
        "ex2": {
            "question": "สามเหลี่ยม PQR มีเส้นกึ่งกลาง DE = 8 cm (ขนานกับ QR) จงหาความยาว QR",
            "solution": "DE = QR / 2 → QR = DE × 2 = 8 × 2 = 16 cm",
            "answer": 16,
        },
        "ex3": {
            "question": "สามเหลี่ยม ABC มี AB = 10, BC = 14, CA = 12 จงหาเส้นรอบรูปของสามเหลี่ยมเส้นกึ่งกลาง",
            "solution": "เส้นกึ่งกลาง = ครึ่งหนึ่งของด้านตรงข้าม → เส้นรอบรูป = (10+14+12)/2 = 18",
            "answer": 18,
        },
        "ex4": {
            "question": "สามเหลี่ยม ABC มีพื้นที่ 48 ตร. ซม. จงหาพื้นที่สามเหลี่ยมที่เกิดจากเส้นกึ่งกลาง 3 เส้น",
            "solution": "พื้นที่สามเหลี่ยมเส้นกึ่งกลาง = 1/4 ของสามเหลี่ยมเดิม = 48/4 = 12 ตร. ซม.",
            "answer": 12,
        },
        "ex5": {
            "question": "สามเหลี่ยม XYZ มี XY = 6, YZ = 10, XZ = 8 จงหาความยาวเส้นกึ่งกลางทั้ง 3 เส้น",
            "solution": "m1 (ขนาน YZ) = 10/2 = 5, m2 (ขนาน XZ) = 8/2 = 4, m3 (ขนาน XY) = 6/2 = 3",
            "answer": [5, 4, 3],
        },
    }

    def show_exercises(self):
        print("=== แบบฝึกหัดพื้นฐาน ===\n")
        for key, ex in self.EXERCISES.items():
            print(f"[{key}] {ex['question']}")
            print(f"  Solution: {ex['solution']}")
            print(f"  Answer: {ex['answer']}")
            print()

exercises = BasicExercises()
exercises.show_exercises()

แบบฝึกหัดประยุกต์

# advanced_exercises.py — Advanced midsegment exercises
import json
import math

class AdvancedExercises:
    EXERCISES = {
        "ex6": {
            "question": "สามเหลี่ยม ABC มี A(0,0), B(8,0), C(4,6) จงหาพิกัดจุดกึ่งกลางและความยาวเส้นกึ่งกลางที่ขนาน BC",
            "solution": """
M = จุดกึ่งกลาง AB = ((0+8)/2, (0+0)/2) = (4, 0)
N = จุดกึ่งกลาง AC = ((0+4)/2, (0+6)/2) = (2, 3)
MN = sqrt((4-2)² + (0-3)²) = sqrt(4+9) = sqrt(13) ≈ 3.61
BC = sqrt((8-4)² + (0-6)²) = sqrt(16+36) = sqrt(52) ≈ 7.21
MN = BC/2 ✓ (sqrt(13) = sqrt(52)/2)""",
            "answer": "MN = √13 ≈ 3.61",
        },
        "ex7": {
            "question": "พิสูจน์ว่าเส้นกึ่งกลาง 3 เส้นแบ่งสามเหลี่ยมออกเป็น 4 สามเหลี่ยมที่มีพื้นที่เท่ากัน",
            "solution": """
สมมติสามเหลี่ยม ABC มีพื้นที่ S
เส้นกึ่งกลาง D(กึ่งกลาง AB), E(กึ่งกลาง BC), F(กึ่งกลาง AC)
สามเหลี่ยม ADF: ด้าน AD = AB/2, AF = AC/2, มุม A เท่ากัน
→ พื้นที่ ADF = (1/2)(AB/2)(AC/2)sin(A) = S/4
เช่นเดียวกัน: BDE = S/4, CEF = S/4, DEF = S/4
รวม 4 สามเหลี่ยม = S ✓""",
            "answer": "แต่ละสามเหลี่ยม = S/4",
        },
        "ex8": {
            "question": "สี่เหลี่ยม ABCD มีจุดกึ่งกลาง E, F, G, H ของด้าน AB, BC, CD, DA ตามลำดับ พิสูจน์ว่า EFGH เป็นสี่เหลี่ยมด้านขนาน",
            "solution": """
ใช้ทฤษฎีเส้นกึ่งกลางกับเส้นทแยงมุม:
สามเหลี่ยม ABD: EH เป็นเส้นกึ่งกลาง → EH // BD, EH = BD/2
สามเหลี่ยม BCD: FG เป็นเส้นกึ่งกลาง → FG // BD, FG = BD/2
ดังนั้น EH // FG และ EH = FG → EFGH เป็นสี่เหลี่ยมด้านขนาน ✓
(ทฤษฎี Varignon's Theorem)""",
            "answer": "EFGH เป็นสี่เหลี่ยมด้านขนาน (Varignon)",
        },
    }

    def show_exercises(self):
        print("=== แบบฝึกหัดประยุกต์ ===\n")
        for key, ex in self.EXERCISES.items():
            print(f"[{key}] {ex['question']}")
            print(f"  Answer: {ex['answer']}")
            print()

adv = AdvancedExercises()
adv.show_exercises()

Python Solver

# solver.py — Python midsegment solver
import json
import math

class MidsegmentSolver:
    CODE = """
# midsegment_solver.py — Solve midsegment problems
import math
from typing import Tuple

Point = Tuple[float, float]

class MidsegmentSolver:
    @staticmethod
    def midpoint(p1: Point, p2: Point) -> Point:
        '''Calculate midpoint'''
        return ((p1[0]+p2[0])/2, (p1[1]+p2[1])/2)
    
    @staticmethod
    def distance(p1: Point, p2: Point) -> float:
        '''Calculate distance'''
        return math.sqrt((p2[0]-p1[0])**2 + (p2[1]-p1[1])**2)
    
    @staticmethod
    def midsegment_length(side_length: float) -> float:
        '''Midsegment = half of parallel side'''
        return side_length / 2
    
    @staticmethod
    def side_from_midsegment(midsegment_length: float) -> float:
        '''Find side from midsegment'''
        return midsegment_length * 2
    
    def all_midsegments(self, a: float, b: float, c: float):
        '''Calculate all 3 midsegments from sides a, b, c'''
        return {
            'parallel_to_a': a / 2,
            'parallel_to_b': b / 2,
            'parallel_to_c': c / 2,
            'midsegment_perimeter': (a + b + c) / 2,
        }
    
    def midsegment_triangle_area(self, original_area: float) -> float:
        '''Area of midsegment triangle = 1/4 of original'''
        return original_area / 4
    
    def solve_coordinate(self, A: Point, B: Point, C: Point):
        '''Solve midsegment problem with coordinates'''
        # Midpoints
        M_ab = self.midpoint(A, B)
        M_bc = self.midpoint(B, C)
        M_ac = self.midpoint(A, C)
        
        # Sides
        AB = self.distance(A, B)
        BC = self.distance(B, C)
        AC = self.distance(A, C)
        
        # Midsegments
        ms1 = self.distance(M_ab, M_ac)  # parallel to BC
        ms2 = self.distance(M_ab, M_bc)  # parallel to AC
        ms3 = self.distance(M_ac, M_bc)  # parallel to AB
        
        # Verify theorem
        return {
            'vertices': {'A': A, 'B': B, 'C': C},
            'midpoints': {'M_AB': M_ab, 'M_BC': M_bc, 'M_AC': M_ac},
            'sides': {'AB': round(AB, 4), 'BC': round(BC, 4), 'AC': round(AC, 4)},
            'midsegments': {
                'parallel_BC': round(ms1, 4),
                'parallel_AC': round(ms2, 4),
                'parallel_AB': round(ms3, 4),
            },
            'verification': {
                'ms1 = BC/2': round(ms1, 4) == round(BC/2, 4),
                'ms2 = AC/2': round(ms2, 4) == round(AC/2, 4),
                'ms3 = AB/2': round(ms3, 4) == round(AB/2, 4),
            },
        }
    
    def is_parallel(self, p1: Point, p2: Point, p3: Point, p4: Point) -> bool:
        '''Check if line p1p2 is parallel to line p3p4'''
        dx1 = p2[0] - p1[0]
        dy1 = p2[1] - p1[1]
        dx2 = p4[0] - p3[0]
        dy2 = p4[1] - p3[1]
        
        cross = dx1 * dy2 - dy1 * dx2
        return abs(cross) < 1e-10

# solver = MidsegmentSolver()
# result = solver.solve_coordinate((0,0), (8,0), (4,6))
# print(result)
"""

    def show_code(self):
        print("=== Midsegment Solver ===")
        print(self.CODE[:600])

    def demo(self):
        print(f"\n=== Demo: Triangle (0,0), (8,0), (4,6) ===")
        A, B, C = (0,0), (8,0), (4,6)
        M_ab = ((A[0]+B[0])/2, (A[1]+B[1])/2)
        M_ac = ((A[0]+C[0])/2, (A[1]+C[1])/2)
        BC = math.sqrt((B[0]-C[0])**2 + (B[1]-C[1])**2)
        ms = math.sqrt((M_ab[0]-M_ac[0])**2 + (M_ab[1]-M_ac[1])**2)
        print(f"  M_AB = {M_ab}, M_AC = {M_ac}")
        print(f"  BC = {BC:.4f}")
        print(f"  Midsegment = {ms:.4f}")
        print(f"  BC/2 = {BC/2:.4f}")
        print(f"  Verified: {abs(ms - BC/2) < 0.001}")

solver = MidsegmentSolver()
solver.show_code()
solver.demo()

แบบฝึกหัดเพิ่มเติม

# more_exercises.py — More practice problems
import json

class MoreExercises:
    PRACTICE = {
        "p1": {
            "level": "ง่าย",
            "question": "สามเหลี่ยมมีด้าน 6, 8, 10 จงหาเส้นรอบรูปสามเหลี่ยมเส้นกึ่งกลาง",
            "answer": "(6+8+10)/2 = 12",
        },
        "p2": {
            "level": "ง่าย",
            "question": "เส้นกึ่งกลาง MN ขนานกับ BC ยาว 7 cm จงหา BC",
            "answer": "BC = 7 × 2 = 14 cm",
        },
        "p3": {
            "level": "ปานกลาง",
            "question": "สามเหลี่ยม ABC มีพื้นที่ 100 ตร. ซม. จงหาพื้นที่สามเหลี่ยม 4 รูปที่เกิดจากเส้นกึ่งกลาง",
            "answer": "แต่ละรูป = 100/4 = 25 ตร. ซม.",
        },
        "p4": {
            "level": "ปานกลาง",
            "question": "สามเหลี่ยม A(2,1), B(10,1), C(6,9) จงหาความยาวเส้นกึ่งกลางที่ขนาน AB",
            "answer": "AB = 8, เส้นกึ่งกลาง = 8/2 = 4",
        },
        "p5": {
            "level": "ยาก",
            "question": "สามเหลี่ยมหน้าจั่ว AB = AC = 13, BC = 10 จงหาความยาวเส้นกึ่งกลางทุกเส้น",
            "answer": "ขนาน BC = 5, ขนาน AB = 6.5, ขนาน AC = 6.5",
        },
        "p6": {
            "level": "ยาก",
            "question": "สี่เหลี่ยมคางหมู ABCD มี AB // CD, AB = 16, CD = 8 จุดกึ่งกลาง AD = M, BC = N จงหา MN",
            "answer": "MN = (AB + CD)/2 = (16+8)/2 = 12 (เส้นกึ่งกลางสี่เหลี่ยมคางหมู)",
        },
        "p7": {
            "level": "ยาก",
            "question": "พิสูจน์ว่า จุดกึ่งกลางของด้านทั้ง 4 ของสี่เหลี่ยมใดๆ เมื่อเชื่อมต่อกันจะได้สี่เหลี่ยมด้านขนาน",
            "answer": "ใช้ Varignon's Theorem: เส้นกึ่งกลางของสามเหลี่ยมที่แบ่งด้วยเส้นทแยงมุม ขนานกัน",
        },
    }

    def show_practice(self):
        print("=== แบบฝึกหัดเพิ่มเติม ===\n")
        for key, p in self.PRACTICE.items():
            print(f"[{key}] ({p['level']}) {p['question']}")
            print(f"  Answer: {p['answer']}")
            print()

more = MoreExercises()
more.show_practice()

FAQ - คำถามที่พบบ่อย

Q: เส้นกึ่งกลางกับเส้นมัธยฐาน (Median) ต่างกันอย่างไร?

A: เส้นกึ่งกลาง (Midsegment): เชื่อมจุดกึ่งกลางของ 2 ด้าน → ขนานกับด้านที่ 3, ยาว = ครึ่งหนึ่งของด้านที่ 3 เส้นมัธยฐาน (Median): เชื่อมจุดยอดกับจุดกึ่งกลางของด้านตรงข้าม → ผ่าน centroid มีสามเหลี่ยมละ 3 เส้นกึ่งกลาง และ 3 เส้นมัธยฐาน

Q: ทำไมพื้นที่สามเหลี่ยมเส้นกึ่งกลาง = 1/4?

A: เพราะสามเหลี่ยมเส้นกึ่งกลางมีด้านยาว = 1/2 ของสามเหลี่ยมเดิมทุกด้าน อัตราส่วนความคล้าย = 1:2 → อัตราส่วนพื้นที่ = (1/2)² = 1/4 อีกวิธี: เส้นกึ่งกลาง 3 เส้นแบ่งสามเหลี่ยมเป็น 4 รูปเท่ากัน → สามเหลี่ยมตรงกลาง = 1/4 ✓

Q: Varignon's Theorem คืออะไร?

A: จุดกึ่งกลางของด้านทั้ง 4 ของสี่เหลี่ยมใดๆ เมื่อเชื่อมต่อกันจะได้สี่เหลี่ยมด้านขนานเสมอ พิสูจน์: ใช้ทฤษฎีเส้นกึ่งกลางกับสามเหลี่ยม 2 รูปที่แบ่งด้วยเส้นทแยงมุม พื้นที่ Varignon parallelogram = 1/2 ของสี่เหลี่ยมเดิม ใช้ได้กับสี่เหลี่ยมทุกชนิด ไม่จำเป็นต้องเป็นสี่เหลี่ยมปกติ

Q: เส้นกึ่งกลางใช้ในชีวิตจริงอย่างไร?

A: สถาปัตยกรรม: คำนวณโครงสร้างหลังคาสามเหลี่ยม — ค้ำยันที่จุดกึ่งกลาง วิศวกรรม: truss bridge design — เส้นกึ่งกลางช่วยคำนวณแรง Computer Graphics: mesh subdivision — แบ่ง polygon ด้วยจุดกึ่งกลาง Navigation: หาจุดกึ่งกลางระหว่าง 2 ตำแหน่ง — GPS midpoint

📖 บทความที่เกี่ยวข้อง

bài tập đường trung bình của tam giácอ่านบทความ → đường trung bình của hình chữ nhậtอ่านบทความ → đường trung bình của hình bình hànhอ่านบทความ → đường trung bình tam giác đềuอ่านบทความ → bài 2 đường trung bình của tam giácอ่านบทความ →

📚 ดูบทความทั้งหมด →