Hướng dẫn sử dụng phần mềm R

pdf 18 trang ngocly 1370
Bạn đang xem tài liệu "Hướng dẫn sử dụng phần mềm R", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfhuong_dan_su_dung_phan_mem_r.pdf

Nội dung text: Hướng dẫn sử dụng phần mềm R

  1. Hướng d ẫn sử d ụng PHẦN MỀM R (Cho h ọc ph ần Toán cao c ấp)
  2. LỜI NÓI ĐẦ U “Gi ải th ưởng ph ần m ềm mã ngu ồn m ở t ốt nh ất: Bossie Awards 2010 ″ R là ph ần m ềm phân tích d ữ li ệu được xây d ựng b ởi Ross Ihaka và Robert Gentleman t ại The University of Auckland, New Zealand, ti ếp t ục được phát tri ển b ởi nhóm R Development Core Team . R là m ột ph ần m ềm hoàn toàn mi ễn phí. Tuy mi ễn phí, nh ưng ch ức n ăng c ủa R không thua kém các ph ần m ềm th ươ ng m ại. Tất c ả nh ưng ph ươ ng pháp, mô hình mà các ph ần m ềm th ươ ng m ại có th ể làm được thì R c ũng có th ể làm được. R có l ợi th ế là kh ả n ăng phân tích bi ểu đồ tuy ệt v ời. Không m ột ph ần m ềm nào có th ể sánh v ới R v ề ph ần bi ểu đồ! Tuy nhiên, R có cái b ất l ợi là dùng l ệnh (gi ống nh ư Stata hay SAS) ch ứ không dùng “menu” nh ư SPSS. Điều này có ngh ĩa là đối v ới ng ười “l ười bi ếng” thì s ẽ th ấy R b ất ti ện. Nh ưng v ới ng ười mu ốn n ắm l ấy nh ững c ơ ch ế c ăn b ản c ủa R, thì s ẽ thích ngôn ng ữ này ngay. Đối v ới nh ững ng ười gi ỏi vi tính và toán, R là ph ần m ềm lí t ưởng. Tài li ệu ng ắn này chúng tôi vi ết d ựa theo m ục Help của R nh ằm giúp các b ạn sinh viên làm quen với vi ệc s ử d ụng m ột ph ần m ềm toán h ọc để gi ải các bài toán c ủa h ọc ph ần Toán cao cấp. LÊ V ĂN TU ẤN – VŨ VĂN SONG NGUY ỄN TH Ị HOA - NGUY ỄN TH Ị HUY ỀN1 1 GV & SV Khoa Tin h ọc Th ương m ại - Đại h ọc Th ươ ng m ại
  3. MỤC L ỤC Ch ủ đề 0. Download và cài đặt Ch ủ đề 1. Tính toán trên tr ường s ố th ực Ch ủ đề 2. Ma tr ận và định th ức Ch ủ đề 3. Gi ải h ệ ph ươ ng trình tuy ến tính Ch ủ đề 4. V ẽ đồ th ị Ch ủ đề 5. Đạo hàm Ch ủ đề 6. Tích phân hàm m ột bi ến Ch ủ đề 7. Ph ươ ng trình vi phân Ch ủ đề 8. Ph ươ ng trình sai phân
  4. Ch ủ đề 0. Download và cài đặt Bạn truy c ập vào trang ch ủ: (giao di ện nh ư hình ở d ưới), click vào download R bạn đến trang CRAN Mirrors, click m ột link nào đó, b ạn s ẽ đế n trang The Comprehensive R Archive Network, click vào Download R for Windows , click ti ếp install R for the first time , click ti ếp Download R 2.15.0 for Windows sẽ download được file.R-2.15.0-win.exe (tháng 4/2012), cài đặt nh ư các ph ần mềm khác. Sau khi cài đặt, Shoutcut để ch ạy ph ần m ềm sẽ xu ất hi ện trên Desktop, b ạn click để ch ạy ph ần mềm. C ửa s ổ l ệnh c ủa ph ần m ềm s ẽ nh ư hình d ưới, t ại d ấu nh ắc “ >” b ạn có th ể gõ câu l ệnh và nh ấn Enter (↵) để yêu c ầu ph ần m ềm th ực hi ện câu l ệnh. Ghi chú:B ạn có th ể vào mục Help trên menu để s ử dụng các hướng dẫn của R.
  5. Ch ủ đề 1. Tính toán trên tr ường s ố th ực Các phép toán trên tr ường s ố th ực là: c ộng (+), tr ừ (-), nhân (*), chia (/), l ũy th ừa (^) Các hàm thông d ụng: (pi bi ểu di ễn s ố ) 1. Tính 7/3.5 > 7/3.5 [1] 2 2. Tính a= (4^5-1/6) ( ) √ + > a=(4^5-1/6)*(exp(1/3)+pi); [1] 4645.342 3. Tính log 3 (4) > log(4)/log(3) (Ta dùng công th ức đổ i c ơ số) [1] 1.26186 4. Tính arcsin(1/2) > asin(1/2) [1] 0.5235988 5. Cho f(x)= (sin(x) +x 2)/(e x+1), tính f( π/6) > (sin(pi/6)+(pi/6)^2)/(exp(pi/6)+1) [1] 0.2879945
  6. Ch ủ đề 2. Ma tr ận và định th ức 1. Khai báo bi ến ma tr ận VD: Khai báo ma tr ận c ỡ 1x3 (vec t ơ dòng): > y A y B B y C B+C ↵ ho ặc >D=B+C ↵ (ở đây ta đã t ạo thêm bi ến D = B+C ) VD: >B*C; >B^10; >5*B 3. Phép nhân hai ma tr ận VD: >B%*%C 4. Ma tr ận chuy ển v ị VD: >t(B) 5. Tìm h ạng c ủa ma tr ận VD: >qr(B)$rank 6. Tìm ma tr ận ngh ịch đả o VD: > solve(B) 7. Tính định th ức (c ủa ma tr ận vuông) VD: >det(B)
  7. Ch ủ đề 3. Gi ải h ệ ph ươ ng trình tuy ến tính VD1: Tìm nghi ệm riêng c ủa hệ PTTT: + + = 6 ; − = −1 + + 2 = 9 Ta th ực hi ện nh ư sau: Trên màn hình s ẽ xu ất hi ện k ết qu ả l à: > A y lm.fit(A,y)$coefficients Ghi chú:Trong ví d ụ này ta được nghi ệm duy nh ất, x=(1, 2, 3) VD2: Tìm nghi ệm riêng c ủa hệ PTTT: + − = 0 3 − = 3 Ta th ực hi ện nh ư sau: Trên màn hình s ẽ xu ất hi ện k ết qu ả l à: > A y lm.fit(A,y)$coefficients Ghi chú: Trong ví d ụ này nghi ệm c ủa hệ có 1 tham s ố, nghi ệm riêng là: x1 = 1 ; x 2 = -1 ; x 3 = 0 VD3: Tìm nghi ệm riêng c ủa hệ PTTT + − = 3 Ta th ực hi ện nh ư sau: Trên màn hình s ẽ xu ất hi ện k ết qu ả l à:
  8. > A y lm.fit(A,y)$coefficients Ghi chú: Trong ví d ụ này nghi ệm của hệ có 2 tham s ố, nghi ệm riêng là: x1 = 3; x2 = 0; x3 = 0
  9. Ch ủ đề 4. V ẽ đồ th ị 1. Hàm 1 bi ến (2D) VD: V ẽ đồ th ị hàm s ố: y = x 2 + 1 trên đoạn [-10; 10] Th ực hi ện nh ư sau: > x y plot(y,type='l') Ph ần m ềm s ẽ xu ất ra đồ th ị (trên 1 c ửa s ổ khác – R Graphic) nh ư hình d ưới (b ạn có th ể vào File -> Copy to the clipboard (CTRL+C) và paste vào word) Ghi chú: Biến x là 1 dãy số, bi ến y c ũng là một dãy số, b ạn gõ th ử x; r ồi gõ y. Tham kh ảo Ch ủ đề 1 khi c ần v ẽ các hàm ph ức t ạp. 2. Hàm 2 bi ến (3D) VD: V ẽ đồ th ị hàm z=sin(x)*y với x ∈ [0; 2 π], y ∈ [0; 5] Th ực hi ện nh ư sau: > x<-seq(0,2*pi,lenght=200)
  10. > y f z persp(x,y,z, theta=30, phi=30, expand=0.5, col= "lightblue", ltheta=120, shade=0.75, ticktype="detailed", xlab="Truc x", ylab="Truc y", zlab= "Truc z", main="Ve bang R")
  11. Ch ủ đề 5. Đạ o hàm 1. Hàm m ột bi ến VD 1: Tính đạo hàm cấp 1 và c ấp 2 của hàm s ố f(x) = x 3 + 1 Ta th ực hi ện nh ư sau: > D(expression(x^3+1), 'x') 3 * x^2 > D(D(expression(x^3+1), 'x'),'x') 3 * (2 * x) VD 2: Tính đạo hàm c ủa hàm s ố f(x) = x 3 + 1 t ại x = 2. Ta th ực hi ện nh ư sau: > D(expression(x^3+1), 'x') 3 * x^2 > x 3 * x^2 [1] 12 Ghi chú: Tham kh ảo Ch ủ đề 1 khi c ần tính đạo hàm c ủa các hàm ph ức t ạp. 2. Hàm nhi ều bi ến VD: Tính các đạo hàm riêng c ấp 1 và c ấp 2 c ủa hàm s ố z = x 2 + y 2 > D(expression(x^2+y^2), 'x') 2 * x > D(expression(x^2+y^2), 'y') 2 * y > D(D(expression(x^2+y^2), 'x'),'x') [1] 2
  12. Ch ủ đề 6. Tích phân hàm m ột bi ến 1. Tích phân thông th ường VD: Tính Ta th ực hi ện nh ư sau: > f integrate(f, lower=1, upper=10) 198238.2 with absolute error f integrate(f, lower=1, upper=Inf) 1 with absolute error < 1.1e-14 Ghi chú:TPSR h ội t ụ, giá tr ị là 1 với sai s ố tuy ệt đố i nh ỏ h ơn 1.1*10 -14 Inf là + , -Inf là - . ∞ ∞
  13. Ch ủ đề 7. Ph ươ ng trình vi phân Để gi ải PTVP, tr ước h ết ta c ần cài đặt package deSolve b ằng cách th ực hi ện l ệnh trên R (máy tính ph ải đang k ết n ối internet): > install.packages(“deSolve”) Ph ần m ềm s ẽ hi ện 1 b ảng CRAN mirror, b ạn ch ọn 1 cái nào đó r ồi OKE. Từ nh ững lần ch ạy R sau ( để gi ải PTVP) b ạn không ph ải cài đặt n ữa, nh ưng ph ải g ọi package deSolve (không c ần k ết n ối internet) b ằng l ệnh: > library(deSolve) 1. Ph ươ ng trình vi phân c ấp 1 Ghi chú: Xét ph ươ ng trình vi phân c ấp 1: dy/dx = f(x,y). Gi ả s ử ta c ần gi ải PTVP dy/dx = x 2. Ph ươ ng trình này có nghi ệm t ổng quát là y = x 3/3 + C. V ới điều kiên ban đầu y(0) = 1 ta được nghi ệm riêng y = x 3/3 + 1. Ta s ẽ v ẽ đồ th ị nghi ệm riêng này. (Ph ần m ềm R l ưu hàm s ố d ưới d ạng b ảng, nên ta không có được công th ức t ường minh nh ưng v ẫn v ẽ được đồ th ị). VD1: Vẽ đồ th ị nghi ệm riêng c ủa ph ươ ng trình vi phân dy/dx = x 2 với điều ki ện ban đầ u y(0) = 5 trên mi ền [0, 100]. Ta th ực hi ện nh ư sau: > ham dieukien ketqua plot(ketqua, type = "l", which = "y",lwd = 2, xlab = "Truc x", ylab = "Truc y",main = "PTVP")
  14. Ghi chú: times = 0:100 th ể hi ện mi ền nghi ệm là [0, 100], vì trong PTVP bi ến x th ường là bi ến th ời gian nên có quy ước chu ẩn là times. Ph ần m ềm s ẽ xu ất ra đồ th ị (trên 1 c ửa s ổ khác – R Graphic) nh ư hình trên (b ạn có th ể vào File -> Copy to the clipboard (CTRL+C) và paste vào word) VD2: Vẽ đồ th ị nghi ệm riêng c ủa ph ươ ng trình vi phân với điều ki ện ban đầu y(4) = 2 trên mi ền [4, 10]. Ta th ực hi ện nh ư sau: > ham dieukien nghiem plot(nghiem, type = "l", which = "y",lwd = 2, xlab = "Truc x", ylab = "Truc y",main = "PTVP") Ghi chú: Tham kh ảo Ch ủ đề 1 khi ph ải làm vi ệc v ới các hàm ph ức t ạp. 2. Ph ươ ng trình vi phân c ấp 2 VD1: Vẽ đồ th ị nghi ệm riêng c ủa ph ươ ng trình vi phân: y” – (1 – y2)y’ + y = 0, với điều ki ện ban đầu y(0) = 2, y’(0) = 0 trên mi ền [0, 100]. Đặt y[1] = y, y[2] = y’, ta đưa PTVP v ề h ệ: y[1]’ = y[2] + 0.y[1] y[2]’ = (1 – y[1] 2)y[2] + y[1] (điều ki ện ban đầ u, y1 = 2, y2 = 0). Ta th ực hi ện nh ư sau: > ham dieukien nghiem plot(nghiem, type = "l", which = "y1",lwd = 2, ylab = "Truc y",main = "PTVP c ấp 2")
  15. VD2: Vẽ đồ th ị nghi ệm riêng c ủa ph ươ ng trình vi phân: y” – (1 – y2)y’ + y = e xsinx, với điều ki ện ban đầu y(0) = 2, y’(0) = 0 trên mi ền [0, 100]. Ta th ực hi ện nh ư sau: > ham dieukien nghiem plot(nghiem, type = "l", which = "y1",lwd = 2, ylab = "Truc y",main = "PTVP c ấp 2")
  16. Ch ủ đề 8. Ph ươ ng trình sai phân Để gi ải PTSP, tr ước h ết ta c ần cài đặt package deSolve b ằng cách th ực hi ện l ệnh trên R (máy tính ph ải đang k ết n ối internet): > install.packages(“deSolve”) Ph ần m ềm s ẽ hi ện 1 b ảng CRAN mirror, b ạn ch ọn 1 cái nào đó r ồi OKE. Từ nh ững lần ch ạy R sau ( để gi ải PTSP) b ạn không ph ải cài đặt n ữa, nh ưng ph ải g ọi package deSolve (không c ần k ết n ối internet) b ằng l ệnh: > library(deSolve) Nếu ph ươ ng trình có ch ứa giai th ừa (!) cần cài thêm package pracma và g ọi package này tr ước khi gi ải. 1. Ph ươ ng trình sai phân c ấp 1 Ghi chú: Xét ph ươ ng trình sai phân c ấp 1: y(n+1) = f(n,y(n)). Gi ả s ử ta c ần gi ải PTSP y(n+1) + 2y(n) = 0. Ph ươ ng trình này có nghi ệm t ổng quát là y(n) = C(-2) n. V ới điều kiên ban đầu y(2) = 3 ta được nghi ệm riêng y(n) = ¾(-2) n. Ta s ẽ v ẽ đồ th ị nghi ệm riêng này. (Ph ần m ềm R l ưu hàm s ố d ưới d ạng b ảng, nên ta không có được công th ức t ường minh nh ưng v ẫn v ẽ được đồ th ị). VD1: Vẽ đồ th ị nghi ệm riêng c ủa ph ươ ng trình sai phân y(n+1) + 2y(n) = 0 với điều ki ện ban đầ u y(2) = 3 trên mi ền [2, 20]. Ta th ực hi ện nh ư sau: > ham dieukien ketqua plot(ketqua, type = "l", which = "y",lwd = 2, xlab = "Truc n", ylab = "Truc y",main = "PTSP")
  17. Để hi ển th ị các giá tr ị của hàm y, b ạn th ực hi ện l ệnh: > ketqua Ghi chú: times = 2:20 th ể hi ện mi ền nghi ệm là [2, 20], vì trong PTSP bi ến n th ường là bi ến th ời gian nên có quy ước chu ẩn là times. Ph ần m ềm s ẽ xu ất ra đồ th ị (trên 1 c ửa s ổ khác – R Graphic) nh ư hình trên (b ạn có th ể vào File -> Copy to the clipboard (CTRL+C) và paste vào word) Gi ải PTSP ch ỉ khác PTVP ở: method = "iteration" VD2: Vẽ đồ th ị nghi ệm riêng c ủa ph ươ ng trình sai phân y(n+1) = (n+1)y(n) + (n+1)!n; với điều ki ện ban đầu y(4) = 2 trên mi ền [4, 10]. Ta th ực hi ện nh ư sau: #C ần ph ải g ọi package pracma tr ước > ham dieukien nghiem plot(nghiem, type = "l", which = "y",lwd = 2, xlab = "Truc n", ylab = "Truc y",main = "PTSP") Ghi chú: Tham kh ảo Ch ủ đề 1 khi ph ải làm vi ệc v ới các hàm ph ức t ạp. 2. Ph ươ ng trình sai phân c ấp 2 VD1: Vẽ đồ th ị nghi ệm riêng c ủa ph ươ ng trình sai phân y(n+2) - 5y(n+1) + 6y(n) = 0, với điều ki ện ban đầu y(0) = 2, y(1) = 5 trên mi ền [0, 10]. ta đư a PTSP v ề h ệ: y(n+1) = y(n+1) + 0*y(n) y(n+2) = 5*y(n+1) - 6*y(n) Đặt y[1] = y(n), y[2] = y(n+1), điều ki ện ban đầ u, y1 = 2, y2 = 5. Ta th ực hi ện nh ư sau: > ham dieukien <- c(y1 = 2, y2 = 5)
  18. > nghiem plot(nghiem, type = "l", which = "y1",lwd = 2, ylab = "Truc y",main = "PTVP c ấp 2") VD2: Vẽ đồ th ị nghi ệm riêng c ủa ph ươ ng trình vi phân: y(n+2) - 5y(n+1) + 6y(n) = n 2 + 2n + 3, với điều ki ện ban đầu y(0) = 2, y(1) = 5 trên mi ền [0, 10]. Ta th ực hi ện nh ư sau: > ham dieukien nghiem plot(nghiem, type = "l", which = "y1",lwd = 2, ylab = "Truc y",main = "PTVP c ấp 2") &&