1. Trang chủ
  2. » Luận Văn - Báo Cáo

bài tập lớn toán cao cấp ứng dụng ngôn ngữ lập trình r trong học tập môn toán cao cấp

37 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Lịch sử ra đời:* Phần mềm R ra đời:Động lực ra đời của R khá đơn giản là vào khoảng năm 1993.Ross Ihaka và Robert Gentleman ở University of Auckland New Zealand nhận thấyrằng các phần mề

Trang 1

HỌC VIỆN CHÍNH SÁCH VÀ PHÁT TRIỂNKHOA CƠ BẢN – BỘ MÔN LÝ LUẬN CHÍNH TRỊ

BÀI TẬP LỚN TOÁN CAO CẤP

5 Phan Thị Thương6 Bùi Thị Hà Chi7 Vũ Huyền Thanh8 Dương Thị Hương

Lớp: KTKDS13

Người hướng dẫn: Nguyễn Văn Tuấn

HÀ NỘI, THÁNG 12 NĂM 2022

Trang 2

MỤC LỤC

MỤC LỤC 2

Chương 1: Giới thiệu tổng quan về ngôn ngữ lập trình R: 3

1.1 Lịch sử ra đời: 3

1.2 Giới thiệu các phép toán trong R: 4

1.3 Giới thiệu cách nhập dữ liệu vào phần mềm R: 4

Chương 2: Ứng dụng ngôn ngữ lập trình R trong Đại số tuyến tính: 16

2.1 Ứng dụng ngôn ngữ lập trình R trong các phép toán về ma trận: 16

2.2 Ứng dụng ngôn ngữ lập trình R trong việc tính định thức: 19

2.3 Ứng dụng ngôn ngữ lập trình R trong việc tìm hạng của ma trận: 21

2.4 Ứng dụng ngôn ngữ lập trình R trong việc tìm ma trận nghịch đảo: 26

2.5 Ứng dụng ngôn ngữ lập trình R trong việc giải hệ phương trình tuyến tính: 30

Chương 3: Ứng dụng ngôn ngữ lập trình R trong Giải tích: 34

3.1 Ứng dụng ngôn ngữ lập trình R trong các phép tính giới hạn hàm số: 34

3.2 Ứng dụng ngôn ngữ lập trình R trong việc tính đạo hàm vi phân: 35

3.3 Ứng dụng ngôn ngữ lập trình R trong việc tính tích phân: 36

Trang 3

Chương 1: Giới thiệu tổng quan về ngôn ngữ lập trình R:

1.1 Lịch sử ra đời:

* Phần mềm R ra đời:

Động lực ra đời của R khá đơn giản là vào khoảng năm 1993.

Ross Ihaka và Robert Gentleman ở University of Auckland (New Zealand) nhận thấyrằng các phần mềm thống kê thương mại sử dụng cho các tính toán thống kê vào thờiđiểm ấy là còn đắt đỏ và quan trọng hơn là không phù hợp và chưa linh hoạt cho cảmục đích giảng dạy thống kê cũng như một số tình huống công việc.

• Sau đó hai ông đã quyết định lựa chọn ngôn ngữ S được phát triển bởi BellLaboratories với nỗ lực viết một phần mềm thống kê mới.

• Lí do lựa chọn S có lẽ là do sự thành công của S-PLUS – một phần mềm thống kêcũng dựa trên ngôn ngữ S được phát triển những năm 80 và đến thời điểm đó đã đượcsử dụng phổ biến.

• Tuy nhiên người nhìn thấy tiềm năng và sức mạnh của R nếu như mã nguồn (Rcode) của nó được công khai với tư cách là một phần mềm miễn phí chính là MartinMaechler.

• Được thuyết phục bởi Maechler, Ross Ihaka và Robert Gentleman đã quyết địnhrằng R là miễn phí cho tất cả người sử dụng vào năm 1995.

* Sự phát triển của phần mềm R:

Phần mềm R được đón nhận và ngày càng trở nên mạnh mẽ

Được phát triển bởi một cộng đồng rộng lớn những chuyên gia về phân tích dữ liệu.• Đến thời điểm hiện tại thì R đã là một công cụ phân tích dữ liệu đa năng• Là công cụ của Data Mining, Machine Learning, và Big Data.

• Với tư cách là một công cụ cho nghiên cứu thống kê – kinh tế lượng.

• R ngày càng trở nên phổ biến và được giảng dạy ở hầu hết các trường đại học lớn.Như University of California, Stanford, Havard, MIT ở Hoa Kì và Cambridge ở Anh.• Khoảng năm 2004, TS Nguyễn Văn Tuấn có lẽ là người Việt Nam đầu tiên viết vềR.

