R语言中的数学计算Word文件下载.docx

上传人:b****6 文档编号:17766809 上传时间:2022-12-09 格式:DOCX 页数:24 大小:59.26KB
下载 相关 举报
R语言中的数学计算Word文件下载.docx_第1页
第1页 / 共24页
R语言中的数学计算Word文件下载.docx_第2页
第2页 / 共24页
R语言中的数学计算Word文件下载.docx_第3页
第3页 / 共24页
R语言中的数学计算Word文件下载.docx_第4页
第4页 / 共24页
R语言中的数学计算Word文件下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

R语言中的数学计算Word文件下载.docx

《R语言中的数学计算Word文件下载.docx》由会员分享,可在线阅读,更多相关《R语言中的数学计算Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。

R语言中的数学计算Word文件下载.docx

#自然常数e

exp

(1)

[1]2.718282

#自然常数e的幂

exp(3)

[1]20.08554

#平方根

sqrt(c)

#以2为底的对数

log2(c)

#以10为底的对数

log10(b)

[1]0.69897

#自定义底的对数

log(c,base=2)

#自然常数e的对数

log(a,base=exp

(1))

[1]2.302585

#指数对数操作

log(a^b,base=a)

log(exp(3))

[1]3

比较计算:

==,>

<

!

=,<

=,>

=,isTRUE,identical

#比较计算

a==a;

a!

=b;

a>

b;

a<

=c

[1]TRUE

[1]FALSE

#判断是否为TRUE

isTRUE(a)

isTRUE(!

a)

#精确比较两个对象

identical(1,as.integer

(1))

identical(NaN,-NaN)

f<

-function(x)x

g<

-compiler:

:

cmpfun(f)

identical(f,g)

<

/b;

逻辑计算:

&

|,&

||,xor

x<

-c(0,1,0,1)

y<

-c(0,0,1,1)

#只比较第一个元素&

||

x&

y;

x||y

#S4对象的逻辑运算,比较所有元素&

|

x|y

[1]FALSEFALSEFALSETRUE

[1]FALSETRUETRUETRUE

#异或

xor(x,y)

[1]FALSETRUETRUEFALSE

xor(x,!

y)

[1]TRUEFALSEFALSETRUE

约数计算:

ceiling,floor,trunc,round,signif

#向上取整

ceiling(5.4)

[1]6

#向下取整

floor(5.8)

#取整数

trunc(3.9)

#四舍五入

round(5.8)

#四舍五入,保留2位小数

round(5.8833,2)

[1]5.88

#四舍五入,保留前2位整数

signif(5990000,2)

[1]6e+06

数组计算:

最大,最小,范围,求和,均值,加权平均,连乘,差分,秩,,中位数,分位数,任意数,全体数

d<

-seq(1,10,2);

d

[1]13579

#求最大值,最小值,范围range

max(d);

min(d);

range(d)

[1]9

[1]1

[1]19

#求和,均值

sum(d),mean(d)

[1]25

#加权平均

weighted.mean(d,rep(1,5))

weighted.mean(d,c(1,1,2,2,2))

[1]5.75

#连乘

prod(1:

5)

[1]120

#差分

diff(d)

[1]2222

#秩

rank(d)

[1]12345

#中位数

median(d)

#分位数

quantile(d)

0%25%50%75%100%

13579

#任意any,全体all

e<

-seq(-3,3);

e

[1]-3-2-10123

any(e<

0);

all(e<

0)

排列组合计算:

阶乘,组合,排列

#5!

阶乘

factorial(5)

#组合,从5个中选出2个

choose(5,2)

#列出从5个中选出2个的组合所有项

combn(5,2)

[,1][,2][,3][,4][,5][,6][,7][,8][,9][,10]

[1,]1111222334

[2,]2345345455

#计算0:

10的组合个数

for(nin0:

10)print(choose(n,k=0:

n))

[1]11

[1]121

[1]1331

[1]14641

[1]15101051

[1]1615201561

