สามารถ downlaod ได้ที่ http://mirrors.psu.ac.th/pub/cran/
ผมขออนุญาตข้ามขั้นตอนการติดตั้งนะครับ
หลังจากติดตั้งและเปิดโปรแกรมมาแล้วหน้าจอก็จะประมาณนี้ครับ
ก่อนที่จะสร้างเมตริกซ์ จะต้องเข้าใจตัวแปรและสัญลักษณ์เหล่านี้ก่อนครับ
ตัวแปรจะต้องเป็นภาษาอังกฤษหรือตัวเลข โดยจะต้องขึ้นต้นด้วยตัวอักษร ไม่มีเว้นวรรค
เช่น Data1, X, x, AX, Ax9 ... โดยที่ควรจะตั้งชื่อตัวแปรให้สื่อความหมายกับข้อมูล
และต้องระมัดระวังเกี่ยวกับชื่อตัวแปรที่คล้ายกัน เนื่องจากตัวเล็กและตัวใหญ่ถือว่าเป็นตัวแปรที่ต่างกัน
เช่น Data1, DATA1, data1, ....
ส่วนของสัญลักษณ์ในเบื้องต้นมีดังนี้
สัญลักษณ์ | ความหมาย | ตัวอย่าง |
<- หรือ = | นำค่าการทำงานของฟังก์ชั่นที่อยู่ทางด้านขวาไปเก็บไว้ในตัวแปรที่ตั้งชื่อไว้ทางด้านซ้าย | k <- 10 หรือ k = 10 คือเก็บค่า 10 ไว้ใน k |
c() | นำข้อมูลมาต่อกันเป็นเวคเตอร์ (Concatination operator) | y = (1,2,5,6) คือการเก็บค่า (1,2,5,6) ใน y |
: | Sequence operator | m = 0:99 คือสร้าง 0 ถึง 99 เก็บค่าไว้ใน m |
seq(from a,to b,by c) | Sequence operator from a to b by c | p = seq(0,3,0.1) คือ สร้าง 0 ถึง 3 โดยเพิ่มค่าครั้งละ 0.1 |
rep(a,times) | การอ่านข้อมูลซ้ำ | h = rep(“VT”,3) คือสร้าง “VT” ซ้ำกัน 3 ครั้ง |
sort(a) | การเรียงลำดับจากน้อยไปหามากของ a | a = c(0,3,2,1) b = sort(a) result = 0,1,2,3 |
rev(sort(a)) | การเรียงลำดับจากมากไปหาน้อยของ a | t = rev(sort(a)) result = 3,2,1,0 |
a[i] | การอ้างอิงสมาชิกตำแหน่งที่ i ของ a | a[1] = 0, a[2] = 3 |
a[i:j] | การอ้างอิงสมาชิกตำแหน่งที่ i ถึง j ของ a | a[2:4] = 3,2,1 a[3:4] = 2,1 |
a[-i] | การอ้างอิงค่าที่ไม่ใช่ตำแหน่งที่ i ของ a | a[-3] = 0,3,1 |
a[-length(a)] | การอ้างอิงค่าที่ไม่ใช่ตำแหน่งสุดท้ายของ a | a[-length(a)] = 0,3,2 |
ต่อไปก็เป็นฟังก์ชั่นต่าง ๆ ที่ใช้ในการคำนวณเมตริกซ์
สัญลักษณ์ | ความหมาย | ตัวอย่าง |
+ | การบวก | g = 1+9 (g=10) |
- | การลบ | p = 5-2 (p=3) |
* | การคูณ | s = 4*12 (s=48) |
/ | การหาร | d = 1/9 (d=0.1111111) |
^ | การยกกำลัง | z = 2^10 (z=1024) |
sqrt() | การหารากที่สอง | n = sqrt(64) (n = 8) |
abs() | การหาค่าสัมบูรณ์ | e = abs(-21) (e = 21) |
log() | การหา Natural log | v = log(2) (v = 0.6931472) |
log10() | การหา Common log | f = log10(100) (f =2) |
exp() | การหาค่า e^x | u = exp(2) (u = 7.389056) |
%/% | การหาจำนวนเต็มที่ได้จากการหาร | r1 = 6%/%4 (r1 = 1) r2 = 19%/%3 (r2 = 6) |
%% | การหาเศษที่เหลือจากการหาร | j1 = 109%%2 (j1=1) j2 = 10%%7 (j2 = 3) |
sum(x) | คำนวณผลรวมของ x | x = (1,2,3) sum(x) = 6 |
mean(x) | คำนวณค่าเฉลี่ยเลขคณิตของ x | mean(x) = 2 |
median(x) | คำนวณค่ามัธยฐานของ x | median(x) = 2 |
sd(x) | คำนวณค่าเบี่ยงเบนมาตรฐานของ x | sd(x) = 1 |
var(x) | คำนวณค่าความแปรปรวนของ x | var(x) = 1 |
เราลองมาคำนวณเวคเตอร์กันก่อนนะครับ ก่อนที่จะไปคำนวณเมตริกซ์
สร้างตัวแปรขึ้นมา 3 ตัว
a1 = (1,2,3)
a2 = (4,5,6)
a3 = (7,8,9)
ให้หาคำตอบ
(1) 5*a1 (2) a1+a2 (3) a2-a3 (4) a3*a1
สังเกตว่าการคูณ ก็คือ การเอาสมาชิกในตำแหน่งเดียวกัน มาคูณกันเลย
ยังไม่ใช่การคูณตามหลักของเมตริกซ์นะครับ
ให้หาคำตอบ
(1) ผลรวมของ 1,2,3,...,32,33
(2) ค่าเฉลี่ย 2,4,6,...,198,200
หลังจากที่เราสร้างเวคเตอร์ขึ้นมาแล้ว เราก็จะเอาเวคเตอร์เหล่านั้นมารวมกัน เพื่อสร้างเป็นเมตริกซ์
โดยมีสัญลักษณ์ที่ใช้คือ
cbind(x1,x2,x3,...,xn) = การรวมเวคเตอร์ x1,x2,x3,...,xn ทางด้านคอลัมน์
rbind(x1,x2,x3,...,xn) = การรวมเวคเตอร์ x1,x2,x3,...,xn ทางด้านแถว
ตัวอย่างเช่น
p=(1,2,3)
q=(2,4,7)
r=(9,4,0)
นอกจากนี้ยังมีอีกสัญลักษณ์คือ
matrix(data =, nrow =, ncol =, byrow = TRUE/FALSE)
เช่น s1=(1,2,3,4,5,6,7,8,9) สร้างเป็นเมตริกซ์ 3*3
สังเกตว่าถ้าเราไม่ใส่ byrow จะมีค่าเท่ากับ FALSE
สัญลักษณ์ที่เกี่ยวข้องอีกเล็กน้อยครับ
K[i,j] เป็นการอ้างอิงสมาชิกแถวที่ i คอลัมน์ที่ j ของเมตริกซ์ K
dim(K) เป็นการตรวจสอบมิติของเมตริกซ์ K
สังเกตว่า P[5,2] = Error เพราะว่าเมตริกซ์มีมิติ 2*5 แต่เราถามถึงสมาชิกแถวที่ 5 คอลัมน์ที่ 2 ซึ่งไม่มีจริง
สัญลักษณ์ที่ใช้เกี่ยวกับการคำนวณ
สัญลักษณ์ | ความหมาย |
t() | Transpose |
det() | Determinant |
solve() | Inverse matrix |
A*B | การคูณของสมาชิกในเมตริกซ์ |
A%*%B | การคูณเมตริกซ์ |
colMeans() | การหาค่าเฉลี่ยเมตริกซ์ของแต่ละคอลัมน์ |
rowMeans() | การหาค่าเฉลี่ยเมตริกซ์ของแต่ละแถว |
colSums() | การหาค่าผลรวมเมตริกซ์ของแต่ละคอลัมน์ |
rowSums() | การหาค่าผลรวมเมตริกซ์ของแต่ละแถว |
ตัวอย่าง
สังเกตว่า A*A ไม่เท่ากับ A%*%A นะครับ ระวังอย่าใช้สัญลักษณ์ผิด
โจทย์กำหนด
(1) x+2y-z = 1
(2) 2x-y+z = 3
(3) -x+2y+3z = 7
หากจะแก้สมการเพื่อหาค่า x,y,z ก็มีได้หลายวิธี โดยวิธีพื้นฐานก็คือนำสมการเหล่านี้มาบวกลบกัน
เพื่อกำจัดตัวแปรออกไปทีละตัว จนได้คำตอบตัวแปรใดตัวแปรหนึ่งแล้วค่อยเอาไปแทนค่าหาตัวแปรที่เหลือ
ในที่นี้เราจะใช้โปรแกรม R คำนวณหาคำตอบให้ โดยคำนวณแบบเมตริกซ์
ก่อนอื่นต้องเปลี่ยนรูปร่างของสมการเหล่านี้ให้เป็นเมตริกซ์ Ax = B ก่อน
โดยดึงสัมประสิทธ์ของแต่ละตัวแปรออกมาเป็นเมตริกซ์ A ส่วนเมตริกซ์ x คือตัวแปร x,y,z
และเมตริกซ์ B คือคำตอบ
หาค่า x โดยคูณ Inverse A ด้านหน้าทั้ง 2 ข้าง
x = (Inverse A)B
จากนั้นแก้สมการโดยใชัสัญลักษณ์คือ
solve(A,B) ก็จะได้ x
หากคิดทีละขั้นตอน กำหนดเมตริกซ์ H คือ Inverse A
x = Inverse(A)%*%B นั่นคือ x = H%*%B
ถ้าใช้ solve(A,B) ก็จะได้ค่า x เท่ากัน
เพราะฉนั้นคำตอบคือ x=1, y=1, z=2
กำหนดเมตริกซ์ A และ B จงหา (A2 - B2)t
จงหา det(C)
จงหา Inverse K
กำหนดให้
(1) a-b+c+d = 8
(2) a+b-c+d = 6
(3) a+b-c-d = 0
(4) a-b-c+d = 4
จงหาค่า c
เพราะฉนั้น c=2
รบกวนหน่อยค่ะ
ตอบลบถ้า รับค่า N=100 ต้องการแสดง t=(0:N)/N
โดยให้เรียงอยู่ในคอลัมน์เดียวลงมา
ต้องทำอย่างไรค่ะ