[R] R을 이용한 수치해석 : 2020년 대학수학능력시험 (수능) 가형 기출문제

 정보

  • 업무명     : R을 이용한 수치 해석 : 2020년 대학수학능력시험 (수능) 가형 문제

  • 작성자     : 박진만

  • 작성일     : 2020-05-18

  • 설   명      :

  • 수정이력 :

 

 내용

[개요]

  • R은 통계 분석 및 시각화 등의 기능을 갖춘 프로그래밍 언어 내지 통계 분석 환경입니다. 

  • 통계 분석 기능으로 수치 해석, 통계 검정, 선형 회귀 분석, 시계열 데이터 분석, 클러스터링 등을 지원하고 있습니다.

  • 또한 최신 논문에서 발표된 같은 새로운 기술도 R로 구현되는 경우가 많습니다.

  • 특히 시각화 기능으로 히스토그램, 막대 그래프, 선 그래프, 산포도, 나무 모양 그림이나 히트맵 등 기본적인 그래프가 기본으로 지원하고 있습니다.

  • 또한 ggplot2 등의 패키지를 사용하여 더 높은 수준의 그림을 가시화할 수 있습니다.

 

etc-image-0

 

[특징]

  • 데이터를 이해하기 위해서 수치 해석 및 데이터 시각화가 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 소프트웨어

     

[기능]

  • 기출 문제 1-9번 풀이

 

[활용 자료]

  • 없음

 

[자료 처리 방안 및 활용 분석 기법]

  • 없음

 

[사용법]

  • 소스 코드 예시 참조

 

[사용 OS]

  • Windows 10

 

[사용 언어]

  • R v4.0.0

  • R Studio v1.2.5033

 

 소스 코드

[문제지]

2020학년도 대학수학능력시험 수학가형 문제.pdf
2.55MB

 

[소스 코드 풀이]

library(stringr)
library(spatstat.utils)
library(polynom)

#### 가형 ####

#1. 

a = c(3,1)
b = c(-2,4)

result = a + 0.5 * b

ans = sum(result)


#2.

result_x = c()
result_y = c()

for (i in seq(0,-10,-0.001)) {
  
  x = 10 ** i
  y = 6 * x / (exp(4*x) - exp(2*x))
  

  result_x = append(result_x,x)
  result_y = append(result_y,y)
  
}


plot(result_x,result_y)

#3.

A = c(2,0,1)
B = c(3,2,0)


for (a in 1:5) {
  
  C = c(0,a,0)
  
  dist1 = sqrt((A[1] - C[1]) ** 2 + (A[2] - C[2]) ** 2 + (A[3] - C[3]) ** 2)
  dist2 = sqrt((B[1] - C[1]) ** 2 + (B[2] - C[2]) ** 2 + (B[3] - C[3]) ** 2)
  
  if(dist1 == dist2) {
    print(paste0("ans : ",a))
    print(paste0("A-B dist : ",dist1))
    print(paste0("A-C dist : ",dist2))
  }
  
}



# 4. 보류


# 지수가 음수인 다항식의 전개 방법.

aa <- function(x1,x2,parameter="x") {
  
  

}



# 5.

# x^2 - 3xy + y^2 = x 위의 점 (1,0) 에서의 접선의 기울기는?
## 요지 : x = 1 에서의 (dy/dx)를 구하라는 것
# 고로 x = 1 인 경우와 x = 1과 비교하여 아주 크거나 작은 수를 대입해 기울기를 구해보면 됨.

x1 <- 1
y1 <- 0

x2 <- 1.000001
y2 <- polyroot(c( (x2**2 - x2), (-3*x2), 1 ))[1]

result <- (y2-y1) / (x2-x1)


# 6. 흰 공 3개, 검은 공 4개가 들어 있는 주머니가 있다.
# 이 주머니에서 임의로 네 개의 공을 동시에 꺼낼 때,
# 흰 공 2개와 검은 공 2개가 나올 확률은? [3점]

# 해결법 : 많은 샘플



##



# 7. 보류



# 8.

x <- seq(exp(1),exp(2),length.out = 100000)

y <- (log(x) - 1) / x**2

nubi <- c()

for (i in 2:length(x)) {
  
  height <- (y[i] + y[i-1]) / 2
  width <- (x[i] - x[i-1])
  
  nubi_imsi <- height*width
  nubi <- append(nubi,nubi_imsi)

}

#
# result : 0.09720887 = (exp(1) - 2) / exp(2)
#1.
# (exp(1) + 2) / exp(2) 
# (exp(1) + 1) / exp(2)
# 1 / exp(1)
# (exp(1) - 1) / exp(2)
# (exp(1) - 2) / exp(2) # select



# 9.

t <- seq(0,pi/2,length.out = 100000)

x <- t + sin(t)*cos(t)
y <- tan(t)

plot(x,y,ylim = c(0,10))

result <- c()

for (i in 2:length(x)) {
  

  result_speed <- sqrt((x[i]-x[i-1]) ** 2 + (y[i]-y[i-1]) ** 2) * (100000/(pi/2))
  result <- append(result,result_speed)
  
}

min(result)

plot(result,ylim = c(0,20))

 

 참고 문헌

[논문]

  • 없음

[보고서]

  • 없음

[URL]

  • 없음

 

 문의사항

[기상학/프로그래밍 언어]

  • sangho.lee.1990@gmail.com

[해양학/천문학/빅데이터]

  • saimang0804@gmail.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음