หากต้องการลบสัมประสิทธิ์หาง (trailing coefficients) ที่มีค่าเล็กน้อยออกจากพหุนามเชบิเชฟ ให้ใช้เมธอด chebyshev.chebtrim() ใน Python NumPy
เมธอดคืนค่าอาร์เรย์ 1 มิติ ที่ลบศูนย์หางออกแล้ว หากอนุกรมที่ได้ว่างเปล่า จะคืนค่าอนุกรมที่มีศูนย์เพียงตัวเดียว
"เล็ก" (Small) หมายถึง "เล็กในค่าสัมบูรณ์" และควบคุมโดยพารามิเตอร์ tol "หาง" (Trailing) หมายถึงสัมประสิทธิ์อันดับสูงสุด เช่น ใน [0, 1, 1, 0, 0] (แทน 0 + x + x² + 0·x³ + 0·x⁴) สัมประสิทธิ์อันดับ 3 และ 4 จะถูก "ตัด" (trimmed)
พารามิเตอร์
- c: อาร์เรย์ 1 มิติ ของสัมประสิทธิ์ เรียงจากอันดับต่ำสุดไปสูงสุด
- tol: องค์ประกอบหางที่มีค่าสัมบูรณ์น้อยกว่าหรือเท่ากับ tol จะถูกลบออก
ขั้นตอนการใช้งาน
1. นำเข้าไลบรารีที่จำเป็น
import numpy as np
from numpy.polynomial import chebyshev as C
2. สร้างอาร์เรย์ด้วย numpy.array() (สัมประสิทธิ์ 1 มิติ)
c = np.array([0, 5, 0, 0, 9, 0])
3. แสดงอาร์เรย์
print("Our Array...\n", c)
4. ตรวจสอบมิติ
print("\nDimensions of our Array...\n", c.ndim)
5. ตรวจสอบชนิดข้อมูล
print("\nDatatype of our Array object...\n", c.dtype)
6. ตรวจสอบรูปร่าง
print("\nShape of our Array object...\n", c.shape)
7. ลบสัมประสิทธิ์หางเล็กน้อยด้วย chebyshev.chebtrim()
print("\nResult...\n", C.chebtrim(c))
ตัวอย่างโค้ดเต็ม
import numpy as np
from numpy.polynomial import chebyshev as C
# สร้างอาร์เรย์สัมประสิทธิ์ 1 มิติ
c = np.array([0, 5, 0, 0, 9, 0])
# แสดงอาร์เรย์
print("Our Array...\n", c)
# ตรวจสอบมิติ
print("\nDimensions of our Array...\n", c.ndim)
# ตรวจสอบชนิดข้อมูล
print("\nDatatype of our Array object...\n", c.dtype)
# ตรวจสอบรูปร่าง
print("\nShape of our Array object...\n", c.shape)
# ลบสัมประสิทธิ์หางเล็กน้อย
print("\nResult...\n", C.chebtrim(c))
ผลลัพธ์ที่ได้
Our Array...
[0 5 0 0 9 0]
Dimensions of our Array...
1
Datatype of our Array object...
int64
Shape of our Array object...
(6,)
Result...
[0. 5. 0. 0. 9.]
คำอธิบายเพิ่มเติม
อาร์เรย์ต้นฉบับ: [0, 5, 0, 0, 9, 0] แทนอนุกรมเชบิเชฟ:
0·T₀ + 5·T₁ + 0·T₂ + 0·T₃ + 9·T₄ + 0·T₅
สัมประสิทธิ์ตัวสุดท้าย (อันดับ 5) เป็น 0 จึงถูกลบออก (trimmed) ตามค่าเริ่มต้นของ tol
ผลลัพธ์: [0, 5, 0, 0, 9] แทน:
0·T₀ + 5·T₁ + 0·T₂ + 0·T₃ + 9·T₄
การใช้งาน:
- ลดขนาดอาร์เรย์สัมประสิทธิ์ให้กระชับ (compact representation)
- ป้องกันการคำนวณต่อเนื่องกับศูนย์ที่ไม่จำเป็น
- ปรับปรุงประสิทธิภาพและความแม่นยำทางตัวเลข
สามารถปรับค่า tol เพื่อควบคุมเกณฑ์การตัด เช่น C.chebtrim(c, tol=1e-10)
ใช้ chebyshev.chebtrim() ลบสัมประสิทธิ์หางที่เป็นศูนย์จากอาร์เรย์ [0,5,0,0,9,0] ได้ [0,5,0,0,9] ตัด T₅ ออก