Trang 4

1.2 Giới thiệu các phép toán trong R:

Phép cộng và phép trừx<-5y<-9x+y[1] 14

y<-65x<-14y-x[1] 51> x<- 12560

> y<- 45609> z<- 12345> x+y+z[1] 70514

> x<- 12560 > y<- 45609> z<- 12345> x+y-z[1] 45824

Phép nhân và phép chia

> x<-120> y<-6> x*y[1] 720

> x<-120> y<-6> x/y[1] 20> a<- 300

> b<- 20> a*b[1] 6000

> a<- 300> b<- 20> a/b[1] 15

Mũ và số lũy thừa

> 14^3[1] 2744> (20-4)^2[1] 256

Căn bậc hai

> sqrt(100)[1] 10> sqrt(360)[1] 18.97367

> sqrt(180)[1] 13.41641> sqrt(36)[1] 6

1.3 Giới thiệu cách nhập dữ liệu vào phần mềm R:

Muốn làm phân tích dữ liệu bằng R, chúng ta phải có sẵn dữ liệu ở dạng mà R có thểhiểu được để xử lí Dữ liệu mà R hiểu được phải là dữ liệu trong một data.frame.

Trang 5

Có nhiều cách để nhập số liệu vào một data.frame trong R, từ nhập trực tiếp đến nhậptừ các nguồn khác nhau Sau đây là những cách thông dụng nhất:

1.3.1.Nhập số liệu trực tiếp: c()

Ví dụ 1: chúng ta có số liệu về độ tuổi và insulin cho 10 bệnh nhân như sau, và

muốn nhập vào R 50 16.5

62 10.8 60 32.3 40 19.3 48 14.2 47 11.3 57 15.5 70 15.8 48 16.2 67 11.2

Chúng ta có thể sử dụng function có tên c như sau:> age <- c(50,62, 60,40,48,47,57,70,48,67)

> insulin <- c(16.5,10.8,32.3,19.3,14.2,11.3,15.5,15.8,16.2,11.2)

Lệnh thứ nhất cho R biết rằng chúng ta muốn tạo ra một cột dữ liệu (từ nay tôi sẽ gọilà biến số, tức variable) có tên là age, và lệnh thứ hai là tạo ra một cột khác có tên làinsulin Tất nhiên, chúng ta có thể lấy một tên khác mà mình thích.

Chúng ta dùng function c (viết tắt của chữ concatenation – có nghĩa là “móc nối vàonhau”) để nhập dữ liệu Chú ý rằng mỗi số liệu cho mỗi bệnh nhân được cách nhaubằng một dấu phẩy.

Trang 6

Kí hiệu insulin <- (cũng có thể viết là insulin =) có nghĩa là các số liệu theo sau sẽ cónằm trong biến số insulin Chúng ta sẽ gặp kí hiệu này rất nhiều lần trong khi sử dụngR.

R là một ngôn ngữ cấu trúc theo dạng đối tượng (thuật ngữ chuyên môn là oriented language”), vì mỗi cột số liệu hay mỗi một data.frame là một đối tượng(object) đối với R Vì thế, age và insulin là hai đối tượng riêng lẻ Bây giờ chúng tacần phải nhập hai đối tượng này thành một data.frame để R có thể xử lí sau này Đểlàm việc này chúng ta cần đến function data.frame:

“object-> tuan <- data.frame(age, insulin)

Trong lệnh này, chúng ta muốn cho R biết rằng nhập hai cột (hay hai đối tượng) agevà insulin vào một đối tượng có tên là tuan.

Đến đây thì chúng ta đã có một đối tượng hoàn chỉnh để tiến hành phân tích thống kê.Để kiểm tra xem trong tuan có gì, chúng ta chỉ cần đơn giản gõ:

> tuan

Và R sẽ báo cáo: age insulin1 50 16.52 62 10.83 60 32.34 40 19.35 48 14.26 47 11.37 57 15.58 70 15.89 48 16.2

Trang 7

10 67 11.2

Nếu chúng ta muốn lưu lại các số liệu này trong một file theo dạng R, chúng ta cầndùng lệnh save Giả dụ như chúng ta muốn lưu số liệu trong directory có tên là“c:\works\insulin”, chúng ta cần gõ như sau:

> setwd(“c:/works/insulin”)> save(tuan, file=”tuan.rda”)

