ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【统计建模与R软件】第二章 R软件的使用 上机练习4 猴子吃桃 鸡兔同笼

2021-07-04 16:58:33  阅读:375  来源: 互联网

标签:10 鸡兔同笼 吃桃 sum table 软件 txt my mean


上机练习及解析

10位同学的姓名、性别、年龄、身高、体重数据如下:

Name Sex Age Height Weight
Alice   F  13   56.5   84.0
Sandy   F  11   51.3   50.5
Sharon  F  15   62.5  112.5
Tammy   F  14   62.8  102.5
Alfred  M  14   69.0  112.5
Duke   M  14   63.5  102.5
Guido   M  15   67.0  133.0
Robert  M  12   64.8  128.0
Thomas  M  11   57.5   85.0
William M  15   66.5  112.0

1)a. 用数据框的形式读入数据,数据框的名称为my.class

# T1.1
setwd("C:/Users/87029/Desktop") # 设置工作路径
my.class = read.table("stu.txt",header=TRUE) # 读取文件stu.txt
class(my.class) # 验证数据类型

b. 将上述数据写成一个纯文本的文件(文件名为class.txt),并用函数read.table()读取文件中的身高和体重数据

# T1.2
write.table(my.class,file="student.txt")
read.table("student.txt",header=TRUE)$Height # 身高数据
read.table("student.txt",header=TRUE)$Weight # 体重数据

2)用函数rep()构造一个向量x,它由5个3,10个2,98个1构成

# T2
rep(c(3,2,1),c(5,10,98))
# rep中:
# 第一个参数为要输出的向量
# 第二个参数为该向量重复的次数,分别一一对应

3)使用for循环输出1至100之间的能够被3或5整除的数,并求和

# T3
sum = 0
for (i in 1:100) {
  if (i %% 3 == 0 | i %% 5 == 0) {
    sum = sum + i
  }
}
sum

4)自己编写一个函数,求数据y=(y1,y2,…,yn)的均值、标准差、偏度与峰度

# T4
# 求均值
my.mean = function(x) sum(x)/length(x)

# 求标准差
my.std = function(x) sum(((x-mean(x))^2)^0.5)

# 求偏度
my.kur = function(f) {
  fenzi = sum( (f-mean(f))^3 )/length(f)
  fenmu = ((sum( (f-mean(f))^2 )/(length(f)-1)))^(1.5)
  fenzi/fenmu
}

# 求峰度
my.skew = function(x) {
  fenzi = sum( (x-mean(x))^4 )/length(x)
  fenmu = ( sum(x-mean(x))^2/length(x) )^2
  (fenzi/fenmu)-3
}

5)鸡兔同笼问题:鸡和兔子关在一个笼子里,已知共有头36个,脚100个,编程求笼内关了多少只兔子和多少只鸡?

# T5
f = matrix(c(1,1,4,2),nrow=2,byrow=TRUE) # 方程系数
rf = matrix(c(36,100),nrow=2,byrow=FALSE) # 方程等数
result = solve(f,rf) # 解方程命令
result # 第一个数为x1,第二个为x2,以此类推

6)猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第10天早上想再吃时,见只剩一个桃子了,编程求第一天共摘多少桃子

# T6
getPeaches = function(n) { # 求第n天的桃子数量
  if (n==10) { return(1) } # 第10天,剩余1个桃子
  else {
    return((getPeaches(n+1)+1)*2)
  }
}
getPeaches(1)

7)

# T7
# 这题不会,哈哈
# 之前不知道从哪儿复制粘贴的,看不懂别问我,我也不懂= =

Newtons<-function(fun,x,ep=1e-5,it_max=100){
  index<-0;k<-1
  while(k<=it_max){
    x1<-x;obj<-fun(x);
    x<-x-solve(obj$j,obj$f)
    norm<-sqrt((x-x1)%*%(x-x1))
    if(norm<ep){
      index<-1;break
    }
    k=k+1
  }
  obj<-fun(x)
  list(root=x,it=k,index=index,Fval=obj$f)
}

fun<-function(x){
  f<-c(x[1]^2+x[2]^2-5,(x[1]+1)*x[2]-(3*x[1]+1))
  j<-matrix(c(2*x[1],2*x[2],x[2]-3,x[1]+1),nrow = 2,byrow = T)
  list(f=f,j=j)
}

Newtons(fun,c(0,1))

8)画出身高的散点图和茎叶图,再画出体重盒形图和直方图

身高体重数据如下:

weight height
4.17 1.75
5.58 1.8
5.18 1.65
6.11 1.9
4.5 1.74
4.61 1.91
5.17 1.75
4.53 1.8
5.33 1.65
5.14 1.9
4.81 1.74
4.17 1.91
4.41 1.75
3.59 1.8
5.87 1.65
3.83 1.9
6.03 1.74
4.89 1.91
4.32 1.75
4.69 1.8

代码:

# T8
data = read.table("HW.txt",header=T)

plot(data$height) # 身高散点图
stem(data$height) # 身高茎叶图

boxplot(data$weight) # 体重箱型图
hist(data$weight) # 体重直方图

标签:10,鸡兔同笼,吃桃,sum,table,软件,txt,my,mean
来源: https://blog.csdn.net/onion23/article/details/118462989

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有