[CS for Non-Tech] Math Zone [ไทย]

Thanaphoom Babparn
7 min readJan 3, 2023

--

Photo by Antoine Dautry on Unsplash

สวัสดีครับทุกคน บทความนี้อาจจะแทบไม่ได้ลง 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

Source: Set Theory: 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 2
D = [[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

--

--

Thanaphoom Babparn

Software engineer who wanna improve himself and make an impact on the world.