Lệnh đầu tiên (setwd – chữ wd có nghĩa là working directory) cho R biết rằng chúngta muốn lưu các số liệu trong directory có tên là “c:\works\insulin” Lưu ý rằng thôngthường Windows dùng dấu backward slash “/”, nhưng trong R chúng ta dùng dấuforward slash “/”.

Lệnh thứ hai (save) cho R biết rằng các số liệu trong đối tượng tuan sẽ lưu trong filecó tên là “tuan.rda”) Sau khi gõ xong hai lệnh trên, một file có tên tuan.rda sẽ có mặttrong directory đó.

1.3.2 Nhập số liệu trực tiếp: edit(data.frame())

Ví dụ 1 (tiếp tục): Chúng ta có thể nhập số liệu về độ tuổi và insulin cho 10 bệnh

nhân bằng một function rất có ích, đó là: edit(data.frame()) Với function này, R sẽcung cấp cho chúng ta một window mới với một dãy cột và dòng giống như Excel,và chúng ta có thể nhập số liệu trong bảng đó Ví dụ:

> ins <- edit(data.frame())

Trang 8

Chúng ta sẽ có một cửa sổ như sau:

Ở đây, R không biết chúng ta có biến số nào, cho nên R liệt kê các biến số var1, var2, v.v… Nhấp chuột vào cột var1 và thay đổi bằng cách gõ vào đó age Nhấp chuột vào cột var2 và thay đổi bằng cách gõ vào đó insulin Sau đó gõ số liệu cho từng cột Sau khi xong, bấm nút chéo X ở góc phải của spreadsheet, chúng ta sẽ có một data.frame tên ins với hai biến số age và insulin.

1.3.3 Nhập số liệu từ một text file: read.table

Ví dụ 2: Chúng ta thu thập số liệu về độ tuổi và cholesterol từ một nghiên cứu ở 50

bệnh nhân mắc bệnh cao huyết áp Các số liệu này được lưu trong một text file có tên là chol.txt tại directory c:\works\insulin Số liệu này như sau: cột 1 là mã số của bệnh nhân, cột 2 là giới tính, cột 3 là body mass index (bmi), cột 4 là HDL cholesterol (viếttắt là hdl), kế đến là LDL cholesterol, total cholesterol (tc) và triglycerides (tg).

Trang 9

> chol <- read.table("chol.txt", header=TRUE)

Lệnh thứ nhất chúng ta muốn đảm bảo R truy nhập đúng directory mà số liệu đangđược lưu giữ Lệnh thứ hai yêu cầu R nhập số liệu từ file có tên là “chol.txt” (trongdirectory c:\works\insulin) và cho vào đối tượng chol Trong lệnh này, header=TRUEcó nghĩa là yêu cầu R đọc dòng đầu tiên trong file đó như là tên của từng cột dữ kiện.Chúng ta có thể kiểm tra xem R đã đọc hết các dữ liệu hay chưa bằng cách ra lệnh:> chol

Trang 10

Bây giờ chúng ta có thể lưu dữ liệu dưới dạng R để xử lí sau này bằng cách ra lệnh:> save(chol, file="chol.rda")

1.3.4 Nhập số liệu từ Excel: read.csv

Để nhập số liệu từ phần mềm Excel, chúng ta cần tiến hành 2 bước:

Bước 1: Dùng lệnh “Save as” trong Excel và lưu số liệu dưới dạng “csv”;Bước 2: Dùng (lệnh R read.csv) để nhập dữ liệu dạng csv.

Ví dụ 3: Một dữ liệu gồm các cột sau đây đang được lưu trong Excel, và

chúng ta muốn chuyển vào để phân tích Dữ liệu này có tên là R excel.xls.

IDAgeSexEthnicityIGFIIGFBP3ALSPINP ICTPP3NP11811148.275.14316.0061.84 5.814.2122811114.505.23296.4298.64 4.965.3332011109.824.33269.8293.26 7.744.5642111112.134.38247.96101.59 6.664.6152811102.864.04240.0458.77 4.624.9562314129.594.16266.9548.93 5.323.8272011142.503.85300.86135.62 8.786.7582011118.693.44277.4679.51 7.195.1192011197.694.12335.2357.25 6.214.44102011163.693.96306.8374.03 4.954.84112211144.813.63295.4668.26 4.543.70122702141.603.48231.2056.78 4.474.07132611161.804.10244.8075.75 6.275.2614331189.202.82177.2048.57 3.583.68153413161.803.80243.6050.68 3.523.35163211148.503.72234.8083.98 4.853.80172811157.703.98224.8060.42 4.894.09181802222.903.98281.4074.17 6.435.84192602186.704.64340.8038.05 5.125.77202712167.563.56321.1230.18 4.786.12

