반응형

     정보

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

    • 작성자     : 박진만

    • 작성일     : 2020-05-18

    • 설   명      :

    • 수정이력 :

     

     내용

    [개요]

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

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

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

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

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

     

     

    [특징]

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

       

    [기능]

    • 기출 문제 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

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기