تمرین چهارم درس R
1402/06/14
دسترسی سریع
نام دانشجو : مریم خادمی
استاد مربوطه : آقای خاورزاده
«ماتریس»
یکی از خصوصیات مهم در بین همه ویژگی های قدرتمند زبان R، توانایی تشکیل ماتریس (MATRIX) و انجام عملیات جبری روی آنهاست.طبق تعریف ماتریس مجموعه ای از اعداد میباشد که در تعدادی ردیف و یا ستون مرتب شده اند.ویژگی های اصلی داده های ماتریس در R این است که همه داده های یک ماتریس از یک نوع می باشد.به عنوان مثال ،همه آنها عددی و یا همه آنها حرفی باشند.هر عدد ماتریس یک عنصر نامیده می شود.برای ایجاد ماتریس از تابع ()matrix استفاده می شود.برای این منظور ابتدا تعداد ردیف (nr و یا nrow ) و تعداد ستون ( nc و یا ncol )تعریف می گردد.در واقع ماتریس بسط بردار است.
تابع در مثال زیر ابتدا یک توالی 12 عددی توسط ()seq ایجاد و سپس با استفاده از تابع ()Matrixدر3 ردیف و 4 ستون یک ماتریس مرتب شده اند.
matrix(seq(1:12),nrow=3,ncol=4) [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12اگر بخواهیم به یک درایه از ماتریس دست پیدا کنیم از [A[i,j استفاده می کنیم.مثال:
a<-c(1,2,3,4,5,6,7,8,9,10) > d<-matrix(a,2,5) > d [,1] [,2] [,3] [,4] [,5] [1,] 1 3 5 7 9 [2,] 2 4 6 8 10 > d[2,4] [1]8همان طور که مشاهده می شود عنصر ردیف دوم در ستون چهارم عدد 8 می باشد. برای دستیابی به کل عناصر یک ردیف یا ستون به صورت زیر انجام می دهیم.
d[,2] [1] 3 4ستون دوم ماتریس d ⇑
d[1,] [1] 1 3 5 7 9ردیف اول ماتریس d ⇑ در پیش فرض زبان R عناصر به صورت ستونی در سلول های ماتریس جایابی می شوند.برای اینکه نحوه جایابی به شکل ردیفی باشد از دستور byrow=T استفاده می شود.
x<-matrix(1:6,nrow=2,ncol=3) > x [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 > x<-matrix(1:6,nrow=2,ncol=3,byrow=T) > x [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6♦تابع ()dim این تابع ابعاد ماتریس را در اختیار قرار می دهد.در مثال زیر ابعاد ماتریس d در مثال قبلی که دارای 2 ردیف و 5 ستون است نشان داده شده است.
dim(d) [1] 52همچنین برای تبدیل بردار به ماتریس می توان از تابع ()dim استفاده نمود.در مثال زیر بردار a با استفاده از این تابع به یک ماتریس با ابعاد 2×5 تبدیل شده است:
a<-c(1,2,3,4,5,6,7,8,9,10) > dim(a)<-c(5,2) > a [,1] [,2] [1,] 1 6 [2,] 2 7 [3,] 3 8 [4,] 4 9 [5,] 5 10از تابع ()dim برای تبدیل ماتریس به یک بردار نیز استفاده می شود.برای این کار باید ابعاد ماتریس را از بین ببریم:
dim(a)<-NULL > a [1] 1 2 3 4 5 6 7 8 9 10با استفاده از تابع () dimمی توان یک ماتریس را به چند ماتریس کوچکتر تفکیک نمود.اولین عدد داخل پرانتز تعداد ردیف،عدد دوم تعداد ستون و سومین عدد تعداد ماتریس هاست.در اینجا ماتریس a دو ماتریس 5×1 تبدیل می شود: > dim(a)<-c(1,5,2) > a , , 1 [,1] [,2] [,3] [,4] [,5] [1,] 1 2 3 4 5 , , 2 [,1] [,2] [,3] [,4] [,5] [1,] 6 7 8 9 10 ♦تابع ()as.vector برای تبدیل ماتریس ها به بردار از تابع ()as.vector نیز می توان استفاده نمود.در مثال زیر a که یک ماتریس 5 در 2 است که به یک بردار تبدیل شده است:
a<-matrix(1:10,nr=5,nc=2) > a [,1] [,2] [1,] 1 6 [2,] 2 7 [3,] 3 8 [4,] 4 9 [5,] 5 10 > b<-as.vector(a) > b [1] 1 2 3 4 5 6 7 8 9 10♦تابع ()as.matrix این تابع بردار یا داده های چارچوب دار را به یک ماتریس تبدیل می کند.
c<-as.matrix(b) > c [,1] [1,] 1 [2,] 2 [3,] 3 [4,] 4 [5,] 5 [6,] 6 [7,] 7 [8,] 8 [9,] 9 [10,]10♦تابع()t ترانهاده یک ارایه توسط تابع ()t حاصل می شود.مثال:
a [,1] [,2] [1,] 1 6 [2,] 2 27 [3,] 3 8 [4,] 4 9 [5,] 5 10 > t(a) [,1] [,2] [,3] [,4] [,5] [1,] 1 2 3 4 5 [2,] 6 7 8 9 10♦عملگر%*% برای ضرب کردن دو ماتریس از عملگر%*%استفاده می شود.در مثال زیر ماتریس m با ابعاد 2×3 در ماتریس n با ابعاد2×2 ضرب می شوند که حاصل آنها یک ماتریس 2×3 می باشد:
m<-matrix(c(4,2,1,3,4,2),3,2) > m [,1] [,2] [1,] 4 3 [2,] 2 4 [3,] 1 2 n<-matrix(c(5,2,1,2),2,2) > n [,1] [,2] [1,] 5 1 [2,] 2 2 m%*%n [,1] [,2] [1,] 26 10 [2,] 18 10 [3,] 5 9اگر از علامت «*»بین دو ماتریس استفاده شود حاصل ضرب نظیر به نظیر عناصر در خروجی نشان داده می شود.مثال:
z<-matrix(2,nrow=2,ncol=2) > z [,1] [,2] [1,] 2 2 [2,] 2 2 s<-matrix(3,nrow=2,ncol=2) > s [,1] [,2] [1,] 3 3 [2,] 3 3 > s*z [,1] [,2] [1,] 6 6 [2,] 6 6♦تابع ()det دترمینانت یک ماتریس مربع را می توان با استفاده از تابع ()det به دست آورد:
a<-matrix(c(1,2,4,6),nrow=2) > a [,1] [,2] [1,] 1 4 [2,] 2 6 > det(a) [1] -2♦تابع ()diag برای استخراج ویا تغییر درایه های قطری ویا ساختن ماتریس قطری تابع ()diag به کار می رود.مثال:
z<-matrix(1:4,nr=2,nc=2) > z [,1] [,2] [1,] 1 3 [2,] 2 4 > diag(z) [1] 1 4 > diag(z)<-8 > z [,1] [,2] [1,] 8 3 [2,] 2 8 > diag(3) [,1] [,2] [,3] [1,] 1 0 0 [2,] 0 1 0 [3,] 0 0 1♦تابع ()dimnames برای نامگذاری سطرها و ستون های یک ماتریس از این تابع ()dimnames استفاده میشود.مثال:
> z<-matrix(1:4,nr=2,nc=2) > z [,1] [,2] [1,] 1 3 [2,] 2 4 > dimnames(z)<-list(c("A","B"),c("C","D")) > z C D A 1 3 B 2 4♦تابع ()solve معکوس یک ماتریس مربعی را می توان با استفاده از تابع ()solve به صورت زیر به دست آورد:
n<-matrix(c(5,2,1,2),2,2) > n [,1] [,2] [1,] 5 1 [2,] 2 2 > solve(n) [,1] [,2] [1,] 0.25 -0.125 [2,] -0.25 0.625♦تابع ()eigen مقدار ویژه و بردار ویژه ماتریس ها را می توان با تابع ()eigen به دست آورد: > eigen(n) $values [1] 5.561553 1.438447 $vectors [,1] [,2] [1,] 0.8719282 -0.2703230 [2,] 0.4896337 0.9627697 ودر این قسمت« valuses »مقدار ویژه و «vectors»بردارویژه را نشان میدهد. ♦تابع ()rbind در مثال زیر بردار ردیفی (100و200)به ماتریس n افزوده شده است.تعداد ردیف ها در ماتریس جدید (n2)از 2 به 3 افزایش یافته است: > n2<-rbind(n,c(100,200)) > n2 [,1] [,2] [1,] 5 1 [2,] 2 2 [3,] 100 200 ♦تابع()cbind در مثال زیر بردار ستونی (300و200و100)به ماتریس n2 افزوده شده است.تعداد ستون ها در ماتریس جدید (n3) از 2 به 3 افزایش یافته است: > n3<-cbind(n2,c(100,200,300)) > n3 [,1] [,2] [,3] [1,] 5 1 100 [2,] 2 2 200 [3,] 100 200 300 ♦عملگر%/% با استفاده از دستور« %/% » می توان خارج قسمت تقسیم را به دست آورد.مثال:
50%/%6 [1]8♦عملگر%% با استفاده از دستور«%%» می توان باقی مانده را به دست آورد.مثال:
50%%6 [1]2♦تابع()abs با استفاده از تابع()abs می توان قدر مطلق را نشان داد.مثال:
a<-c(-2,-6,7,-4) > a [1] -2 -6 7 -4 > abs(a) [1] 2 6 7 4 > a<-matrix(c(1,-4,-7,2),nr=2,nc=2) > a [,1] [,2] [1,] 1 -7 [2,] -4 2 > abs(a) [,1] [,2] [1,] 1 7 [2,] 4 2♦دستور ()ceiling و () floor با استفاده از دستور ()ceiling اولین عدد صحیح بزرگتر و () floor اولین عدد صحیح کوچکتر رامی توان نشان داد.مثال:
x<-c(-2,-1.5,-1,2,1,2.5) > a [,1] [,2] [1,] 1 -7 [2,] -4 2 > ceiling(x) [1] -2 -1 -1 2 1 3 > floor(x) [1] -2 -2 -1 2 1 2♦تابع ()exp با استفاده از دستور ()exp می توان تابع نمایی را نشان داد.مثال:
exp(3) [1]20.08554♦تابع()gamma با استفاده از دستور ()gammaمی توان گاما عدد مورد نظر را به دست آورد.مثال:
gamma(3) [1] 2♦تابع()lgamma با دستور()lgamma میتوان لگاریتم عدد مورد نظر را به دست آورد.مثال:
lgamma(3) [1] 0.6931472♦تابع ()log برای بدست آوردن لگاریتم طبیعی یک عدد از دستور ()Logاستفاده میکنیم.مثال:
log(10) [1] 2.302585 > log(8) [1] 2.079442♦تابع ()log10 برای بدست آوردن لگاریتم یک عدد در مبنای ۱۰ از دستور()Log10استفاده میکنیم.مثال:
log10(10) [1] 1 > log10(2) [1] 0.30103♦تابع ()rank با استفاده از دستور()rankداده ها از کوچک به بزرگ رتبه بندی مشود.مثال:
rank(c(14,5,8,4)) [1]4 2 3 1♦تابع()sort با استفاده از دستور()sortداده ها از کوچک به بزرگ مرتب می شود.مثال:
sort(c(14,5,8,4)) [1] 4 5 8 14♦تابع()order دستورorder()همان کار ()rankرا انجام میدهد.مثال:
order(c(14,5,8,4)) [1] 4 2 3 1♦تابع()summary با استفاده از دستور()summaryمی توان مقدار مینیمم،ماکسیمم،میانگین،میانه،چارک اول و سوم رانشان داد.مثال: > summary(c(14,5,8,4)) Min. 1st Qu. Median Mean 3rd Qu. Max. 4.00 4.75 6.50 7.75 9.50 14.00 ♦تایع()sin و ()cos با دستورSin() و Cos() میتوان مقادیر مورد نظر را بدست آورد.مثال:
sin(45) [1] 0.8509035 > cos(45) [1]0.525322♦تابعD(expression()) با استفاده از دستور(() D(expressionمی توان از معادله مورد نظر مشتق گرفت.مثال: > D(expression(7*x^4+2*x*y),"x") 7 * (4 * x^3) + 2 * y > D(expression(7*x^4+2*x*y),"y") 2 * x ♦تابع()polyroot با استفاده از دستور polyroot()میتوان ریشه های معادله را به دست آورد.مثال: ۲x^2-3x+1=0که فقط ضرایب معادله را در دستور می نویسیم. > polyroot(c(2,-3,1)) [1] 1+0i 2-0i با دستور زیر می توان ریشه های چند معادله و چند مجهوله را بدست آورد.مثال: ۵x+2z+3w=7 ۶x+7y+8z+2w=9 ۷x+9y+4z+w=10 ۸x+10y+7z+w=3 > a<-matrix(c(5,6,7,8,0,7,9,10,2,8,-4,7,3,2,1,1),nr=4) > dimnames(a)<-list(c(1,2,3,4),c("x","y","z","w")) > a x y z w 1 5 0 2 3 2 6 7 8 2 3 7 9 -4 1 4 8 10 7 1 > solve(a,c(7,9,10,3)) x y z w -2.9198606 2.2822300 -0.5783972 7.5853659
نظرات
هیچ نظری وجود ندارد.
افزودن نظر
Sitemap
Copyright © 2017 - 2023 Khavarzadeh®. All rights reserved