[CS for Non-Tech] Math Zone [ไทย]
สวัสดีครับทุกคน บทความนี้อาจจะแทบไม่ได้ลง technical อะไรมากมายนัก แต่ว่าเราจะมาลองย้อนดูกันว่า ไอทีบอกว่า Developer ต้องการ Math เนี่ย ต้องการขนาดไหน และก็ถ้าให้ผมคาดเดา ไม่ใช่ทุกคนที่อ่านบทความของผมจะได้เรียนเรื่องที่เกี่ยวข้องด้านล่างที่ผมจะกล่าวถึง ดังนั้นผมอาจจะใช้คำที่เป็นกันเอง และไม่ทางการมากนัก แต่ก็ไม่ทั้งหมด ผมก็มีมุมซีเรียสเหมือนกันในบทความนี้
ถ้าทุกท่านพร้อมแล้ว เรามาปูพื้นฐานเพิ่มเติมกัน จากตรงนี้ผมคาดหวังว่าทุกคนจะสามารถ
- บวก ลบ คูณ หาร เบื้องต้นได้
Math Zone
Set Theory
เป็นสาขาหนึ่งของคณิตศาสตร์ที่เกี่ยวข้องกับชุดของวัตถุที่เรียกว่า Setใน Computer Science เซตใช้แทนชุดข้อมูล เช่น Set ของจำนวนเต็มทั้งหมดหรือ Set ของสตริงทั้งหมด
Example 1: ชุดของจำนวนเต็มทั้งหมดตั้งแต่ 1 ถึง 10 สามารถแสดงเป็น
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
ชุดนี้สามารถแสดงได้โดยใช้ set notation
{x | x is an Integer and 1 ≤ x ≤ 10}
Example 2: ชุดของตัวอักษรทั้งหมดในตัวอักษรภาษาอังกฤษสามารถแสดงเป็น
{a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z}
ชุดนี้สามารถแสดงได้โดยใช้ set notation
{x | x is a lowercase letter in the English alphabet}
นอกจากนั้นแล้วที่อยากให้ดูเพิ่มเติมคือ Power set, Subset
Venn Diagrams And Subsets
สามารถอ่านเพิ่มเติมได้ที่
Boolean Algebra
พีชคณิตบูลีนเป็นแขนงหนึ่งของพีชคณิตที่เกี่ยวข้องกับการดำเนินการทางตรรกะและค่าความจริง ในทาง Computer Science พีชคณิตบูลีนถูกใช้เพื่อแสดงการดำเนินการเชิงตรรกะในภาษาโปรแกรมและในการออกแบบวงจรอิเล็กทรอนิกส์
ตัวอย่าง Truth Table
AND
OR
NOT
XOR
ด้านล่างนี้จะเป็นตัวอย่าง หากทำการ combine ในส่วนของ Boolean expression มากกว่า 2 ตัว
Example 1
Example 2
Relation & Function
ความสัมพันธ์ (Relation) คือชุดของคู่ลำดับ ซึ่งแต่ละคู่แสดงถึงความสัมพันธ์ระหว่างวัตถุสองชิ้น ฟังก์ชัน (Function) คือประเภทของความสัมพันธ์ที่แต่ละ Input เชื่อมโยงกับ Output เพียงตัวเดียว ใน Computer Science ความสัมพันธ์และฟังก์ชันถูกใช้เพื่อแสดงความสัมพันธ์ระหว่างข้อมูล เช่น ความสัมพันธ์ระหว่างอายุและส่วนสูงของบุคคล
Relation ความสัมพันธ์คือชุดของคู่ลำดับ ซึ่งแต่ละคู่แสดงถึงความสัมพันธ์ระหว่างวัตถุสองชิ้น ตัวอย่างเช่น ผมมีชุดข้อมูล 2 ชุด
A = {1,2,3,4} และ B = {a,b,c}
และมีความสัมพันธ์ดังนี้
R = { (1,a), (2,c), (3,a), (3,b)}
สามารถเขียนเป็น Arrow Diagram ได้ดังนี้
Function ประเภทของความสัมพันธ์ที่แต่ละ Input เชื่อมโยงกับ Output เพียงตัวเดียว ตัวอย่างเช่น ฟังก์ชัน f(x) = 2x + 1 สามารถแสดงเป็นตารางของคู่อันดับ ได้ดังต่อไปนี้
Exponential & Logarithm
Exponential & Logarithm เป็นฟังก์ชันทางคณิตศาสตร์ที่มีความสำคัญในวิทยาการคอมพิวเตอร์สำหรับการแก้ปัญหาเกี่ยวกับการเติบโตและการสลายตัว เช่น การสร้างแบบจำลองการเติบโตของประชากรหรือการสลายตัวของสารกัมมันตภาพรังสี
Exponential ฟังก์ชันเลขชี้กำลังเป็นฟังก์ชันในรูปแบบ f(x) = a^x โดยที่ a เป็นจำนวนบวกที่เรียกว่าฐาน (Base) ตัวอย่างเช่น ฟังก์ชัน f(x) = 2^x แทนลำดับของเลขยกกำลัง 2
Logarithm ฟังก์ชันลอการิทึมเป็นส่วนผกผันของฟังก์ชันเลขชี้กำลัง เป็นฟังก์ชันในรูปแบบ f(x) = log a (x) โดยที่ a เป็นฐานของฟังก์ชัน Exponential ตัวอย่างเช่น ฟังก์ชัน f(x) = log 2 (x) แทนค่ากำลังของ 2 ที่เท่ากับ x
Vector
วัตถุทางคณิตศาสตร์ที่มีทั้งขนาดและทิศทาง Vector นั้นสามารถแสดงเป็นภาพกราฟิกเป็นส่วนของเส้นตรง โดยความยาวของส่วนของเส้นตรงแทนขนาดของเวกเตอร์และทิศทางของส่วนของเส้นตรงแทนทิศทางของเวกเตอร์
ตัวอย่าง ผมมี 2 Vectors ที่จะนำมาทำ operations ต่าง ๆ ด้านล่าง
u = (4,2,-9) และ v = (3,-5,2)
- Sum
u + v = (4 + 3, 2 + -5, -9 + 2) = (7, -3, -7)
- Product ถ้าสมมุติให้ x = 2
x = 2
x * u = 2 * (4, 2, -9) = (8, 4, -18)
- Dot Product (Vector => Scalar)
u · v = (4 * 3) + (2 * -5) + (-9 * 2) = 12 - 10 - 18 = -16
- Length สมมุติว่าผมอยากให้ที่บน Vector u
|u| = sqrt((4 ** 2) + (2 ** 2) + (-9 ** 2))
= sqrt(16 + 4 + 81)
= sqrt(101)
= 10.045
Matrix
Matrix เป็นอาร์เรย์ของตัวเลข หรือแถวลำดับสี่เหลี่ยมผืนผ้า ใช้แทนระบบสมการเชิงเส้น ใน Computer Science Matrix ถูกใช้เพื่อแสดงข้อมูลในลักษณะที่มีโครงสร้าง และเพื่อการดำเนินการต่าง ๆ เช่น การคูณ Matrix และการแปลงเชิงเส้น
Matrix จะประกอบไปด้วย
- Element: ค่าแต่ละค่าที่อยู่ใน Matrix
- Row: เส้นแนวนอนของ Matrix
- Column: เส้นแนวตั้งของ Matrix
- Size: แสดงเป็นจำนวนแถว และ หลัก like แถว x หลัก ตัวอย่างเช่น
A = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
มีขนาด 3 x 3
B = [[1, 2],
[4, 5],
[7, 8]
มีขนาด 2 x 3
- Identity matrix เมทริกซ์เอกลักษณ์คือเมทริกซ์สี่เหลี่ยมจัตุรัสที่มี 1s บนเส้นทแยงมุม (จากซ้ายบนไปขวาล่าง) และ 0 ในช่องอื่น ๆ
[[1, 0, 0],
[0, 1, 0],
[0, 0, 1]]
- บางครั้ง Matrix ที่มีแถวเดียว (1 Row) เรียกว่า เวกเตอร์แถว
- บางครั้ง Matrix ที่มีหลักเดียว (1 Column) เรียกว่า เวกเตอร์หลัก
- Matrix ที่ทุกตัวเป็น 0 เรียกว่า Zero Matrix
Matrix operations
ตัวอย่าง Matrix ที่จะนำมายกตัวอย่าง
A = [[1, 2],
[3, 4]] # 2 x 2
B = [[5, 6],
[7, 8]] # 2 x 2D = [[5, 6],
[7, 8],
[9, 10]] # 2 x 3
- การบวก Matrix — Size ต้องเท่ากัน
def add_matrix(A, B):
if len(A) != len(B) or len(A[0]) != len(B[0]):
raise ValueError("Matrices must be the same size")
return [[A[i][j] + B[i][j] for j in range(len(A[0]))] for i in range(len(A))]
C = add_matrix(A, B)
print(C) # Output: [[6, 8], [10, 12]]
- การคูณ Matrix ด้วย Scalar — คูณแต่ละตัว
def scalar_product(x, A):
return [[x * A[i][j] for j in range(len(A[0]))] for i in range(len(A))]
x = 2
C = scalar_product(x, A)
print(C) # Output: [[2, 4], [6, 8]]
- การคูณ Matrix ด้วย Matrix — จำนวน Column ใน Matrix แรกจะต้องเท่ากับจำนวน Row ใน Matrix ที่สอง
def matrix_product(A, B):
if len(A[0]) != len(B):
raise ValueError("Number of columns in A must be equal to the number of rows in B")
return [[sum(A[i][k] * B[k][j] for k in range(len(A[0]))) for j in range(len(B[0]))] for i in range(len(A))]
C = matrix_product(A, D)
print(C) # Output: [[47, 52], [109, 122]]
- Matrix Transpose — สลับที่ Row กับ Column เช่น ตำแหน่ง A12 จะไปอยู่ที่ A21 Size จาก m x n จะกลายเป็น n x m
def transpose(A):
return [[A[j][i] for j in range(len(A))] for i in range(len(A[0]))]
D_transpose = transpose(D)
print(D_transpose) # Output: [[5, 7, 9], [6, 8, 10]
Combinatorial analysis
การวิเคราะห์เชิงการจัด เป็นสาขาหนึ่งของคณิตศาสตร์ที่เกี่ยวข้องกับการศึกษาการนับและการจัดเรียงวัตถุ ประกอบด้วยหัวข้อต่างๆ เช่น การเรียงสับเปลี่ยน การผสม และฟังก์ชันการสร้าง ใช้เพื่อนับจำนวนวิธีที่ชุดของวัตถุสามารถจัดเรียงหรือรวมกันได้ การทำความเข้าใจการวิเคราะห์เชิงผสมจะเป็นประโยชน์สำหรับการแก้ปัญหาเกี่ยวกับการนับ
Counting (การนับ) เกี่ยวข้องกับการนับจำนวนวิธีที่เหตุการณ์หรือปัญหาบางอย่างสามารถเกิดขึ้นได้ ตัวอย่างเช่น
Example ต้องการทำป้ายทะเบียนรถ 2 ตัวหน้า เป็น Uppercase English Letter และตัวเลข 4 ตัว โดยที่ตัวเลขตัวแรก ไม่เอาเลข 0 จะทำป้ายได้กี่ป้าย
__-____ << ตัวอย่างของ Format ป้ายของเรา
A-Z มี 26 ตัวอักษร
0-9 มี 10 ตัวเลข
26 x 26 x 9 x 10 x 10 x 10 = 70,656,000 วิธี
Factorial สัญลักษณ์แทนผลคูณของจำนวนเต็มบวกจาก 1 ถึง n
6! = 1 x 2 x 3 x 4 x 5 x 6 = 720
หรือ
n! = n x (n - 1) x (n - 2) x ... x 2 x 1
# 0! = 1
Binomial coefficient (สัมประสิทธิ์ทวินาม)
เป็นที่รู้จักกันคือ Choose function (nCr) เราสามารถเขียนสัญลักษณ์ได้เป็นด้านล่าง (ขอโทษด้วยนะครับ ใช้ Mouse วาด 🥹)
โดยมีสมการสามารถเขียนได้ดังนี้
n = จำนวนของสิ่งต่าง ๆ
r = จำนวนที่เราเลือก
แล้วไอเจ้าเนี้ย มันดันไปโผล่ใน Binomial theorem (ทฤษฎีบททวินาม) ตรง (n,k)
ดังนั้นถ้าเราขี้เกียจคำนวณ แต่ดันจำ Pascal’s Triangle ได้ หรือรู้จักกับ Pascal’s Triangle ก็แปลว่าถ้า n = 3
สมการจะได้เป็น
= x^3 + 3x^2y + 3xy^2 + y^3
เพิ่มเติม ที่มาของไอเจ้าสามเหลี่ยมนี้
Permutation (การเรียงสับเปลี่ยน) การจัดเรียงของเซตของสิ่งต่าง ๆ n สิ่งในจำนวนที่กำหนดให้ จะเรียกว่า วิธีเรียงสับเปลี่ยน อาจจะเรียงทั้งหมด หรือเรียงแค่ r ตัวจาก element n ตัว (r-permutation)
Example ผมมีเซตตัวอักษร {A, B, C, D}
Permutation ผมสามารถเรียงสับเปลี่ยนได้ทั้งหมด 24 วิธี
ABCD, ABDC, ACBD, ACDB, ADBC, ADCB,
BACD, BADC, BCAD, BCDA, BDAC, BDCA,
CABD, CADB, CBAD, CBDA, CDAB, CDBA,
DABC, DACB, DBAC, DBCA, DCAB, DCBA
# P(n,n) = n!
r-Permutation โดย r = 2 ผมสามารถเรียงสับเปลี่ยนได้ทั้งหมด 12 ตัว
AB, AC, AD, BA, BC, BD
CA, CB, CD, DA, DB, DC
# P(n,r) = P(4,2) = 4!/2! = 4 x 3 = 12
ถ้ามีตัวซ้ำ นับจำนวนตัวซ้ำ แล้วเอามาหารซะ
Combination (การจัดหมู่) สมมุติว่าเรามีสิ่งของ n สิ่ง การจัดหมู่ คือการนำสิ่งของ n สิ่งมาทีละ r สิ่งโดยไม่คำนึงถึงลำดับ (r-combination)
คุ้น ๆ ละสิ สมการสุดท้ายด้านบน ซึ่งก็คือไอเจ้า Choose function ของเรานั่นเอง
Example น้องมาร์ทเดินไป Shopping Mall เพื่อซื้อเสื้อผ้าแต่งตัว ที่ร้านมีเสื้อ 8 แบบ กางเกงยีนส์ 5 แบบ กระเป๋าสะพาย 3 แบบ น้องมาร์ทมีเงินพอซื้อแค่เสื้อ 3 ตัว กางเกง 2 ตัว และ กระเป๋าใบเดียว (1 ใบ) น้องมาร์ทจะมีวิธีเลือกซื้อได้กี่แบบ
- เสื้อ
8! / 3!(8 - 3)! = 8! / 3!5!
= 56
- กางเกง
5! / 2!(5 - 2)! = 5! / 2!3!
= 10
- กระเป๋า
3! / 1!(3 - 1)! = 3! / 1!2!
= 3
- เอามารวมกัน
56 x 10 x 3 = 1680
คำตอบคือได้ 1680 วิธี ที่น้องมาร์ทสามารถเลือกซื้อใส่ไปเที่ยวได้
Propositional calculus (ตรรกศาสตร์)
แคลคูลัสเชิงประพจน์เป็นสาขาหนึ่งของตรรกศาสตร์สัญลักษณ์ที่เกี่ยวข้องกับการจัดการประพจน์ ซึ่งเป็นข้อความที่สามารถเป็นจริงหรือเท็จก็ได้ แคลคูลัสเชิงประพจน์ประกอบด้วยกฎสำหรับการจัดการนิพจน์เชิงประพจน์ เช่น การใช้ตัวดำเนินการเชิงตรรกะ (และ หรือ ไม่, ถ้า…แล้ว, ก็ต่อเมื่อ)
- และ p ∧ q
- หรือ p ∨ q
- ไม่ ¬p
- ถ้า…แล้ว p → q
- ก็ต่อเมื่อ p ↔ q
อ่านเพิ่มเติม
Statistics
สถิติเป็นสาขาหนึ่งของคณิตศาสตร์ที่เกี่ยวข้องกับการรวบรวม การวิเคราะห์ การตีความ การนำเสนอ และการจัดระเบียบข้อมูล การทำความเข้าใจแนวคิดและเทคนิคทางสถิติจะเป็นประโยชน์ในการทำงานกับชุดข้อมูลและตัดสินใจอย่างรอบรู้โดยอิงจากการวิเคราะห์ทางสถิติ
Mean: Mean หรือ ค่าเฉลี่ย คือผลรวมของค่าทั้งหมดในชุดข้อมูลหารด้วยจำนวนค่าในชุดข้อมูล เป็นการวัดค่า “กลาง” ในชุดข้อมูล
# define the data set
data = [1, 2, 2, 3, 3, 3, 4]
# calculate the mean
mean = sum(data) / len(data)
print("Mean:", mean) # Mean: 2.5714285714285716
Median: ค่ามัธยฐานคือค่ากลางในชุดข้อมูลเมื่อจัดเรียงจากน้อยไปหามาก เป็นการวัดค่า “กลาง” ในชุดข้อมูล ถ้าชุดข้อมูลมีค่าเป็นเลขคี่ ค่ามัธยฐานจะเป็นค่ากลาง หากชุดข้อมูลมีค่าเป็นเลขคู่ ค่ามัธยฐานคือค่าเฉลี่ยของค่ากลางสองค่า
# define the data set
data = [1, 2, 2, 3, 3, 3, 4]
# calculate the median
data.sort()
if len(data) % 2 == 0:
median = (data[len(data) // 2] + data[len(data) // 2 - 1]) / 2
else:
median = data[len(data) // 2]
print("Median:", median) # Median: 2.5
Mode: โหมด (Mode) คือค่าที่เกิดขึ้นบ่อยที่สุดในชุดข้อมูล เป็นการวัดค่า “ที่พบมากที่สุด” ในชุดข้อมูล หากมีหลายค่าที่เกิดขึ้นด้วยความถี่สูงสุดเดียวกัน ชุดข้อมูลนั้นมีหลายโหมด
# define the data set
data = [1, 2, 2, 3, 3, 3, 4]
# calculate the mode
mode = max(data, key=data.count)
print("Mode:", mode) # Mode: 3
เป็นไงกันบ้างครับ ผมต้องบอกว่าบางทีเขียนออกมาเป็นบทความก็เสียว ๆ ผิดเหมือนกันนะ แถมบทความนี้มาเล่นกับคณิตศาสตร์อีกต่างหาก หวังว่าทุกคนจะได้รับประโยชน์ไปไม่มากก็น้อยนะครับ
ไว้เจอกันใหม่บทความต่อไปของซีรีย์ครับ สวัสดีครับ ขอให้ทุกคนมีความสุขครับ ✌️
FB ไว้ตอบปัญหา: Thanaphoom Babparn
FB Page ไว้ตอบปัญหา & แชร์ไปเรื่อย: TP Coder
LinkedIn: Thanaphoom Babparn
Linktree: https://linktr.ee/tpbabparn