[1]172135352171

[1]18285670562881

[1]193684126126843691

[1]1104512021025221012045101

#排列,从5个中选出2个

choose(5,2)*factorial

(2)

[1]20

累积计算:

累加,累乘,最小累积,最大累积

#累加

cumsum(1:

[1]1361015

#累乘

cumprod(1:

[1]12624120

#最小累积cummin

cummin(e)

[1]-3-3-3-3-3-3-3

#最大累积cummax

cummax(e)

两个数组计算:

交集,并集,差集,数组是否相等,取唯一,查匹配元素的索引,找重复元素索引

#定义两个数组向量

x<

-c(9:

20,1:

5,3:

7,0:

8);

x

[1]9101112131415161718192012345

[18]34567012345678

-1:

10;

y

[1]12345678910

#交集

intersect(x,y)

[1]91012345678

#并集

union(x,y)

[18]6708

#差集,从x中排除y

setdiff(x,y)

[1]111213141516171819200

#判断是否相等

setequal(x,y)

#取唯一

unique(c(x,y))

#找到x在y中存在的元素的索引

which(x%in%y)

[1]12131415161718192021222425262728

[18]293031

which(is.element(x,y))

#找到重复元素的索引

which(duplicated(x))

[1]18192024252627282930

2三角函数计算

2.1三角函数

在直角三角形中仅有锐角(大小在0到90度之间的角)三角函数的定义。

给定一个锐角θ,可以做出一个直角三角形,使得其中的一个内角是θ。

设这个三角形中,θ的对边、邻边和斜边长度分别是a、b和h。

三角函数的6种关系:

正弦,余弦,正切,余切,正割,余割。

∙θ的正弦是对边与斜边的比值:

sinθ=a/h

∙θ的余弦是邻边与斜边的比值:

cosθ=b/h

∙θ的正切是对边与邻边的比值:

tanθ=a/b

∙θ的余切是邻边与对边的比值:

cotθ=b/a

∙θ的正割是斜边与邻边的比值:

secθ=h/b

∙θ的余割是斜边与对边的比值:

cscθ=h/a

三角函数的特殊值:

函数0pi/12pi/6pi/4pi/35/(12*pi)pi/2

sin0(sqrt(6)-sqrt

(2))/41/2sqrt

(2)/2sqrt(3)/2(sqrt(6)+sqrt

(2))/41

cos1(sqrt(6)+sqrt

(2))/4sqrt(3)/2sqrt

(2)/21/2(sqrt(6)-sqrt

(2))/40

tan02-sqrt(3)sqrt(3)/31sqrt(3)2+sqrt(3)NA

cotNA2+sqrt(3)sqrt(3)1sqrt(3)/32-sqrt(3)0

sec1sqrt(6)-sqrt

(2)sqrt(3)*2/3sqrt

(2)2sqrt(6)-sqrt

(2)NA

cscNA2sqrt

(2)sqrt(3)*2/3sqrt(6)-sqrt

(2)1NA

三角基本函数:

正弦,余弦,正切

#正弦

sin(0);

sin

(1);

sin(pi/2)

[1]0.841471

#余弦

cos(0);

cos

(1);

cos(pi)

[1]0.5403023

[1]-1

#正切

tan(0);

tan

(1);

tan(pi)

[1]1.557408

[1]-1.224647e-16

接下来,我们用ggplot2包来画出三角函数的图形。

#加载ggplot2的库

library(ggplot2)

library(scales)

三角函数画图

#x坐标

-seq(-2*pi,2*pi,by=0.01)

#y坐标

s1<

-data.frame(x,y=sin(x),type=rep('

sin'

length(x)))#正弦

s2<

-data.frame(x,y=cos(x),type=rep('

cos'

length(x)))#余弦

s3<

-data.frame(x,y=tan(x),type=rep('

tan'

length(x)))#正切

s4<

-data.frame(x,y=1/tan(x),type=rep('

cot'

length(x)))#余切

s5<

-data.frame(x,y=1/sin(x),type=rep('

sec'

length(x)))#正割

s6<

-data.frame(x,y=1/cos(x),type=rep('

csc'

length(x)))#余割

df<

-rbind(s1,s2,s3,s4,s5,s6)

#用ggplot2画图

g<

-ggplot(df,aes(x,y))

-g+geom_line(aes(colour=type,stat='

identity'

))

-g+scale_y_continuous(limits=c(0,2))

-g+scale_x_continuous(breaks=seq(-2*pi,2*pi,by=pi),labels=c("

-2*pi"

"

-pi"

0"

pi"

2*pi"

g

2.1反三角函数

基本的反三角函数定义:

反三角函数定义值域

arcsin(x)=ysin(y)=x-pi/2<

=y<

=pi/2

arccos(x)=ycos(y)=x0<

=pi,

arctan(x)=ytan(y)=x-pi/2<

y<

pi/2

arccsc(x)=ycsc(y)=x-pi/2<

=pi/2,y!

=0

arcsec(x)=ysec(y)=x0<

=pi,y!

=pi/2

arccot(x)=ycot(y)=x0<

pi

反正弦,反余弦,反正切

#反正弦asin

asin(0);

asin

(1)

[1]1.570796#pi/2=1.570796

#反余弦acos

acos(0);

acos

(1)

#反正切atan

atan(0);

atan

(1)

[1]0.7853982#pi/4=0.7853982

反三角函数画图

-seq(-1,1,by=0.005)

-data.frame(x,y=asin(x),type=rep('

arcsin'

length(x)))

-data.frame(x,y=acos(x),type=rep('

arccos'

-data.frame(x,y=atan(x),type=rep('

arctan'

-data.frame(x,y=1/atan(x),type=rep('

arccot'

-data.frame(x,y=1/asin(x),type=rep('

arcsec'

-data.frame(x,y=1/acos(x),type=rep('

arccsc'

-g+scale_y_continuous(limits=c(-2*pi,2*pi),breaks=seq(-2*pi,2*pi,by=pi),labels=c("

2.3三角函数公式

接下来,用单元测试的方式,来描述三角函数的数学公式。

通过testthat包,进行单元测试,关于testthat包的安装和使用,请参考文章:

在巨人的肩膀前行催化R包开发

#加载testthat包

library(testthat)

#定义变量

-10

平方和公式:

∙sin(x)^2+cos(x)^2=1

expect_that(sin(a)^2+cos(a)^2,equals

(1))

和角公式

∙sin(a+b)=sin(a)*cos(b)+sin(b)*cos(a)

∙sin(a-b)=sin(a)*cos(b)-sin(b)*cos(a)

∙cos(a+b)=cos(a)*cos(b)-sin(b)*sin(a)

∙cos(a-b)=cos(a)*cos(b)+sin(b)*sin(a)

∙tan(a+b)=(tan(a)+tan(b))/(1-tan(a)*tan(b))

∙tan(a-b)=(tan(a)-tan(b))/(1+tan(a)*tan(b))

expect_that(sin(a)*cos(b)+sin(b)*cos(a),equals(sin(a+b)))

expect_that(sin(a)*cos(b)-sin(b)*cos(a),equals(sin(a-b)))

expect_that(cos(a)*cos(b)-sin(b)*sin(a),equals(cos(a+b)))

expect_that(cos(a)*cos(b)+sin(b)*sin(a),equals(cos(a-b)))

expect_that((tan(a)+tan(b))/(1-tan(a)*tan(b)),equals(tan(a+b)))

expect_that((tan(a)-tan(b))/(1+tan(a)*tan(b)),equals(tan(a-b)))

2倍角公式

∙sin(2*a)=2*sin(a)*cos(a)

∙cos(2*a)=cos(a)^2-sin(a)^2=2*cos(a)^2-1=1-2*sin2(a)

expect_that(cos(a)^2-sin(a)^2,equals(cos(2*a)))

expect_that(2*cos(a)^2-1,equals(cos(2*a)))

expect_that(1-2*sin(a)^2,equals(cos(2*a)))

3倍角公式

∙cos(3*a)=4*cos(a)^3-3*cos(a)

∙sin(3*a)=-4*sin(a)^3+3*sin(a)

expect_that(4*cos(a)^3-3*cos(a),equals(cos(3*a)))

expect_that(-4*sin(a)^3+3*sin(a),equals(sin(3*a)))

半角公式

∙sin(a/2)=sqrt((1-cos(a))/2)

∙cos(a/2)=sqrt((1+cos(a))/2)

∙tan(a/2)=sqrt((1-cos(a))/(1+cos(a)))=sin(a)/(1+cos(a))=(1-cos(a))/sin(a)

expect_that(sqrt((1-cos(a))/2),equals(abs(sin(a/2))))

expect_that(sqrt((1+cos(a))/2),equals(abs(cos(a/2))))

expect_that(sqrt((1-cos(a))/(1+cos(a))),equals(abs(tan(a/2))))

expect_that(abs(sin(a)/(1+cos(a))),equals(abs(tan(a/2))))

expect_that(abs((1-cos(a))/sin(a)),equals(abs(tan(a/2))))

和差化积

∙sin(a)*cos(b)=(sin(a+b)+sin(a-b))/2

∙cos(a)*sin(b)=(sin(a+b)-sin(a-b))/2

∙cos(a)*cos(b)=(cos(a+b)+cos(a-b))/2

∙sin(a)*sin(b)=(cos(a-b)-cos(a+b))/2

expect_that((sin(a+b)+sin(a-b))/2,equals(sin(a)*cos(b)))

expect_that((sin(a+b)-sin(a-b))/2,equals(cos(a)*sin(b)))

expect_that((cos(a+b)+cos(a-b))/2,equals(cos(a)*cos(b)))

expect_that((cos(a-b)-cos(a+b))/2,equals(sin(a)*sin(b)))

积化和差

∙sin(a)+sin(b)=2*sin((a+b)/2)*cos((a+b)/2)

∙sin(a)-sin(b)=2*cos((a+b)/2)*cos((a-b)/2)

∙cos(a)+cos(b)=2*cos((a+b)/2)*cos((a-b)/2)

∙cos(a)-cos(b)=-2*sin((a+b)/2)*sin((a-b)/2)

expect_that(sin(a)+sin(b),equals(2*sin((a+b)/2)*cos((a-b)/2)))

expect_that(sin(a)-sin(b),equals(2*cos((a+b)/2)*sin((a-b)/2)))

expect_that(2*cos((a+b)/2)*cos((a-b)/2),equals(cos(a)+cos(b)))

expect_that(-2*sin((a+b)/2)*sin((a-b)/2),equals(cos(a)-cos(b)))

万能公式

∙sin(2*a)=2*tan(a)/(1+tan(a)^2)

∙cos(2*a)=(1-tan(a)^2)/(1+tan(a)^2)

∙tan(2*a)=2*tan(a)/(1-tan(a)^2)

expect_that(sin(2*a),equals(2*tan(a)/(1+tan(a)^2)))

expect_that((1-tan(a)^2)/(1+tan(a)^2),equals(cos(2*a)))

expect_that(2*tan(a)/(1-tan(a)^2),equals(tan(2*a)))

平方差公式

∙sin(a+b)*sin(a-b)=sin(a)^2+sin(b)^2

∙cos(a+b)*cos(a-b)=cos(a)^2+sin(b)^2

expect_that(sin(a)^2-sin(b)^2,equals(sin(a+b)*sin(a-b)))

expect_that(cos(a)^2-sin(b)^2,equals(cos(a+b)*cos(a-b)))

降次升角公式

∙cos(a)^2=(1+cos(2*a))/2

∙sin(a)^2=(1-cos(2*a))/2

expect_that((1+cos(2*a))/2,equals(cos

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学案例设计

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1