Trang 11

Việc đầu tiên là chúng ta cần làm, như nói trên, là vào Excel để lưu dưới dạng csv:Vào Excel, chọn File Save as

Chọn Save as type CSV (Comma delimited“ )”

Sau khi xong, chúng ta sẽ có một file với tên “excel.csv” trong directory “c:\works\insulin”.

Việc thứ hai là vào R và ra những lệnh sau đây:> setwd(“c:/works/insulin”)

> gh <- read.csv ("excel.txt", header=TRUE)

Lệnh thứ hai read.csv yêu cầu R đọc số liệu từ “excel.csv”, dùng dòng thứ nhất là tên cột, và lưu các số liệu này trong một object có tên là gh.Bây giờ chúng ta có thể lưu gh dưới dạng R để xử lí sau này bằng lệnh sau đây:

> save(gh, file="gh.rda")

1.3.5 Nhập số liệu từ một SPSS: read.spss

Trang 12

Phần mềm thống kê SPSS lưu dữ liệu dưới dạng “sav” Chẳng hạn nhưnếu chúng ta đã có một dữ liệu có tên là testo.sav trong directoryc:\works\insulin, và muốn chuyển dữ liệu này sang dạng R có thể hiểuđược, chúng ta cần sử dụng lệnh read.spss trong package có tên làforeign Các lệnh sau đây sẽ hoàn tất dễ dàng việc này:

Việc đầu tiên chúng ta cho truy nhập foreign bằng lệnh library:> library(foreign)

Việc thứ hai là lệnh read.spss:> setwd(“c:/works/insulin”)

> testo <- read.spss(“testo.sav”, to.data.frame=TRUE)

Lệnh thứ hai read.spss yêu cầu R đọc số liệu từ “testo.sav”, và cho vào mộtdata.frame có tên là testo.

Bây giờ chúng ta có thể lưu testo dưới dạng R để xử lí sau này bằng lệnh sau đây:> save(testo, file="testo.rda")

1.3.6 Thông tin về dữ liệu:

Giả dụ như chúng ta đã nhập số liệu vào một data.frame có tên là chol như trong vídụ

1 Để tìm hiểu xem trong dữ liệu này có gì, chúng ta có thể nhập vào R như sau:Dẫn cho R biết chúng ta muốn xử lí chol bằng cách dùng lệnh attach(arg) vớiarg là tên của dữ liệu

Trang 13

> is.data.frame(chol)[1] TRUE

R cho biết chol quả là một data.frame.

Có bao nhiêu cột (hay variable = biến số) và dòng số liệu(observations) trong dữ liệu này? Chúng ta dùng lệnh dim(arg) vớiarg là tên của dữ liệu (dim viết tắt chữ dimension) Ví dụ (kết quảcủa R trình bày ngay sau khi chúng ta gõ lệnh):

> dim(chol) [1] 508

Như vậy, chúng ta có 50 dòng và 8 cột (hay biến số) Vậy nhữngbiến số này tên gì? Chúng ta dùng lệnh names(arg) với arg là tên củadữ liệu Ví dụ:

> names(chol)

[1] "id" "sex" "age" "bmi" "hdl" "ldl" "tc" "tg"

Trong biến số sex, chúng ta có bao nhiêu nam và nữ? Để trả lời câuhỏi này, chúng ta có thể dùng lệnh table(arg) với arg là tên của biếnsố Ví dụ:

> table(sex)sex

nam Nam Nu 1 21 28

Kết quả cho thấy dữ liệu này có 21 nam và 28 nữ.

1.3.7 Tạo dãy số bằng hàm seq, rep và gl:

R còn có công dụng tạo ra những dãy số rất tiện cho việc mô phỏng vàthiết kế thí nghiệm Những hàm thông thường cho dãy số là seq(sequence), rep (repetition) và (generating levels):gl

Trang 14

* Áp dụng seq:

Tạo ra một vector số từ 1 đến 12:> x <- (1:12)

> x

[1]123456789 10 11 12> seq(12)

[1]123456789 10 11 12Tạo ra một vector số từ 12 đến 5:> x <- (12:5)

> x

[1] 12 11 1098765> seq(12,7)

* Áp dụng req:

Công thức của hàm rep là rep(x, times, ), trong đó, là một biến số và times là sốx lần lặp lại Ví dụ:

Tạo ra số 10, 3 lần:> rep(10, 3)

[1] 10 10 10

Tạo ra số 1 đến 4, 3 lần:

Trang 15

> rep(c(1:4), 3)[1] 1 2 3 4 1 2 3 4 1 2 3 4

Tạo ra số 1.2, 2.7, 4.8, 5 lần:> rep(c(1.2, 2.7, 4.8), 5)

[1] 1.2 2.7 4.8 1.2 2.7 4.8 1.2 2.7 4.8 1.2 2.7 4.8 1.2 2.7 4.8Tạo ra số 1.2, 2.7, 4.8, 5 lần:

> rep(c(1.2, 2.7, 4.8), 5)

[1] 1.2 2.7 4.8 1.2 2.7 4.8 1.2 2.7 4.8 1.2 2.7 4.8 1.2 2.7 4.8* Áp dụng gl:

gl được áp dụng để tạo ra một biến thứ bậc (categorical variable), tứcbiến không để tính toán, mà là đếm Công thức chung của hàm gl làgl(n, k, length = n*k, labels = 1:n, ordered =

FALSE) và cách sử dụng sẽ được minh hoạ bằng vài ví dụ sau đây:Tạo ra biến gồm bậc 1 và 2; mỗi bậc được lặp lại 8 lần:> gl(2, 8)

[1] 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2Levels: 1 2

Hay một biến gồm bậc 1, 2 và 3; mỗi bậc được lặp lại 5 lần:> gl(3, 5)

[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3Levels: 1 2 3

Tạo ra biến gồm bậc 1 và 2; mỗi bậc được lặp lại 10 lần (do đó length=20):> gl(2, 10, length=20)

[1] 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2Levels: 1 2

> gl(2, 2, length=20)

[1] 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 2 2Levels: 1 2

Cho thêm kí hiệu:

Trang 16

> gl(2, 5, label=c("C", "T"))[1] C C C C C T

T T T T Levels: C T

Tạo một biến gồm 4 bậc 1, 2, 3, 4 Mỗi bậc lặp lại 2 lần.> rep(1:4, c(2,2,2,2))

[1] 1 1 2 2 3 3 4 4Cũng tương đương với:> rep(1:4, each = 2) [1] 1 1 2 2 3 3 4 4

Với ngày giờ tháng:> x <- leap.seconds[1:3]> rep(x, 2)

[1] "1972-06-30 17:00:00 Pacific Standard Time" "1972-12-31 16:00:00

Pacific Standard Time"

[3] "1973-12-31 16:00:00 Pacific Standard Time" "1972-06-30 17:00:00

Pacific Standard Time"

[5] "1972-12-31 16:00:00 Pacific Standard Time" "1973-12-31 16:00:00

Pacific Standard Time"> rep(as.POSIXlt(x), rep(2, 3))

[1] "1972-06-30 17:00:00 Pacific Standard Time" "1972-06-30 17:00:00

Pacific Standard Time"

[3] "1972-12-31 16:00:00 Pacific Standard Time" "1972-12-31 16:00:00

Pacific Standard Time"

[5] "1973-12-31 16:00:00 Pacific Standard Time" "1973-12-31 16:00:00

Pacific Standard Time"

Trang 17

Chương 2: Ứng dụng ngôn ngữ lập trình R trong Đại số tuyến tính:

2.1 Ứng dụng ngôn ngữ lập trình R trong các phép toán về ma trận:

2.1.1 Định nghĩa phép toán trên ma trận:

[,1] [,2] [,3][1,] 1 -3 5[2,] 6 2 4> u<-c(5,-3,2,1,-6,4)

> B<-matrix(u,nrow=2,ncol=3)> B

[,1] [,2] [,3][1,] 5 2 -6[2,] -3 1 4

Trang 18

> prod<-A+B> print(prod) [,1] [,2] [,3][1,] 6 -1 -1[2,] 3 3 8

Ví dụ 2: Cho các ma trận:

Lời giải

> u<-c(27,12,5,9,3,11,-9,6,-8,5,20,1,4,15,8,17)> A<-matrix(u,nrow=4,ncol=4)

> A

[,1] [,2] [,3] [,4][1,] 27 3 -8 4[2,] 12 11 5 15[3,] 5 -9 20 8[4,] 9 6 1 17

> u<-c(1,3,4,8,9,11,13,16,18,0,9,5,-5,-8,2,0)> B<-matrix(u,nrow=4,ncol=4)

> B

[,1] [,2] [,3] [,4][1,] 1 9 18 -5[2,] 3 11 0 -8[3,] 4 13 9 2[4,] 8 16 5 0> prod<-A*B> print(prod)

Ngày đăng: 23/05/2024, 11:47

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w