├── img ├── 11.png ├── 14.png ├── 15.png ├── 16.png ├── 17.png └── 26.png ├── README.md ├── .ipynb_checkpoints └── 2017_CSAT_Mathematics_Type_GA-checkpoint.ipynb ├── 2019_CSAT_Mathematics_Type_GA.ipynb └── 2017_CSAT_Mathematics_Type_GA.ipynb /img/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serithemage/2017_CSAT_Mathematics_Type_GA/HEAD/img/11.png -------------------------------------------------------------------------------- /img/14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serithemage/2017_CSAT_Mathematics_Type_GA/HEAD/img/14.png -------------------------------------------------------------------------------- /img/15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serithemage/2017_CSAT_Mathematics_Type_GA/HEAD/img/15.png -------------------------------------------------------------------------------- /img/16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serithemage/2017_CSAT_Mathematics_Type_GA/HEAD/img/16.png -------------------------------------------------------------------------------- /img/17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serithemage/2017_CSAT_Mathematics_Type_GA/HEAD/img/17.png -------------------------------------------------------------------------------- /img/26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/serithemage/2017_CSAT_Mathematics_Type_GA/HEAD/img/26.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # 파이썬으로 풀어보는 2017학년도 대학수학능력시험 수학영역 3 | 4 | - 문제는 [여기](http://cdnvod.yonhapnews.co.kr/yonhapnewsvod/public/20161117/2/2017_2.pdf)에서 확인하실 수 있습니다. 5 | - 실행결과는 [이쪽](http://mybinder.org/repo/serithemage/2017_csat_mathematics_type_ga)에서 확인 하실 수 있습니다. 6 | - 소스와 실행결과가 동기화 되지 않았을 경우 [여기](http://mybinder.org/status/serithemage/2017_csat_mathematics_type_ga)를 클릭 해 주세요. 7 | - 풀이에 대한 의견은 [issues](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA/issues)에 적어주세요. 8 | - [jupyter notebook](http://jupyter.org/)을 이용해서 풀고 있습니다. 9 | - jupyter notebook은 [Anaconda](https://www.continuum.io/downloads)를 통해 손쉽게 설치할 수 있습니다. 10 | - 혹은 `pip install jupyter`를 통해 jupyter를 설치하시고 `jupyter notebook`명령어로 로컬 jupyter를 실행시킬 수 있습니다. 11 | - 문제에 필요한 수식은 [여기](http://meta.math.stackexchange.com/questions/5020/mathjax-basic-tutorial-and-quick-reference)와 [여기](http://csrgxtu.github.io/2015/03/20/Writing-Mathematic-Fomulars-in-Markdown/)에서 참고하실 수 있습니다. 12 | - **제 자신은 수학도 파이썬도 허접해서 상당히 애를 먹고 있습니다. 능력자 분들의 Pull request 환영합니다!** 13 | -------------------------------------------------------------------------------- /.ipynb_checkpoints/2017_CSAT_Mathematics_Type_GA-checkpoint.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "metadata": {}, 6 | "source": [ 7 | "# 파이썬으로 풀어보는 2017학년도 대학수학능력시험 수학영역\n", 8 | "\n", 9 | "## [github](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA)을 통해 누구나 참여하실 수 있습니다.\n", 10 | "\n", 11 | "- [jupyter notebook](http://jupyter.org/)을 이용해서 풀고 있습니다.\n", 12 | "- jupyter notebook은 [Anaconda](https://www.continuum.io/downloads)를 통해 손쉽게 설치할 수 있습니다.\n", 13 | "- 실행결과는 [이쪽](https://anaconda.org/ymath/2017_csat_mathematics_type_ga/notebook)에서 확인 하실 수 있습니다.\n", 14 | "- 풀이에 대한 의견은 [issues](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA/issues)에 적어주세요.\n", 15 | "- **제 자신은 수학도 파이썬도 허접해서 상당히 애를 먹고 있습니다. 능력자 분들의 Pull request 환영합니다!**\n" 16 | ] 17 | }, 18 | { 19 | "cell_type": "markdown", 20 | "metadata": {}, 21 | "source": [ 22 | "$1.\\space 두\\space 백터\\space \\overrightarrow{a}=(1,3),\\space \\overrightarrow{b}=(5,-6)에\\space 대하여\\space 벡터 \\overrightarrow{a}-\\overrightarrow{b}의\\space 모든\\space 성분의\\space 합은?$" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 1, 28 | "metadata": { 29 | "collapsed": true 30 | }, 31 | "outputs": [], 32 | "source": [ 33 | "import numpy as np" 34 | ] 35 | }, 36 | { 37 | "cell_type": "code", 38 | "execution_count": 2, 39 | "metadata": { 40 | "collapsed": false 41 | }, 42 | "outputs": [ 43 | { 44 | "data": { 45 | "text/plain": [ 46 | "5" 47 | ] 48 | }, 49 | "execution_count": 2, 50 | "metadata": {}, 51 | "output_type": "execute_result" 52 | } 53 | ], 54 | "source": [ 55 | "a = np.matrix([1,3])\n", 56 | "b = np.matrix([5,-6])\n", 57 | "np.sum(a-b)" 58 | ] 59 | }, 60 | { 61 | "cell_type": "markdown", 62 | "metadata": { 63 | "collapsed": false 64 | }, 65 | "source": [ 66 | "$2.\\space\\lim_{x \\to 0}\\frac{e^{6x}-1}{ln(1+3x)}의\\space값은?$" 67 | ] 68 | }, 69 | { 70 | "cell_type": "code", 71 | "execution_count": 6, 72 | "metadata": { 73 | "collapsed": false 74 | }, 75 | "outputs": [ 76 | { 77 | "data": { 78 | "text/plain": [ 79 | "mpf('2.0')" 80 | ] 81 | }, 82 | "execution_count": 6, 83 | "metadata": {}, 84 | "output_type": "execute_result" 85 | } 86 | ], 87 | "source": [ 88 | "from mpmath import *\n", 89 | "limit(lambda x: (exp(6*x)-1)/(ln(1+3*x)), 0)" 90 | ] 91 | }, 92 | { 93 | "cell_type": "markdown", 94 | "metadata": { 95 | "collapsed": true 96 | }, 97 | "source": [ 98 | "$3.\\space \\int_{0}^{\\frac{\\pi}{2}}2\\sin \\space x \\space dx 의 값은?$" 99 | ] 100 | }, 101 | { 102 | "cell_type": "code", 103 | "execution_count": 10, 104 | "metadata": { 105 | "collapsed": false 106 | }, 107 | "outputs": [ 108 | { 109 | "data": { 110 | "text/plain": [ 111 | "(1.9999999999999998, 2.2204460492503128e-14)" 112 | ] 113 | }, 114 | "execution_count": 10, 115 | "metadata": {}, 116 | "output_type": "execute_result" 117 | } 118 | ], 119 | "source": [ 120 | "from scipy import integrate\n", 121 | "f = lambda x: 2*sin(x)\n", 122 | "integrate.quad(f,0,pi/2)" 123 | ] 124 | }, 125 | { 126 | "cell_type": "markdown", 127 | "metadata": {}, 128 | "source": [ 129 | "$4.\\space 두\\space 사건\\space A와\\space B는\\space 서로\\space 독립이고\\\\\n", 130 | "P(B^{C})=\\frac{1}{3}, P(A|B)=\\frac{1}{2} \\\\\n", 131 | "일\\space 때,\\space P(A)P(B)의 값은?\\space (단, B^{C}은\\space B의\\space 여사건이다.)$\n", 132 | "> A,B가 서로 독립일때 P(A)P(B)=P(A) 이 성립한다 ([출처:위키피디아](https://ko.wikipedia.org/wiki/%EC%A1%B0%EA%B1%B4%EB%B6%80_%ED%99%95%EB%A5%A0))" 133 | ] 134 | }, 135 | { 136 | "cell_type": "code", 137 | "execution_count": 12, 138 | "metadata": { 139 | "collapsed": false 140 | }, 141 | "outputs": [ 142 | { 143 | "data": { 144 | "text/plain": [ 145 | "0.33333333333333337" 146 | ] 147 | }, 148 | "execution_count": 12, 149 | "metadata": {}, 150 | "output_type": "execute_result" 151 | } 152 | ], 153 | "source": [ 154 | "PB = 1 - (1/3)\n", 155 | "PA = 1/2\n", 156 | "PA * PB" 157 | ] 158 | }, 159 | { 160 | "cell_type": "markdown", 161 | "metadata": {}, 162 | "source": [ 163 | "5.숫자 1,2,3,4,5 중에서 중복을 허락하여 네 개를 택해 일렬로 나열하여 만든 네 자리의 자연수가 5의 배수인 경우의 수는?\n", 164 | "\n", 165 | "> 5의 배수가 될 수 있는 수는 끝자리가 0 아니면 5가 되어야 하는데 제시된 5개의 숫자중에 0이 없다. 따라서 5x5x5x1" 166 | ] 167 | }, 168 | { 169 | "cell_type": "code", 170 | "execution_count": 13, 171 | "metadata": { 172 | "collapsed": false 173 | }, 174 | "outputs": [ 175 | { 176 | "data": { 177 | "text/plain": [ 178 | "125" 179 | ] 180 | }, 181 | "execution_count": 13, 182 | "metadata": {}, 183 | "output_type": "execute_result" 184 | } 185 | ], 186 | "source": [ 187 | "5*5*5*1" 188 | ] 189 | }, 190 | { 191 | "cell_type": "markdown", 192 | "metadata": {}, 193 | "source": [ 194 | "$6.\\space함수\\space f(x)=x^3+x+1의\\space 역함수를\\space g(x)라\\space 할때,\\space g'(1)의\\space 값은?$\n", 195 | "\n", 196 | "> 역함수의 미분은 원래 함수를 미분한 값의 역과 같음. 출전: http://j1w2k3.tistory.com/316" 197 | ] 198 | }, 199 | { 200 | "cell_type": "code", 201 | "execution_count": 2, 202 | "metadata": { 203 | "collapsed": false 204 | }, 205 | "outputs": [ 206 | { 207 | "data": { 208 | "text/plain": [ 209 | "1" 210 | ] 211 | }, 212 | "execution_count": 2, 213 | "metadata": {}, 214 | "output_type": "execute_result" 215 | } 216 | ], 217 | "source": [ 218 | "from sympy import *\n", 219 | "x = symbols('x') # 심볼 정의\n", 220 | "fx = x**3+x+1 # 식 정의\n", 221 | "1 / diff(fx).doit().subs({x:0})" 222 | ] 223 | }, 224 | { 225 | "cell_type": "markdown", 226 | "metadata": {}, 227 | "source": [ 228 | "7.한 개의 주사위를 3 번 던질 때, 4 의 눈이 한 번만 나올 확률은?\n", 229 | "\n", 230 | "> 4이외의 주사위가 두번 그리고 4가 한번 나올 확률이므로 \n", 231 | "\n", 232 | "$\\frac{5*5*1*3}{6^3} = \\frac{25}{72}$" 233 | ] 234 | }, 235 | { 236 | "cell_type": "code", 237 | "execution_count": 18, 238 | "metadata": { 239 | "collapsed": false 240 | }, 241 | "outputs": [ 242 | { 243 | "data": { 244 | "text/plain": [ 245 | "25.0" 246 | ] 247 | }, 248 | "execution_count": 18, 249 | "metadata": {}, 250 | "output_type": "execute_result" 251 | } 252 | ], 253 | "source": [ 254 | "from math import gcd\n", 255 | "a = 5*5*1*3 # 4 이외의 주사위가 2번 그리고 4가 1번 나올 확률\n", 256 | "b = 6**3 # 주사위를 3번 던졌을때 모든 확률\n", 257 | "c = gcd(a,b) # 최대 공약수\n", 258 | "a / c # 분자" 259 | ] 260 | }, 261 | { 262 | "cell_type": "code", 263 | "execution_count": 16, 264 | "metadata": { 265 | "collapsed": false 266 | }, 267 | "outputs": [ 268 | { 269 | "data": { 270 | "text/plain": [ 271 | "72.0" 272 | ] 273 | }, 274 | "execution_count": 16, 275 | "metadata": {}, 276 | "output_type": "execute_result" 277 | } 278 | ], 279 | "source": [ 280 | "b / c # 분모" 281 | ] 282 | }, 283 | { 284 | "cell_type": "markdown", 285 | "metadata": { 286 | "collapsed": true 287 | }, 288 | "source": [ 289 | "$8.\\ 좌표공간의\\ 두\\ 점\\ A(1,\\space a,\\space-6),\\space B(-3,\\space2,\\space b)에\\space대하여\\\\\n", 290 | "\\space선분\\space AB를\\space3:2로\\space외분하는\\space점이\\space x축\\space위에\\space있을\\space때,\\space a+b의\\space값은?$\n", 291 | "> 외분점의 y, z좌표가 0이어야만 한다." 292 | ] 293 | }, 294 | { 295 | "cell_type": "code", 296 | "execution_count": 19, 297 | "metadata": { 298 | "collapsed": false 299 | }, 300 | "outputs": [ 301 | { 302 | "name": "stdout", 303 | "output_type": "stream", 304 | "text": [ 305 | "a : 3, b : -4, a+b = -1\n" 306 | ] 307 | } 308 | ], 309 | "source": [ 310 | "from sympy.solvers import solve\n", 311 | "from sympy import Symbol\n", 312 | "a = Symbol(\"a\")\n", 313 | "b = Symbol(\"b\")\n", 314 | "fa = solve((3*2 - 2*a)/(3-2), a).pop()\n", 315 | "fb = solve((3*b - 2*-6)/(3-2), b).pop()\n", 316 | "print(\"a : {}, b : {}, a+b = {}\".format(fa, fb, fa+fb))" 317 | ] 318 | }, 319 | { 320 | "cell_type": "markdown", 321 | "metadata": {}, 322 | "source": [ 323 | "$9.\\ \\int_{1}^{e}\\ln \\frac{x}{e} \\ dx 의\\ 값은?$" 324 | ] 325 | }, 326 | { 327 | "cell_type": "code", 328 | "execution_count": 11, 329 | "metadata": { 330 | "collapsed": false 331 | }, 332 | "outputs": [ 333 | { 334 | "name": "stdout", 335 | "output_type": "stream", 336 | "text": [ 337 | "(-0.7182818284590452, 7.97453024125089e-15)\n", 338 | "-0.7182818284590452 = 2-e\n" 339 | ] 340 | } 341 | ], 342 | "source": [ 343 | "from scipy import integrate, log, e\n", 344 | "f = lambda x: log(x/e)\n", 345 | "result = integrate.quad(f, 1, e)\n", 346 | "print(result)\n", 347 | "print(result[0], \"= 2-e\")" 348 | ] 349 | }, 350 | { 351 | "cell_type": "markdown", 352 | "metadata": {}, 353 | "source": [ 354 | "$10.\\ 좌표평면\\ 위를\\ 움직이는\\ 점\\ P의\\ 시각\\ t\\ (t>0)에서의\\ 위치\\ (x,\\ y)가\\\\\n", 355 | "x=t-\\frac{2}{t},\\ y=2t+\\frac{1}{t}\\\\\n", 356 | "이다.\\ 시각\\ t=1에서\\ 점\\ P의\\ 속력은?$" 357 | ] 358 | }, 359 | { 360 | "cell_type": "code", 361 | "execution_count": 70, 362 | "metadata": { 363 | "collapsed": false 364 | }, 365 | "outputs": [ 366 | { 367 | "name": "stdout", 368 | "output_type": "stream", 369 | "text": [ 370 | "3.16227766016838\n" 371 | ] 372 | } 373 | ], 374 | "source": [ 375 | "from mpmath import *\n", 376 | "fx = lambda t: t-2/t\n", 377 | "fy = lambda t: 2*t+1/t\n", 378 | "dfx = diff(fx, 1)\n", 379 | "dfy = diff(fy, 1)\n", 380 | "result = root(dfx**2 + dfy**2, n=2)\n", 381 | "print(result, \"= sqrt(10)\")" 382 | ] 383 | }, 384 | { 385 | "cell_type": "markdown", 386 | "metadata": {}, 387 | "source": [ 388 | "$11.\\ 그림과\\ 같이\\ 곡선\\ y=\\sqrt{x}+1과\\ x축,\\ y축\\ 및\\ 직선\\ x=1로\\\\\n", 389 | "둘러싸인\\ 도형을\\ 밑면으로\\ 하는\\ 입체도형이\\ 있다.\\ 이\\ 입체도형을\\\\\n", 390 | "x축에\\ 수직인\\ 평면으로\\ 자른\\ 단면이\\ 모두\\ 정사각형일\\ 때,\\\\\n", 391 | "이\\ 입체도형의\\ 부피는?$\n", 392 | "![11번 문제](img/11.png)" 393 | ] 394 | }, 395 | { 396 | "cell_type": "code", 397 | "execution_count": 13, 398 | "metadata": { 399 | "collapsed": false 400 | }, 401 | "outputs": [ 402 | { 403 | "name": "stdout", 404 | "output_type": "stream", 405 | "text": [ 406 | "17/6\n" 407 | ] 408 | } 409 | ], 410 | "source": [ 411 | "import scipy.integrate as integrate\n", 412 | "import math\n", 413 | "from fractions import Fraction\n", 414 | "\n", 415 | "def length_of_side(x):\n", 416 | " return math.sqrt(x)+1\n", 417 | "def area_of_one(x):\n", 418 | " return length_of_side(x)**2\n", 419 | "\n", 420 | "volume = integrate.quad(area_of_one, 0, 1)\n", 421 | "\n", 422 | "# convert a decimal num into fraction\n", 423 | "volume = Fraction(volume[0]).limit_denominator()\n", 424 | "\n", 425 | "print(volume)" 426 | ] 427 | }, 428 | { 429 | "cell_type": "markdown", 430 | "metadata": {}, 431 | "source": [ 432 | "$12.\\ 좌표공간에서\\ 평면\\ 2x+2y-z+5=0과\\ xy평면이\\ 이루는\\\\\n", 433 | "예각의\\ 크기를\\ \\theta 라\\ 할\\ 때, \\cos{\\theta}의\\ 값은?$\n", 434 | "> 두 법선벡터의 내적을 이용한다.\n", 435 | "> 단, 두 평면이 이루는 예각을 구하기 때문에 절대값이다." 436 | ] 437 | }, 438 | { 439 | "cell_type": "code", 440 | "execution_count": 7, 441 | "metadata": { 442 | "collapsed": false 443 | }, 444 | "outputs": [ 445 | { 446 | "data": { 447 | "text/plain": [ 448 | "0.33333333333333331" 449 | ] 450 | }, 451 | "execution_count": 7, 452 | "metadata": {}, 453 | "output_type": "execute_result" 454 | } 455 | ], 456 | "source": [ 457 | "import numpy as np\n", 458 | "\n", 459 | "a = np.array([2, 2, -1])\n", 460 | "b = np.array([0, 0, 1])\n", 461 | "numerator = np.dot(a, b)\n", 462 | "\n", 463 | "norm_a = np.linalg.norm(a)\n", 464 | "norm_b = np.linalg.norm(b)\n", 465 | "denominator = norm_a * norm_b\n", 466 | "\n", 467 | "abs(numerator / denominator)" 468 | ] 469 | }, 470 | { 471 | "cell_type": "markdown", 472 | "metadata": {}, 473 | "source": [ 474 | "$13.\\ 정규분포\\ N(0,\\ 4^2)을\\ 따르는\\ 모집단에서\\ 크기가\\ 9인\\ 표본을\\ 임의추출하여\\ 구한\\\\\n", 475 | "표본평균을\\ \\overline{X},\\ 정규분포\\ N(3,\\ 2^2)을\\ 따르는\\ 모집단에서\\ 크기가\\ 16인\\ 표본을\\ 임의추출하여\\ 구한\\\\\n", 476 | "표본평균을\\ \\overline{Y}라\\ 하자.\\\\\n", 477 | "P(\\overline{X}\\ge 1)\\ =\\ P(\\overline{Y}\\le a)를\\ 만족시키는\\ 상수\\ a의\\ 값은?\\\\\n", 478 | "> X와\\ Y를\\ 정규분포화\\ 하여\\ 비교한다.$" 479 | ] 480 | }, 481 | { 482 | "cell_type": "code", 483 | "execution_count": 8, 484 | "metadata": { 485 | "collapsed": false 486 | }, 487 | "outputs": [ 488 | { 489 | "data": { 490 | "text/plain": [ 491 | "[2.62500000000000]" 492 | ] 493 | }, 494 | "execution_count": 8, 495 | "metadata": {}, 496 | "output_type": "execute_result" 497 | } 498 | ], 499 | "source": [ 500 | "from sympy.solvers import solve\n", 501 | "from sympy import Symbol\n", 502 | "\n", 503 | "a = Symbol(\"a\")\n", 504 | "\n", 505 | "X_bar_mean = 0\n", 506 | "X_bar_var = 4/3\n", 507 | "Y_bar_mean = 3\n", 508 | "Y_bar_var = 1/2\n", 509 | "\n", 510 | "solve((2*a - 2*Y_bar_mean + (1-0)/X_bar_var), a)" 511 | ] 512 | }, 513 | { 514 | "cell_type": "markdown", 515 | "metadata": {}, 516 | "source": [ 517 | "$14.\\ 그림과\\ 같이\\ 반지름의\\ 길이가\\ 1이고\\ 중심각의\\ 크기가\\ \\frac{\\pi}{2}인\\ 부채꼴\\ OAB가\\ 있다.\\\\\n", 518 | "호\\ AB\\ 위의\\ 점\\ P에서\\ 선분\\ OA에\\ 내린\\ 수선의\\ 발을\\ H,\\ 선분\\ PH와\\ 선분\\ AB의\\ 교점을\\ Q라\\ 하자.\\\\\n", 519 | "\\angle{POH}=\\theta 일\\ 때,\\ 삼각형\\ AQH의\\ 넓이를\\ S(\\theta )라\\ 하자.\\\\\n", 520 | "\\lim_{\\theta\\to0+}\\frac{S(\\theta)}{\\theta^4}의\\ 값은?\\ (단,\\ 0\\lt\\theta\\lt\\frac{\\pi}{2})$\n", 521 | "![14번 문제](img/14.png)\n", 522 | "> 삼각형 AQH가 이등변삼각형임을 이용" 523 | ] 524 | }, 525 | { 526 | "cell_type": "code", 527 | "execution_count": 11, 528 | "metadata": { 529 | "collapsed": false 530 | }, 531 | "outputs": [ 532 | { 533 | "data": { 534 | "text/plain": [ 535 | "1/8" 536 | ] 537 | }, 538 | "execution_count": 11, 539 | "metadata": {}, 540 | "output_type": "execute_result" 541 | } 542 | ], 543 | "source": [ 544 | "from sympy import Symbol, Limit, cos\n", 545 | "\n", 546 | "th = Symbol('th')\n", 547 | "s = (1-cos(th))**2/2\n", 548 | "Limit(s/pow(th,4), th, 0).doit()" 549 | ] 550 | }, 551 | { 552 | "cell_type": "markdown", 553 | "metadata": {}, 554 | "source": [ 555 | "$15.\\ 곡선\\ y=2e^{-x}\\ 위의\\ 점\\ P(t,\\ 2e^{-t})\\ (t\\gt0)에서\\ y축에\\ 내린\\ 수선의\\ 발을\\ A라\\ 하고,\\\\\n", 556 | "점\\ P에서의\\ 접선이\\ y축과\\ 만나는\\ 점을\\ B라\\ 하자.\\\\\n", 557 | "삼각형\\ APB의\\ 넓이가\\ 최대가\\ 되로록\\ 하는\\ t의\\ 값은?$\n", 558 | "![15번 문제](img/15.png)\n", 559 | ">P에서 접선을 구하여 B를 구하여 AB의 길이를 구한 뒤, AP의 길이 t와 곱한 값을 미분하여 0이 되는 값을 찾는다." 560 | ] 561 | }, 562 | { 563 | "cell_type": "code", 564 | "execution_count": 23, 565 | "metadata": { 566 | "collapsed": false 567 | }, 568 | "outputs": [ 569 | { 570 | "data": { 571 | "text/plain": [ 572 | "[0.0, 2.00000000000000]" 573 | ] 574 | }, 575 | "execution_count": 23, 576 | "metadata": {}, 577 | "output_type": "execute_result" 578 | } 579 | ], 580 | "source": [ 581 | "from scipy import e\n", 582 | "from sympy.solvers import solve\n", 583 | "from sympy import Symbol, Limit, Derivative\n", 584 | "\n", 585 | "t = Symbol('t')\n", 586 | "AP = t\n", 587 | "AB = 2 * t * e**(-t)\n", 588 | "\n", 589 | "s = AP * AB / 2\n", 590 | "d = Derivative(s, t).doit()\n", 591 | "solve(d, t)" 592 | ] 593 | }, 594 | { 595 | "cell_type": "markdown", 596 | "metadata": {}, 597 | "source": [ 598 | "$16.\\ 좌표공간에서\\ 원점에\\ 대한\\ 세\\ 점\\ A,\\ B,\\ C의\\ 위치벡터를\\ 차례로\\ \\overrightarrow{a},\\ \\overrightarrow{b},\\ \\overrightarrow{c}라\\ 할\\ 때,\\\\\n", 599 | "이들\\ 벡터\\ 사이의\\ 내적을\\ 표로\\ 나타내면\\ 다음과\\ 같다.\\\\$\n", 600 | "![16번 문제](img/16.png)\n", 601 | "$예를\\ 들어,\\ \\overrightarrow{a}\\cdot\\overrightarrow{c}=-\\sqrt{2}이다.\\ 세\\ 점\\ A,\\ B,\\ C에\\ 대하여\\\\\n", 602 | "두\\ 점\\ 사이의\\ 거리의\\ 대소\\ 관계로\\ 옳은\\ 것은?$\n", 603 | "> a, b, c의 크기는 같다. 각 벡터가 이루는 각으로 비교해야 하는데, b와 c는 내적이 0이기에 직각을 이루고, a와 b는 내적 값이 양수이기에 예각, a와 c는 내적 값이 음수이기에 둔각을 이룬다. 따라서 둔각을 이루고 있는 AC의 길이가 가장 길고, 직각을 이루고 있는 BC의 길이가 그 다음으로 길고, 예각을 이루고 있는 AB의 길이가 가장 짧다." 604 | ] 605 | }, 606 | { 607 | "cell_type": "code", 608 | "execution_count": null, 609 | "metadata": { 610 | "collapsed": true 611 | }, 612 | "outputs": [], 613 | "source": [] 614 | } 615 | ], 616 | "metadata": { 617 | "anaconda-cloud": { 618 | "environment": null, 619 | "organization": "ymath", 620 | "summary": "2017학년도 대학수학능력시험 문제 수학영역(가형)", 621 | "url": "https://anaconda.org/ymath/2017_csat_mathematics_type_ga" 622 | }, 623 | "kernelspec": { 624 | "display_name": "Python [default]", 625 | "language": "python", 626 | "name": "python3" 627 | }, 628 | "language_info": { 629 | "codemirror_mode": { 630 | "name": "ipython", 631 | "version": 3 632 | }, 633 | "file_extension": ".py", 634 | "mimetype": "text/x-python", 635 | "name": "python", 636 | "nbconvert_exporter": "python", 637 | "pygments_lexer": "ipython3", 638 | "version": "3.5.2" 639 | } 640 | }, 641 | "nbformat": 4, 642 | "nbformat_minor": 1 643 | } 644 | -------------------------------------------------------------------------------- /2019_CSAT_Mathematics_Type_GA.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "2019_CSAT_Mathematics_Type_GA.ipynb", 7 | "version": "0.3.2", 8 | "provenance": [], 9 | "include_colab_link": true 10 | }, 11 | "kernelspec": { 12 | "display_name": "Python [default]", 13 | "language": "python", 14 | "name": "python3" 15 | } 16 | }, 17 | "cells": [ 18 | { 19 | "cell_type": "markdown", 20 | "metadata": { 21 | "id": "view-in-github", 22 | "colab_type": "text" 23 | }, 24 | "source": [ 25 | "\"Open" 26 | ] 27 | }, 28 | { 29 | "metadata": { 30 | "id": "PArEc4A8M5vO", 31 | "colab_type": "text" 32 | }, 33 | "cell_type": "markdown", 34 | "source": [ 35 | "# 파이썬으로 풀어보는 2019학년도 대학수학능력시험 수학영역\n", 36 | "\n", 37 | "\n", 38 | "- 문제는 [이곳](http://cdnvod.yonhapnews.co.kr/yonhapnewsvod/public/suneung/20181115/2/2018_2.pdf)에서 보실 수 있습니다.\n", 39 | "- 풀고 싶은 문제가 있으면 [project](https://github.com/yonseimath/Korea-csat-mathematics/projects/1)에 적어주세요.\n", 40 | "- 풀이에 대한 의견은 [issues](https://github.com/yonseimath/Korea-csat-mathematics/issues)에 적어주세요.\n", 41 | "\n" 42 | ] 43 | }, 44 | { 45 | "metadata": { 46 | "id": "OKcKD6lcM5vU", 47 | "colab_type": "text" 48 | }, 49 | "cell_type": "markdown", 50 | "source": [ 51 | "$1.\\space 두\\space 백터\\space \\overrightarrow{a}=(1,-2),\\space \\overrightarrow{b}=(-1,4)에\\space 대하여\\space 벡터 \\overrightarrow{a}+\\overrightarrow{2b}의\\space 모든\\space 성분의\\space 합은?$" 52 | ] 53 | }, 54 | { 55 | "metadata": { 56 | "id": "jeuqddReM5vc", 57 | "colab_type": "code", 58 | "outputId": "ad905dea-cebb-4fff-d11d-af7b7aa64da8", 59 | "colab": { 60 | "base_uri": "https://localhost:8080/", 61 | "height": 34 62 | } 63 | }, 64 | "cell_type": "code", 65 | "source": [ 66 | "import numpy as np\n", 67 | "a = np.matrix([1,-2])\n", 68 | "b = np.matrix([-1,4])\n", 69 | "np.sum(a+2*b)" 70 | ], 71 | "execution_count": 0, 72 | "outputs": [ 73 | { 74 | "output_type": "execute_result", 75 | "data": { 76 | "text/plain": [ 77 | "5" 78 | ] 79 | }, 80 | "metadata": { 81 | "tags": [] 82 | }, 83 | "execution_count": 4 84 | } 85 | ] 86 | }, 87 | { 88 | "metadata": { 89 | "collapsed": false, 90 | "id": "9saQ0FIzM5vm", 91 | "colab_type": "text" 92 | }, 93 | "cell_type": "markdown", 94 | "source": [ 95 | "$2.\\space\\lim_{x \\to 0}\\frac{e^{6x}-1}{ln(1+3x)}의\\space값은?$" 96 | ] 97 | }, 98 | { 99 | "metadata": { 100 | "id": "BsqN8kAPM5vp", 101 | "colab_type": "code", 102 | "outputId": "9f7a86c1-9644-4a71-fc98-c679da930307", 103 | "colab": {} 104 | }, 105 | "cell_type": "code", 106 | "source": [ 107 | "from mpmath import *\n", 108 | "limit(lambda x: (exp(6*x)-1)/(ln(1+3*x)), 0)" 109 | ], 110 | "execution_count": 0, 111 | "outputs": [ 112 | { 113 | "output_type": "execute_result", 114 | "data": { 115 | "text/plain": [ 116 | "mpf('2.0')" 117 | ] 118 | }, 119 | "metadata": { 120 | "tags": [] 121 | }, 122 | "execution_count": 6 123 | } 124 | ] 125 | }, 126 | { 127 | "metadata": { 128 | "collapsed": true, 129 | "id": "S7954FCsM5v1", 130 | "colab_type": "text" 131 | }, 132 | "cell_type": "markdown", 133 | "source": [ 134 | "$3.\\space \\int_{0}^{\\frac{\\pi}{2}}2\\sin \\space x \\space dx 의 값은?$" 135 | ] 136 | }, 137 | { 138 | "metadata": { 139 | "id": "i8jIfY1oM5v4", 140 | "colab_type": "code", 141 | "outputId": "cb70e411-716c-4ea9-e87a-3132547098c3", 142 | "colab": {} 143 | }, 144 | "cell_type": "code", 145 | "source": [ 146 | "from scipy import integrate\n", 147 | "f = lambda x: 2*sin(x)\n", 148 | "integrate.quad(f,0,pi/2)" 149 | ], 150 | "execution_count": 0, 151 | "outputs": [ 152 | { 153 | "output_type": "execute_result", 154 | "data": { 155 | "text/plain": [ 156 | "(1.9999999999999998, 2.2204460492503128e-14)" 157 | ] 158 | }, 159 | "metadata": { 160 | "tags": [] 161 | }, 162 | "execution_count": 10 163 | } 164 | ] 165 | }, 166 | { 167 | "metadata": { 168 | "id": "ve_kiXd9M5wM", 169 | "colab_type": "text" 170 | }, 171 | "cell_type": "markdown", 172 | "source": [ 173 | "$4.\\space 두\\space 사건\\space A와\\space B는\\space 서로\\space 독립이고\\\\\n", 174 | "P(B^{C})=\\frac{1}{3}, P(A|B)=\\frac{1}{2} \\\\\n", 175 | "일\\space 때,\\space P(A)P(B)의 값은?\\space (단, B^{C}은\\space B의\\space 여사건이다.)$\n", 176 | "> A,B가 서로 독립일때 P(A)P(B)=P(A) 이 성립한다 ([출처:위키피디아](https://ko.wikipedia.org/wiki/%EC%A1%B0%EA%B1%B4%EB%B6%80_%ED%99%95%EB%A5%A0))" 177 | ] 178 | }, 179 | { 180 | "metadata": { 181 | "id": "0CJ6CCvmM5wo", 182 | "colab_type": "code", 183 | "outputId": "001cff36-e0b1-484b-8da0-6fe23a42e03a", 184 | "colab": {} 185 | }, 186 | "cell_type": "code", 187 | "source": [ 188 | "PB = 1 - (1/3)\n", 189 | "PA = 1/2\n", 190 | "PA * PB" 191 | ], 192 | "execution_count": 0, 193 | "outputs": [ 194 | { 195 | "output_type": "execute_result", 196 | "data": { 197 | "text/plain": [ 198 | "0.33333333333333337" 199 | ] 200 | }, 201 | "metadata": { 202 | "tags": [] 203 | }, 204 | "execution_count": 12 205 | } 206 | ] 207 | }, 208 | { 209 | "metadata": { 210 | "id": "9L5jflj5M5wu", 211 | "colab_type": "text" 212 | }, 213 | "cell_type": "markdown", 214 | "source": [ 215 | "5.숫자 1,2,3,4,5 중에서 중복을 허락하여 네 개를 택해 일렬로 나열하여 만든 네 자리의 자연수가 5의 배수인 경우의 수는?\n", 216 | "\n", 217 | "> 5의 배수가 될 수 있는 수는 끝자리가 0 아니면 5가 되어야 하는데 제시된 5개의 숫자중에 0이 없다. 따라서 5x5x5x1" 218 | ] 219 | }, 220 | { 221 | "metadata": { 222 | "id": "NIh9nyx1M5ww", 223 | "colab_type": "code", 224 | "outputId": "5f15cf2a-da83-4b5e-8831-c7788ebc5148", 225 | "colab": {} 226 | }, 227 | "cell_type": "code", 228 | "source": [ 229 | "5*5*5*1" 230 | ], 231 | "execution_count": 0, 232 | "outputs": [ 233 | { 234 | "output_type": "execute_result", 235 | "data": { 236 | "text/plain": [ 237 | "125" 238 | ] 239 | }, 240 | "metadata": { 241 | "tags": [] 242 | }, 243 | "execution_count": 13 244 | } 245 | ] 246 | }, 247 | { 248 | "metadata": { 249 | "id": "BUJ0i5bkM5xA", 250 | "colab_type": "text" 251 | }, 252 | "cell_type": "markdown", 253 | "source": [ 254 | "$6.\\space함수\\space f(x)=x^3+x+1의\\space 역함수를\\space g(x)라\\space 할때,\\space g'(1)의\\space 값은?$\n", 255 | "\n", 256 | "> 역함수의 미분은 원래 함수를 미분한 값의 역과 같음. 출전: http://j1w2k3.tistory.com/316" 257 | ] 258 | }, 259 | { 260 | "metadata": { 261 | "id": "n9i1RXGwM5xD", 262 | "colab_type": "code", 263 | "outputId": "f7729e40-0fa3-4314-ba47-d00a376580fa", 264 | "colab": {} 265 | }, 266 | "cell_type": "code", 267 | "source": [ 268 | "from sympy import *\n", 269 | "x = symbols('x') # 심볼 정의\n", 270 | "fx = x**3+x+1 # 식 정의\n", 271 | "1 / diff(fx).doit().subs({x:0})" 272 | ], 273 | "execution_count": 0, 274 | "outputs": [ 275 | { 276 | "output_type": "execute_result", 277 | "data": { 278 | "text/plain": [ 279 | "1" 280 | ] 281 | }, 282 | "metadata": { 283 | "tags": [] 284 | }, 285 | "execution_count": 2 286 | } 287 | ] 288 | }, 289 | { 290 | "metadata": { 291 | "id": "8xh8NpuDM5xV", 292 | "colab_type": "text" 293 | }, 294 | "cell_type": "markdown", 295 | "source": [ 296 | "7.한 개의 주사위를 3 번 던질 때, 4 의 눈이 한 번만 나올 확률은?\n", 297 | "\n", 298 | "> 4이외의 주사위가 두번 그리고 4가 한번 나올 확률이므로 \n", 299 | "\n", 300 | "$\\frac{5*5*1*3}{6^3} = \\frac{25}{72}$" 301 | ] 302 | }, 303 | { 304 | "metadata": { 305 | "id": "jLiiNFNpM5xd", 306 | "colab_type": "code", 307 | "outputId": "88c1d3a0-8360-468d-f1d6-c23a8e5d28f3", 308 | "colab": {} 309 | }, 310 | "cell_type": "code", 311 | "source": [ 312 | "from math import gcd\n", 313 | "a = 5*5*1*3 # 4 이외의 주사위가 2번 그리고 4가 1번 나올 확률\n", 314 | "b = 6**3 # 주사위를 3번 던졌을때 모든 확률\n", 315 | "c = gcd(a,b) # 최대 공약수\n", 316 | "a / c # 분자" 317 | ], 318 | "execution_count": 0, 319 | "outputs": [ 320 | { 321 | "output_type": "execute_result", 322 | "data": { 323 | "text/plain": [ 324 | "25.0" 325 | ] 326 | }, 327 | "metadata": { 328 | "tags": [] 329 | }, 330 | "execution_count": 18 331 | } 332 | ] 333 | }, 334 | { 335 | "metadata": { 336 | "id": "0cfimSjCM5xp", 337 | "colab_type": "code", 338 | "outputId": "8a2998d9-7506-4d8b-aa63-1012a2d96721", 339 | "colab": {} 340 | }, 341 | "cell_type": "code", 342 | "source": [ 343 | "b / c # 분모" 344 | ], 345 | "execution_count": 0, 346 | "outputs": [ 347 | { 348 | "output_type": "execute_result", 349 | "data": { 350 | "text/plain": [ 351 | "72.0" 352 | ] 353 | }, 354 | "metadata": { 355 | "tags": [] 356 | }, 357 | "execution_count": 16 358 | } 359 | ] 360 | }, 361 | { 362 | "metadata": { 363 | "collapsed": true, 364 | "id": "fHqL6hzjM5xx", 365 | "colab_type": "text" 366 | }, 367 | "cell_type": "markdown", 368 | "source": [ 369 | "$8.\\ 좌표공간의\\ 두\\ 점\\ A(1,\\space a,\\space-6),\\space B(-3,\\space2,\\space b)에\\space대하여\\\\\n", 370 | "\\space선분\\space AB를\\space3:2로\\space외분하는\\space점이\\space x축\\space위에\\space있을\\space때,\\space a+b의\\space값은?$\n", 371 | "> 외분점의 y, z좌표가 0이어야만 한다." 372 | ] 373 | }, 374 | { 375 | "metadata": { 376 | "id": "Z_DLkGPNM5xz", 377 | "colab_type": "code", 378 | "outputId": "014cce6e-257d-4f3a-8e9b-96d2e0f086fe", 379 | "colab": {} 380 | }, 381 | "cell_type": "code", 382 | "source": [ 383 | "from sympy.solvers import solve\n", 384 | "from sympy import Symbol\n", 385 | "a = Symbol(\"a\")\n", 386 | "b = Symbol(\"b\")\n", 387 | "fa = solve((3*2 - 2*a)/(3-2), a).pop()\n", 388 | "fb = solve((3*b - 2*-6)/(3-2), b).pop()\n", 389 | "print(\"a : {}, b : {}, a+b = {}\".format(fa, fb, fa+fb))" 390 | ], 391 | "execution_count": 0, 392 | "outputs": [ 393 | { 394 | "output_type": "stream", 395 | "text": [ 396 | "a : 3, b : -4, a+b = -1\n" 397 | ], 398 | "name": "stdout" 399 | } 400 | ] 401 | }, 402 | { 403 | "metadata": { 404 | "id": "CEtdWtCcM5yM", 405 | "colab_type": "text" 406 | }, 407 | "cell_type": "markdown", 408 | "source": [ 409 | "$9.\\ \\int_{1}^{e}\\ln \\frac{x}{e} \\ dx 의\\ 값은?$" 410 | ] 411 | }, 412 | { 413 | "metadata": { 414 | "id": "-5bwjePEM5yO", 415 | "colab_type": "code", 416 | "outputId": "9c528d7b-fd01-4f80-b3ee-7daa39e3c6f7", 417 | "colab": {} 418 | }, 419 | "cell_type": "code", 420 | "source": [ 421 | "from scipy import integrate, log, e\n", 422 | "f = lambda x: log(x/e)\n", 423 | "result = integrate.quad(f, 1, e)\n", 424 | "print(result)\n", 425 | "print(result[0], \"= 2-e\")" 426 | ], 427 | "execution_count": 0, 428 | "outputs": [ 429 | { 430 | "output_type": "stream", 431 | "text": [ 432 | "(-0.7182818284590452, 7.97453024125089e-15)\n", 433 | "-0.7182818284590452 = 2-e\n" 434 | ], 435 | "name": "stdout" 436 | } 437 | ] 438 | }, 439 | { 440 | "metadata": { 441 | "id": "IS2MaDeFM5yg", 442 | "colab_type": "text" 443 | }, 444 | "cell_type": "markdown", 445 | "source": [ 446 | "$10.\\ 좌표평면\\ 위를\\ 움직이는\\ 점\\ P의\\ 시각\\ t\\ (t>0)에서의\\ 위치\\ (x,\\ y)가\\\\\n", 447 | "x=t-\\frac{2}{t},\\ y=2t+\\frac{1}{t}\\\\\n", 448 | "이다.\\ 시각\\ t=1에서\\ 점\\ P의\\ 속력은?$" 449 | ] 450 | }, 451 | { 452 | "metadata": { 453 | "id": "QTfQneynM5yh", 454 | "colab_type": "code", 455 | "outputId": "6690c940-fd51-45cc-9f91-df3cd0266117", 456 | "colab": {} 457 | }, 458 | "cell_type": "code", 459 | "source": [ 460 | "from mpmath import *\n", 461 | "fx = lambda t: t-2/t\n", 462 | "fy = lambda t: 2*t+1/t\n", 463 | "dfx = diff(fx, 1)\n", 464 | "dfy = diff(fy, 1)\n", 465 | "result = root(dfx**2 + dfy**2, n=2)\n", 466 | "print(result, \"= sqrt(10)\")" 467 | ], 468 | "execution_count": 0, 469 | "outputs": [ 470 | { 471 | "output_type": "stream", 472 | "text": [ 473 | "3.16227766016838\n" 474 | ], 475 | "name": "stdout" 476 | } 477 | ] 478 | }, 479 | { 480 | "metadata": { 481 | "id": "U1SoBqSpM5y1", 482 | "colab_type": "text" 483 | }, 484 | "cell_type": "markdown", 485 | "source": [ 486 | "$11.\\ 그림과\\ 같이\\ 곡선\\ y=\\sqrt{x}+1과\\ x축,\\ y축\\ 및\\ 직선\\ x=1로\\\\\n", 487 | "둘러싸인\\ 도형을\\ 밑면으로\\ 하는\\ 입체도형이\\ 있다.\\ 이\\ 입체도형을\\\\\n", 488 | "x축에\\ 수직인\\ 평면으로\\ 자른\\ 단면이\\ 모두\\ 정사각형일\\ 때,\\\\\n", 489 | "이\\ 입체도형의\\ 부피는?$\n", 490 | "![11번 문제](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA/blob/master/img/11.png?raw=1)" 491 | ] 492 | }, 493 | { 494 | "metadata": { 495 | "id": "0N9RCnH_M5zH", 496 | "colab_type": "code", 497 | "outputId": "5ce44cb1-4c9d-4a0b-b312-79ef86eb3ba9", 498 | "colab": {} 499 | }, 500 | "cell_type": "code", 501 | "source": [ 502 | "import scipy.integrate as integrate\n", 503 | "import math\n", 504 | "from fractions import Fraction\n", 505 | "\n", 506 | "def length_of_side(x):\n", 507 | " return math.sqrt(x)+1\n", 508 | "def area_of_one(x):\n", 509 | " return length_of_side(x)**2\n", 510 | "\n", 511 | "volume = integrate.quad(area_of_one, 0, 1)\n", 512 | "\n", 513 | "# convert a decimal num into fraction\n", 514 | "volume = Fraction(volume[0]).limit_denominator()\n", 515 | "\n", 516 | "print(volume)" 517 | ], 518 | "execution_count": 0, 519 | "outputs": [ 520 | { 521 | "output_type": "stream", 522 | "text": [ 523 | "17/6\n" 524 | ], 525 | "name": "stdout" 526 | } 527 | ] 528 | }, 529 | { 530 | "metadata": { 531 | "id": "K04erfUvM5zU", 532 | "colab_type": "text" 533 | }, 534 | "cell_type": "markdown", 535 | "source": [ 536 | "$12.\\ 좌표공간에서\\ 평면\\ 2x+2y-z+5=0과\\ xy평면이\\ 이루는\\\\\n", 537 | "예각의\\ 크기를\\ \\theta 라\\ 할\\ 때, \\cos{\\theta}의\\ 값은?$\n", 538 | "> 두 법선벡터의 내적을 이용한다.\n", 539 | "> 단, 두 평면이 이루는 예각을 구하기 때문에 절대값이다." 540 | ] 541 | }, 542 | { 543 | "metadata": { 544 | "id": "6iAmpPscM5zY", 545 | "colab_type": "code", 546 | "outputId": "a07005eb-5c6d-4eaa-ac9e-53daf134a8ea", 547 | "colab": {} 548 | }, 549 | "cell_type": "code", 550 | "source": [ 551 | "import numpy as np\n", 552 | "\n", 553 | "a = np.array([2, 2, -1])\n", 554 | "b = np.array([0, 0, 1])\n", 555 | "numerator = np.dot(a, b)\n", 556 | "\n", 557 | "norm_a = np.linalg.norm(a)\n", 558 | "norm_b = np.linalg.norm(b)\n", 559 | "denominator = norm_a * norm_b\n", 560 | "\n", 561 | "abs(numerator / denominator)" 562 | ], 563 | "execution_count": 0, 564 | "outputs": [ 565 | { 566 | "output_type": "execute_result", 567 | "data": { 568 | "text/plain": [ 569 | "0.33333333333333331" 570 | ] 571 | }, 572 | "metadata": { 573 | "tags": [] 574 | }, 575 | "execution_count": 7 576 | } 577 | ] 578 | }, 579 | { 580 | "metadata": { 581 | "id": "x2slqTxsM5z3", 582 | "colab_type": "text" 583 | }, 584 | "cell_type": "markdown", 585 | "source": [ 586 | "$13.\\ 정규분포\\ N(0,\\ 4^2)을\\ 따르는\\ 모집단에서\\ 크기가\\ 9인\\ 표본을\\ 임의추출하여\\ 구한\\\\\n", 587 | "표본평균을\\ \\overline{X},\\ 정규분포\\ N(3,\\ 2^2)을\\ 따르는\\ 모집단에서\\ 크기가\\ 16인\\ 표본을\\ 임의추출하여\\ 구한\\\\\n", 588 | "표본평균을\\ \\overline{Y}라\\ 하자.\\\\\n", 589 | "P(\\overline{X}\\ge 1)\\ =\\ P(\\overline{Y}\\le a)를\\ 만족시키는\\ 상수\\ a의\\ 값은?\\\\$\n", 590 | "> X와\\ Y를\\ 정규분포화\\ 하여\\ 비교한다.$" 591 | ] 592 | }, 593 | { 594 | "metadata": { 595 | "id": "Ah4FtddCM5z4", 596 | "colab_type": "code", 597 | "outputId": "904228a6-1704-47f0-bc70-8e827b114217", 598 | "colab": {} 599 | }, 600 | "cell_type": "code", 601 | "source": [ 602 | "from sympy.solvers import solve\n", 603 | "from sympy import Symbol\n", 604 | "\n", 605 | "a = Symbol(\"a\")\n", 606 | "\n", 607 | "X_bar_mean = 0\n", 608 | "X_bar_var = 4/3\n", 609 | "Y_bar_mean = 3\n", 610 | "Y_bar_var = 1/2\n", 611 | "\n", 612 | "solve((2*a - 2*Y_bar_mean + (1-0)/X_bar_var), a)" 613 | ], 614 | "execution_count": 0, 615 | "outputs": [ 616 | { 617 | "output_type": "execute_result", 618 | "data": { 619 | "text/plain": [ 620 | "[2.62500000000000]" 621 | ] 622 | }, 623 | "metadata": { 624 | "tags": [] 625 | }, 626 | "execution_count": 8 627 | } 628 | ] 629 | }, 630 | { 631 | "metadata": { 632 | "id": "OxTU4PasM5z9", 633 | "colab_type": "text" 634 | }, 635 | "cell_type": "markdown", 636 | "source": [ 637 | "$14.\\ 그림과\\ 같이\\ 반지름의\\ 길이가\\ 1이고\\ 중심각의\\ 크기가\\ \\frac{\\pi}{2}인\\ 부채꼴\\ OAB가\\ 있다.\\\\\n", 638 | "호\\ AB\\ 위의\\ 점\\ P에서\\ 선분\\ OA에\\ 내린\\ 수선의\\ 발을\\ H,\\ 선분\\ PH와\\ 선분\\ AB의\\ 교점을\\ Q라\\ 하자.\\\\\n", 639 | "\\angle{POH}=\\theta 일\\ 때,\\ 삼각형\\ AQH의\\ 넓이를\\ S(\\theta )라\\ 하자.\\\\\n", 640 | "\\lim_{\\theta\\to0+}\\frac{S(\\theta)}{\\theta^4}의\\ 값은?\\ (단,\\ 0\\lt\\theta\\lt\\frac{\\pi}{2})$\n", 641 | "![14번 문제](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA/blob/master/img/14.png?raw=1)\n", 642 | "> 삼각형 AQH가 이등변삼각형임을 이용" 643 | ] 644 | }, 645 | { 646 | "metadata": { 647 | "id": "rBLTjDOqM50A", 648 | "colab_type": "code", 649 | "outputId": "28b33bbe-b145-4398-9497-5c50f22315bd", 650 | "colab": {} 651 | }, 652 | "cell_type": "code", 653 | "source": [ 654 | "from sympy import Symbol, Limit, cos\n", 655 | "\n", 656 | "th = Symbol('th')\n", 657 | "s = (1-cos(th))**2/2\n", 658 | "Limit(s/pow(th,4), th, 0).doit()" 659 | ], 660 | "execution_count": 0, 661 | "outputs": [ 662 | { 663 | "output_type": "execute_result", 664 | "data": { 665 | "text/plain": [ 666 | "1/8" 667 | ] 668 | }, 669 | "metadata": { 670 | "tags": [] 671 | }, 672 | "execution_count": 11 673 | } 674 | ] 675 | }, 676 | { 677 | "metadata": { 678 | "id": "iy4BhJlHM50h", 679 | "colab_type": "text" 680 | }, 681 | "cell_type": "markdown", 682 | "source": [ 683 | "$15.\\ 곡선\\ y=2e^{-x}\\ 위의\\ 점\\ P(t,\\ 2e^{-t})\\ (t\\gt0)에서\\ y축에\\ 내린\\ 수선의\\ 발을\\ A라\\ 하고,\\\\\n", 684 | "점\\ P에서의\\ 접선이\\ y축과\\ 만나는\\ 점을\\ B라\\ 하자.\\\\\n", 685 | "삼각형\\ APB의\\ 넓이가\\ 최대가\\ 되로록\\ 하는\\ t의\\ 값은?$\n", 686 | "![15번 문제](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA/blob/master/img/15.png?raw=1)\n", 687 | ">P에서 접선을 구하여 B를 구하여 AB의 길이를 구한 뒤, AP의 길이 t와 곱한 값을 미분하여 0이 되는 값을 찾는다." 688 | ] 689 | }, 690 | { 691 | "metadata": { 692 | "id": "taE6mx7SM50i", 693 | "colab_type": "code", 694 | "outputId": "118c39d5-9263-416f-e1f6-555a517634c5", 695 | "colab": {} 696 | }, 697 | "cell_type": "code", 698 | "source": [ 699 | "from scipy import e\n", 700 | "from sympy.solvers import solve\n", 701 | "from sympy import Symbol, Limit, Derivative\n", 702 | "\n", 703 | "t = Symbol('t')\n", 704 | "AP = t\n", 705 | "AB = 2 * t * e**(-t)\n", 706 | "\n", 707 | "s = AP * AB / 2\n", 708 | "d = Derivative(s, t).doit()\n", 709 | "solve(d, t)" 710 | ], 711 | "execution_count": 0, 712 | "outputs": [ 713 | { 714 | "output_type": "execute_result", 715 | "data": { 716 | "text/plain": [ 717 | "[0.0, 2.00000000000000]" 718 | ] 719 | }, 720 | "metadata": { 721 | "tags": [] 722 | }, 723 | "execution_count": 23 724 | } 725 | ] 726 | }, 727 | { 728 | "metadata": { 729 | "id": "r7Pus00jM50o", 730 | "colab_type": "text" 731 | }, 732 | "cell_type": "markdown", 733 | "source": [ 734 | "$16.\\ 좌표공간에서\\ 원점에\\ 대한\\ 세\\ 점\\ A,\\ B,\\ C의\\ 위치벡터를\\ 차례로\\ \\overrightarrow{a},\\ \\overrightarrow{b},\\ \\overrightarrow{c}라\\ 할\\ 때,\\\\\n", 735 | "이들\\ 벡터\\ 사이의\\ 내적을\\ 표로\\ 나타내면\\ 다음과\\ 같다.\\\\$\n", 736 | "![16번 문제](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA/blob/master/img/16.png?raw=1)\n", 737 | "$예를\\ 들어,\\ \\overrightarrow{a}\\cdot\\overrightarrow{c}=-\\sqrt{2}이다.\\ 세\\ 점\\ A,\\ B,\\ C에\\ 대하여\\\\\n", 738 | "두\\ 점\\ 사이의\\ 거리의\\ 대소\\ 관계로\\ 옳은\\ 것은?$\n", 739 | "> a, b, c의 크기는 같다. 각 벡터가 이루는 각으로 비교해야 하는데, b와 c는 내적이 0이기에 직각을 이루고, a와 b는 내적 값이 양수이기에 예각, a와 c는 내적 값이 음수이기에 둔각을 이룬다. 따라서 둔각을 이루고 있는 AC의 길이가 가장 길고, 직각을 이루고 있는 BC의 길이가 그 다음으로 길고, 예각을 이루고 있는 AB의 길이가 가장 짧다." 740 | ] 741 | }, 742 | { 743 | "metadata": { 744 | "id": "90lk62-hM50r", 745 | "colab_type": "code", 746 | "colab": {} 747 | }, 748 | "cell_type": "code", 749 | "source": [ 750 | "" 751 | ], 752 | "execution_count": 0, 753 | "outputs": [] 754 | }, 755 | { 756 | "metadata": { 757 | "id": "SLGuv499M50z", 758 | "colab_type": "text" 759 | }, 760 | "cell_type": "markdown", 761 | "source": [ 762 | "$17.\\ 좌표평면\\ 위의\\ 한\\ 점\\ (x,\\ y)에서\\ 세\\ 점\\ (x+1,\\ y),\\ (x,\\ y+1),\\ (x+1,\\ y+1)\\ 중\\ 한\\ 점으로\\ 이동하는\\ 것을\\ 점프라\\ 하자.\\\\\n", 763 | "점프를\\ 반복하여\\ 점\\ (0, 0)에서\\ 점\\ (4, 3)까지\\ 이동하는\\ 모든\\ 경우\\ 중에서,\\ 임의로\\ 한\\ 경우를\\ 선택할\\ 때\\ 나오는\\ 점프의\\ 횟수를\\ 확률변수\\ X라\\ 하자.\\\\ 다음은\\ 확률변수\\ X의\\ 평균\\ E(X)를\\ 구하는\\ 과정이다.\\ (단,\\ 각\\ 경우가\\ 선택되는\\ 확률은\\ 동일하다.)\\\\$\n", 764 | "![17번 문제](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA/blob/master/img/17.png?raw=1)\n", 765 | "$위의\\ (가),\\ (나),\\ (다)에\\ 알맞은\\ 수를\\ 각각\\ a,\\ b,\\ c라\\ 할\\ 때,\\ a+b+c의\\ 값은?\\\\$\n", 766 | ">$(가):\\ 확률변수\\ X가\\ 가질\\ 수\\ 있는\\ 값\\ 중\\ 가장\\ 작은\\ 값을\\ k라\\ 하면\\ k는\\ 대각선으로\\ 3번,\\ 가로로\\ 1번\\ 가는\\ 경우인\\ 4의\\ 값을\\ 갖는다.\\\\\n", 767 | "(나):\\ 대각선으로\\ 1번,\\ 가로로\\ 3번,\\ 위로\\ 2번\\ 가야한다.\\\\\n", 768 | "(다):\\ 위의\\ 확률을\\ 다\\ 더해서\\ 1이\\ 나와야\\ 한다.\\\\$" 769 | ] 770 | }, 771 | { 772 | "metadata": { 773 | "id": "KgaPp_LyM500", 774 | "colab_type": "code", 775 | "outputId": "48e426ab-00e6-410f-e92c-052e66ad006a", 776 | "colab": {} 777 | }, 778 | "cell_type": "code", 779 | "source": [ 780 | "from sympy.solvers import solve\n", 781 | "from sympy import Symbol\n", 782 | "\n", 783 | "def factorial (item):\n", 784 | " if(item == 0):\n", 785 | " return(1)\n", 786 | " else:\n", 787 | " return (item * factorial(item-1))\n", 788 | " \n", 789 | "a = 4\n", 790 | "b = factorial(6)/(factorial(3)*factorial(2))\n", 791 | "N = Symbol(\"N\")\n", 792 | "c = solve((4+30+b+35)/N -1, N)\n", 793 | "print(a+b+float(c[0]))" 794 | ], 795 | "execution_count": 0, 796 | "outputs": [ 797 | { 798 | "output_type": "stream", 799 | "text": [ 800 | "193.0\n" 801 | ], 802 | "name": "stdout" 803 | } 804 | ] 805 | }, 806 | { 807 | "metadata": { 808 | "id": "DIkROfnRM506", 809 | "colab_type": "code", 810 | "colab": {} 811 | }, 812 | "cell_type": "code", 813 | "source": [ 814 | "" 815 | ], 816 | "execution_count": 0, 817 | "outputs": [] 818 | } 819 | ] 820 | } -------------------------------------------------------------------------------- /2017_CSAT_Mathematics_Type_GA.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "name": "2017_CSAT_Mathematics_Type_GA.ipynb", 7 | "provenance": [], 8 | "include_colab_link": true 9 | }, 10 | "kernelspec": { 11 | "display_name": "Python [default]", 12 | "language": "python", 13 | "name": "python3" 14 | } 15 | }, 16 | "cells": [ 17 | { 18 | "cell_type": "markdown", 19 | "metadata": { 20 | "id": "view-in-github", 21 | "colab_type": "text" 22 | }, 23 | "source": [ 24 | "\"Open" 25 | ] 26 | }, 27 | { 28 | "cell_type": "markdown", 29 | "metadata": { 30 | "id": "PArEc4A8M5vO", 31 | "colab_type": "text" 32 | }, 33 | "source": [ 34 | "# 파이썬으로 풀어보는 2017학년도 대학수학능력시험 수학영역\n", 35 | "\n", 36 | "## [github](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA)을 통해 누구나 참여하실 수 있습니다.\n", 37 | "\n", 38 | "- [jupyter notebook](http://jupyter.org/)을 이용해서 풀고 있습니다.\n", 39 | "- jupyter notebook은 [Anaconda](https://www.continuum.io/downloads)를 통해 손쉽게 설치할 수 있습니다.\n", 40 | "- 실행결과는 [이쪽](https://anaconda.org/ymath/2017_csat_mathematics_type_ga/notebook)에서 확인 하실 수 있습니다.\n", 41 | "- 풀이에 대한 의견은 [issues](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA/issues)에 적어주세요.\n", 42 | "- **제 자신은 수학도 파이썬도 허접해서 상당히 애를 먹고 있습니다. 능력자 분들의 Pull request 환영합니다!**\n" 43 | ] 44 | }, 45 | { 46 | "cell_type": "markdown", 47 | "metadata": { 48 | "id": "OKcKD6lcM5vU", 49 | "colab_type": "text" 50 | }, 51 | "source": [ 52 | "$1.\\space 두\\space 백터\\space \\overrightarrow{a}=(1,3),\\space \\overrightarrow{b}=(5,-6)에\\space 대하여\\space 벡터 \\overrightarrow{a}-\\overrightarrow{b}의\\space 모든\\space 성분의\\space 합은?$" 53 | ] 54 | }, 55 | { 56 | "cell_type": "code", 57 | "metadata": { 58 | "id": "OMSlkzqEM5vW", 59 | "colab_type": "code", 60 | "colab": {} 61 | }, 62 | "source": [ 63 | "import numpy as np" 64 | ], 65 | "execution_count": 0, 66 | "outputs": [] 67 | }, 68 | { 69 | "cell_type": "code", 70 | "metadata": { 71 | "id": "jeuqddReM5vc", 72 | "colab_type": "code", 73 | "outputId": "c5335956-e3a1-4bf0-a144-d160be671fd2", 74 | "colab": {} 75 | }, 76 | "source": [ 77 | "a = np.matrix([1,3])\n", 78 | "b = np.matrix([5,-6])\n", 79 | "np.sum(a-b)" 80 | ], 81 | "execution_count": 0, 82 | "outputs": [ 83 | { 84 | "output_type": "execute_result", 85 | "data": { 86 | "text/plain": [ 87 | "5" 88 | ] 89 | }, 90 | "metadata": { 91 | "tags": [] 92 | }, 93 | "execution_count": 2 94 | } 95 | ] 96 | }, 97 | { 98 | "cell_type": "markdown", 99 | "metadata": { 100 | "collapsed": false, 101 | "id": "9saQ0FIzM5vm", 102 | "colab_type": "text" 103 | }, 104 | "source": [ 105 | "$2.\\space\\lim_{x \\to 0}\\frac{e^{6x}-1}{ln(1+3x)}의\\space값은?$" 106 | ] 107 | }, 108 | { 109 | "cell_type": "code", 110 | "metadata": { 111 | "id": "BsqN8kAPM5vp", 112 | "colab_type": "code", 113 | "outputId": "9f7a86c1-9644-4a71-fc98-c679da930307", 114 | "colab": {} 115 | }, 116 | "source": [ 117 | "from mpmath import *\n", 118 | "limit(lambda x: (exp(6*x)-1)/(ln(1+3*x)), 0)" 119 | ], 120 | "execution_count": 0, 121 | "outputs": [ 122 | { 123 | "output_type": "execute_result", 124 | "data": { 125 | "text/plain": [ 126 | "mpf('2.0')" 127 | ] 128 | }, 129 | "metadata": { 130 | "tags": [] 131 | }, 132 | "execution_count": 6 133 | } 134 | ] 135 | }, 136 | { 137 | "cell_type": "markdown", 138 | "metadata": { 139 | "collapsed": true, 140 | "id": "S7954FCsM5v1", 141 | "colab_type": "text" 142 | }, 143 | "source": [ 144 | "$3.\\space \\int_{0}^{\\frac{\\pi}{2}}2\\sin \\space x \\space dx 의 값은?$" 145 | ] 146 | }, 147 | { 148 | "cell_type": "code", 149 | "metadata": { 150 | "id": "i8jIfY1oM5v4", 151 | "colab_type": "code", 152 | "outputId": "cb70e411-716c-4ea9-e87a-3132547098c3", 153 | "colab": {} 154 | }, 155 | "source": [ 156 | "from scipy import integrate\n", 157 | "f = lambda x: 2*sin(x)\n", 158 | "integrate.quad(f,0,pi/2)" 159 | ], 160 | "execution_count": 0, 161 | "outputs": [ 162 | { 163 | "output_type": "execute_result", 164 | "data": { 165 | "text/plain": [ 166 | "(1.9999999999999998, 2.2204460492503128e-14)" 167 | ] 168 | }, 169 | "metadata": { 170 | "tags": [] 171 | }, 172 | "execution_count": 10 173 | } 174 | ] 175 | }, 176 | { 177 | "cell_type": "markdown", 178 | "metadata": { 179 | "id": "ve_kiXd9M5wM", 180 | "colab_type": "text" 181 | }, 182 | "source": [ 183 | "$4.\\space 두\\space 사건\\space A와\\space B는\\space 서로\\space 독립이고\\\\\n", 184 | "P(B^{C})=\\frac{1}{3}, P(A|B)=\\frac{1}{2} \\\\\n", 185 | "일\\space 때,\\space P(A)P(B)의 값은?\\space (단, B^{C}은\\space B의\\space 여사건이다.)$\n", 186 | "> A,B가 서로 독립일때 P(A)P(B)=P(A) 이 성립한다 ([출처:위키피디아](https://ko.wikipedia.org/wiki/%EC%A1%B0%EA%B1%B4%EB%B6%80_%ED%99%95%EB%A5%A0))" 187 | ] 188 | }, 189 | { 190 | "cell_type": "code", 191 | "metadata": { 192 | "id": "0CJ6CCvmM5wo", 193 | "colab_type": "code", 194 | "outputId": "001cff36-e0b1-484b-8da0-6fe23a42e03a", 195 | "colab": {} 196 | }, 197 | "source": [ 198 | "PB = 1 - (1/3)\n", 199 | "PA = 1/2\n", 200 | "PA * PB" 201 | ], 202 | "execution_count": 0, 203 | "outputs": [ 204 | { 205 | "output_type": "execute_result", 206 | "data": { 207 | "text/plain": [ 208 | "0.33333333333333337" 209 | ] 210 | }, 211 | "metadata": { 212 | "tags": [] 213 | }, 214 | "execution_count": 12 215 | } 216 | ] 217 | }, 218 | { 219 | "cell_type": "markdown", 220 | "metadata": { 221 | "id": "9L5jflj5M5wu", 222 | "colab_type": "text" 223 | }, 224 | "source": [ 225 | "5.숫자 1,2,3,4,5 중에서 중복을 허락하여 네 개를 택해 일렬로 나열하여 만든 네 자리의 자연수가 5의 배수인 경우의 수는?\n", 226 | "\n", 227 | "> 5의 배수가 될 수 있는 수는 끝자리가 0 아니면 5가 되어야 하는데 제시된 5개의 숫자중에 0이 없다. 따라서 5x5x5x1" 228 | ] 229 | }, 230 | { 231 | "cell_type": "code", 232 | "metadata": { 233 | "id": "NIh9nyx1M5ww", 234 | "colab_type": "code", 235 | "outputId": "5f15cf2a-da83-4b5e-8831-c7788ebc5148", 236 | "colab": {} 237 | }, 238 | "source": [ 239 | "5*5*5*1" 240 | ], 241 | "execution_count": 0, 242 | "outputs": [ 243 | { 244 | "output_type": "execute_result", 245 | "data": { 246 | "text/plain": [ 247 | "125" 248 | ] 249 | }, 250 | "metadata": { 251 | "tags": [] 252 | }, 253 | "execution_count": 13 254 | } 255 | ] 256 | }, 257 | { 258 | "cell_type": "markdown", 259 | "metadata": { 260 | "id": "BUJ0i5bkM5xA", 261 | "colab_type": "text" 262 | }, 263 | "source": [ 264 | "$6.\\space함수\\space f(x)=x^3+x+1의\\space 역함수를\\space g(x)라\\space 할때,\\space g'(1)의\\space 값은?$\n", 265 | "\n", 266 | "> 역함수의 미분은 원래 함수를 미분한 값의 역과 같음. 출전: http://j1w2k3.tistory.com/316" 267 | ] 268 | }, 269 | { 270 | "cell_type": "code", 271 | "metadata": { 272 | "id": "n9i1RXGwM5xD", 273 | "colab_type": "code", 274 | "outputId": "f7729e40-0fa3-4314-ba47-d00a376580fa", 275 | "colab": {} 276 | }, 277 | "source": [ 278 | "from sympy import *\n", 279 | "x = symbols('x') # 심볼 정의\n", 280 | "fx = x**3+x+1 # 식 정의\n", 281 | "1 / diff(fx).doit().subs({x:0})" 282 | ], 283 | "execution_count": 0, 284 | "outputs": [ 285 | { 286 | "output_type": "execute_result", 287 | "data": { 288 | "text/plain": [ 289 | "1" 290 | ] 291 | }, 292 | "metadata": { 293 | "tags": [] 294 | }, 295 | "execution_count": 2 296 | } 297 | ] 298 | }, 299 | { 300 | "cell_type": "markdown", 301 | "metadata": { 302 | "id": "8xh8NpuDM5xV", 303 | "colab_type": "text" 304 | }, 305 | "source": [ 306 | "7.한 개의 주사위를 3 번 던질 때, 4 의 눈이 한 번만 나올 확률은?\n", 307 | "\n", 308 | "> 4이외의 주사위가 두번 그리고 4가 한번 나올 확률이므로 \n", 309 | "\n", 310 | "$\\frac{5*5*1*3}{6^3} = \\frac{25}{72}$" 311 | ] 312 | }, 313 | { 314 | "cell_type": "code", 315 | "metadata": { 316 | "id": "jLiiNFNpM5xd", 317 | "colab_type": "code", 318 | "outputId": "88c1d3a0-8360-468d-f1d6-c23a8e5d28f3", 319 | "colab": {} 320 | }, 321 | "source": [ 322 | "from math import gcd\n", 323 | "a = 5*5*1*3 # 4 이외의 주사위가 2번 그리고 4가 1번 나올 확률\n", 324 | "b = 6**3 # 주사위를 3번 던졌을때 모든 확률\n", 325 | "c = gcd(a,b) # 최대 공약수\n", 326 | "a / c # 분자" 327 | ], 328 | "execution_count": 0, 329 | "outputs": [ 330 | { 331 | "output_type": "execute_result", 332 | "data": { 333 | "text/plain": [ 334 | "25.0" 335 | ] 336 | }, 337 | "metadata": { 338 | "tags": [] 339 | }, 340 | "execution_count": 18 341 | } 342 | ] 343 | }, 344 | { 345 | "cell_type": "code", 346 | "metadata": { 347 | "id": "0cfimSjCM5xp", 348 | "colab_type": "code", 349 | "outputId": "8a2998d9-7506-4d8b-aa63-1012a2d96721", 350 | "colab": {} 351 | }, 352 | "source": [ 353 | "b / c # 분모" 354 | ], 355 | "execution_count": 0, 356 | "outputs": [ 357 | { 358 | "output_type": "execute_result", 359 | "data": { 360 | "text/plain": [ 361 | "72.0" 362 | ] 363 | }, 364 | "metadata": { 365 | "tags": [] 366 | }, 367 | "execution_count": 16 368 | } 369 | ] 370 | }, 371 | { 372 | "cell_type": "markdown", 373 | "metadata": { 374 | "collapsed": true, 375 | "id": "fHqL6hzjM5xx", 376 | "colab_type": "text" 377 | }, 378 | "source": [ 379 | "$8.\\ 좌표공간의\\ 두\\ 점\\ A(1,\\space a,\\space-6),\\space B(-3,\\space2,\\space b)에\\space대하여\\\\\n", 380 | "\\space선분\\space AB를\\space3:2로\\space외분하는\\space점이\\space x축\\space위에\\space있을\\space때,\\space a+b의\\space값은?$\n", 381 | "> 외분점의 y, z좌표가 0이어야만 한다." 382 | ] 383 | }, 384 | { 385 | "cell_type": "code", 386 | "metadata": { 387 | "id": "Z_DLkGPNM5xz", 388 | "colab_type": "code", 389 | "outputId": "014cce6e-257d-4f3a-8e9b-96d2e0f086fe", 390 | "colab": {} 391 | }, 392 | "source": [ 393 | "from sympy.solvers import solve\n", 394 | "from sympy import Symbol\n", 395 | "a = Symbol(\"a\")\n", 396 | "b = Symbol(\"b\")\n", 397 | "fa = solve((3*2 - 2*a)/(3-2), a).pop()\n", 398 | "fb = solve((3*b - 2*-6)/(3-2), b).pop()\n", 399 | "print(\"a : {}, b : {}, a+b = {}\".format(fa, fb, fa+fb))" 400 | ], 401 | "execution_count": 0, 402 | "outputs": [ 403 | { 404 | "output_type": "stream", 405 | "text": [ 406 | "a : 3, b : -4, a+b = -1\n" 407 | ], 408 | "name": "stdout" 409 | } 410 | ] 411 | }, 412 | { 413 | "cell_type": "markdown", 414 | "metadata": { 415 | "id": "CEtdWtCcM5yM", 416 | "colab_type": "text" 417 | }, 418 | "source": [ 419 | "$9.\\ \\int_{1}^{e}\\ln \\frac{x}{e} \\ dx 의\\ 값은?$" 420 | ] 421 | }, 422 | { 423 | "cell_type": "code", 424 | "metadata": { 425 | "id": "-5bwjePEM5yO", 426 | "colab_type": "code", 427 | "outputId": "9c528d7b-fd01-4f80-b3ee-7daa39e3c6f7", 428 | "colab": {} 429 | }, 430 | "source": [ 431 | "from scipy import integrate, log, e\n", 432 | "f = lambda x: log(x/e)\n", 433 | "result = integrate.quad(f, 1, e)\n", 434 | "print(result)\n", 435 | "print(result[0], \"= 2-e\")" 436 | ], 437 | "execution_count": 0, 438 | "outputs": [ 439 | { 440 | "output_type": "stream", 441 | "text": [ 442 | "(-0.7182818284590452, 7.97453024125089e-15)\n", 443 | "-0.7182818284590452 = 2-e\n" 444 | ], 445 | "name": "stdout" 446 | } 447 | ] 448 | }, 449 | { 450 | "cell_type": "markdown", 451 | "metadata": { 452 | "id": "IS2MaDeFM5yg", 453 | "colab_type": "text" 454 | }, 455 | "source": [ 456 | "$10.\\ 좌표평면\\ 위를\\ 움직이는\\ 점\\ P의\\ 시각\\ t\\ (t>0)에서의\\ 위치\\ (x,\\ y)가\\\\\n", 457 | "x=t-\\frac{2}{t},\\ y=2t+\\frac{1}{t}\\\\\n", 458 | "이다.\\ 시각\\ t=1에서\\ 점\\ P의\\ 속력은?$" 459 | ] 460 | }, 461 | { 462 | "cell_type": "code", 463 | "metadata": { 464 | "id": "QTfQneynM5yh", 465 | "colab_type": "code", 466 | "outputId": "6690c940-fd51-45cc-9f91-df3cd0266117", 467 | "colab": {} 468 | }, 469 | "source": [ 470 | "from mpmath import *\n", 471 | "fx = lambda t: t-2/t\n", 472 | "fy = lambda t: 2*t+1/t\n", 473 | "dfx = diff(fx, 1)\n", 474 | "dfy = diff(fy, 1)\n", 475 | "result = root(dfx**2 + dfy**2, n=2)\n", 476 | "print(result, \"= sqrt(10)\")" 477 | ], 478 | "execution_count": 0, 479 | "outputs": [ 480 | { 481 | "output_type": "stream", 482 | "text": [ 483 | "3.16227766016838\n" 484 | ], 485 | "name": "stdout" 486 | } 487 | ] 488 | }, 489 | { 490 | "cell_type": "markdown", 491 | "metadata": { 492 | "id": "U1SoBqSpM5y1", 493 | "colab_type": "text" 494 | }, 495 | "source": [ 496 | "$11.\\ 그림과\\ 같이\\ 곡선\\ y=\\sqrt{x}+1과\\ x축,\\ y축\\ 및\\ 직선\\ x=1로\\\\\n", 497 | "둘러싸인\\ 도형을\\ 밑면으로\\ 하는\\ 입체도형이\\ 있다.\\ 이\\ 입체도형을\\\\\n", 498 | "x축에\\ 수직인\\ 평면으로\\ 자른\\ 단면이\\ 모두\\ 정사각형일\\ 때,\\\\\n", 499 | "이\\ 입체도형의\\ 부피는?$\n", 500 | "![11번 문제](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA/blob/master/img/11.png?raw=1)" 501 | ] 502 | }, 503 | { 504 | "cell_type": "code", 505 | "metadata": { 506 | "id": "0N9RCnH_M5zH", 507 | "colab_type": "code", 508 | "outputId": "5ce44cb1-4c9d-4a0b-b312-79ef86eb3ba9", 509 | "colab": {} 510 | }, 511 | "source": [ 512 | "import scipy.integrate as integrate\n", 513 | "import math\n", 514 | "from fractions import Fraction\n", 515 | "\n", 516 | "def length_of_side(x):\n", 517 | " return math.sqrt(x)+1\n", 518 | "def area_of_one(x):\n", 519 | " return length_of_side(x)**2\n", 520 | "\n", 521 | "volume = integrate.quad(area_of_one, 0, 1)\n", 522 | "\n", 523 | "# convert a decimal num into fraction\n", 524 | "volume = Fraction(volume[0]).limit_denominator()\n", 525 | "\n", 526 | "print(volume)" 527 | ], 528 | "execution_count": 0, 529 | "outputs": [ 530 | { 531 | "output_type": "stream", 532 | "text": [ 533 | "17/6\n" 534 | ], 535 | "name": "stdout" 536 | } 537 | ] 538 | }, 539 | { 540 | "cell_type": "markdown", 541 | "metadata": { 542 | "id": "K04erfUvM5zU", 543 | "colab_type": "text" 544 | }, 545 | "source": [ 546 | "$12.\\ 좌표공간에서\\ 평면\\ 2x+2y-z+5=0과\\ xy평면이\\ 이루는\\\\\n", 547 | "예각의\\ 크기를\\ \\theta 라\\ 할\\ 때, \\cos{\\theta}의\\ 값은?$\n", 548 | "> 두 법선벡터의 내적을 이용한다.\n", 549 | "> 단, 두 평면이 이루는 예각을 구하기 때문에 절대값이다." 550 | ] 551 | }, 552 | { 553 | "cell_type": "code", 554 | "metadata": { 555 | "id": "6iAmpPscM5zY", 556 | "colab_type": "code", 557 | "outputId": "a07005eb-5c6d-4eaa-ac9e-53daf134a8ea", 558 | "colab": {} 559 | }, 560 | "source": [ 561 | "import numpy as np\n", 562 | "\n", 563 | "a = np.array([2, 2, -1])\n", 564 | "b = np.array([0, 0, 1])\n", 565 | "numerator = np.dot(a, b)\n", 566 | "\n", 567 | "norm_a = np.linalg.norm(a)\n", 568 | "norm_b = np.linalg.norm(b)\n", 569 | "denominator = norm_a * norm_b\n", 570 | "\n", 571 | "abs(numerator / denominator)" 572 | ], 573 | "execution_count": 0, 574 | "outputs": [ 575 | { 576 | "output_type": "execute_result", 577 | "data": { 578 | "text/plain": [ 579 | "0.33333333333333331" 580 | ] 581 | }, 582 | "metadata": { 583 | "tags": [] 584 | }, 585 | "execution_count": 7 586 | } 587 | ] 588 | }, 589 | { 590 | "cell_type": "markdown", 591 | "metadata": { 592 | "id": "x2slqTxsM5z3", 593 | "colab_type": "text" 594 | }, 595 | "source": [ 596 | "13. 정규분포 $N(0,\\ 4^2)$을 따르는 모집단에서 크기가 9인 표본을 임의추출하여 구한 표본평균을 $\\overline{X}$, 정규분포 $N(3,\\ 2^2)$을 따르는 모집단에서 크기가 16인 표본을 임의추출하여 구한\n", 597 | "표본평균을 $\\overline{Y}$라 하자. $P(\\overline{X}\\ge 1)\\ =\\ P(\\overline{Y}\\le a)$를 만족시키는 상수 a의 값은? \n", 598 | "> X와 Y를 정규분포화 하여 비교한다." 599 | ] 600 | }, 601 | { 602 | "cell_type": "code", 603 | "metadata": { 604 | "id": "Ah4FtddCM5z4", 605 | "colab_type": "code", 606 | "outputId": "904228a6-1704-47f0-bc70-8e827b114217", 607 | "colab": {} 608 | }, 609 | "source": [ 610 | "from sympy.solvers import solve\n", 611 | "from sympy import Symbol\n", 612 | "\n", 613 | "a = Symbol(\"a\")\n", 614 | "\n", 615 | "X_bar_mean = 0\n", 616 | "X_bar_var = 4/3\n", 617 | "Y_bar_mean = 3\n", 618 | "Y_bar_var = 1/2\n", 619 | "\n", 620 | "solve((2*a - 2*Y_bar_mean + (1-0)/X_bar_var), a)" 621 | ], 622 | "execution_count": 0, 623 | "outputs": [ 624 | { 625 | "output_type": "execute_result", 626 | "data": { 627 | "text/plain": [ 628 | "[2.62500000000000]" 629 | ] 630 | }, 631 | "metadata": { 632 | "tags": [] 633 | }, 634 | "execution_count": 8 635 | } 636 | ] 637 | }, 638 | { 639 | "cell_type": "markdown", 640 | "metadata": { 641 | "id": "OxTU4PasM5z9", 642 | "colab_type": "text" 643 | }, 644 | "source": [ 645 | "$14.\\ 그림과\\ 같이\\ 반지름의\\ 길이가\\ 1이고\\ 중심각의\\ 크기가\\ \\frac{\\pi}{2}인\\ 부채꼴\\ OAB가\\ 있다.\\\\\n", 646 | "호\\ AB\\ 위의\\ 점\\ P에서\\ 선분\\ OA에\\ 내린\\ 수선의\\ 발을\\ H,\\ 선분\\ PH와\\ 선분\\ AB의\\ 교점을\\ Q라\\ 하자.\\\\\n", 647 | "\\angle{POH}=\\theta 일\\ 때,\\ 삼각형\\ AQH의\\ 넓이를\\ S(\\theta )라\\ 하자.\\\\\n", 648 | "\\lim_{\\theta\\to0+}\\frac{S(\\theta)}{\\theta^4}의\\ 값은?\\ (단,\\ 0\\lt\\theta\\lt\\frac{\\pi}{2})$\n", 649 | "![14번 문제](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA/blob/master/img/14.png?raw=1)\n", 650 | "> 삼각형 AQH가 이등변삼각형임을 이용" 651 | ] 652 | }, 653 | { 654 | "cell_type": "code", 655 | "metadata": { 656 | "id": "rBLTjDOqM50A", 657 | "colab_type": "code", 658 | "outputId": "28b33bbe-b145-4398-9497-5c50f22315bd", 659 | "colab": {} 660 | }, 661 | "source": [ 662 | "from sympy import Symbol, Limit, cos\n", 663 | "\n", 664 | "th = Symbol('th')\n", 665 | "s = (1-cos(th))**2/2\n", 666 | "Limit(s/pow(th,4), th, 0).doit()" 667 | ], 668 | "execution_count": 0, 669 | "outputs": [ 670 | { 671 | "output_type": "execute_result", 672 | "data": { 673 | "text/plain": [ 674 | "1/8" 675 | ] 676 | }, 677 | "metadata": { 678 | "tags": [] 679 | }, 680 | "execution_count": 11 681 | } 682 | ] 683 | }, 684 | { 685 | "cell_type": "markdown", 686 | "metadata": { 687 | "id": "iy4BhJlHM50h", 688 | "colab_type": "text" 689 | }, 690 | "source": [ 691 | "$15.\\ 곡선\\ y=2e^{-x}\\ 위의\\ 점\\ P(t,\\ 2e^{-t})\\ (t\\gt0)에서\\ y축에\\ 내린\\ 수선의\\ 발을\\ A라\\ 하고,\\\\\n", 692 | "점\\ P에서의\\ 접선이\\ y축과\\ 만나는\\ 점을\\ B라\\ 하자.\\\\\n", 693 | "삼각형\\ APB의\\ 넓이가\\ 최대가\\ 되로록\\ 하는\\ t의\\ 값은?$\n", 694 | "![15번 문제](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA/blob/master/img/15.png?raw=1)\n", 695 | ">P에서 접선을 구하여 B를 구하여 AB의 길이를 구한 뒤, AP의 길이 t와 곱한 값을 미분하여 0이 되는 값을 찾는다." 696 | ] 697 | }, 698 | { 699 | "cell_type": "code", 700 | "metadata": { 701 | "id": "taE6mx7SM50i", 702 | "colab_type": "code", 703 | "outputId": "118c39d5-9263-416f-e1f6-555a517634c5", 704 | "colab": {} 705 | }, 706 | "source": [ 707 | "from scipy import e\n", 708 | "from sympy.solvers import solve\n", 709 | "from sympy import Symbol, Limit, Derivative\n", 710 | "\n", 711 | "t = Symbol('t')\n", 712 | "AP = t\n", 713 | "AB = 2 * t * e**(-t)\n", 714 | "\n", 715 | "s = AP * AB / 2\n", 716 | "d = Derivative(s, t).doit()\n", 717 | "solve(d, t)" 718 | ], 719 | "execution_count": 0, 720 | "outputs": [ 721 | { 722 | "output_type": "execute_result", 723 | "data": { 724 | "text/plain": [ 725 | "[0.0, 2.00000000000000]" 726 | ] 727 | }, 728 | "metadata": { 729 | "tags": [] 730 | }, 731 | "execution_count": 23 732 | } 733 | ] 734 | }, 735 | { 736 | "cell_type": "markdown", 737 | "metadata": { 738 | "id": "r7Pus00jM50o", 739 | "colab_type": "text" 740 | }, 741 | "source": [ 742 | "$16.\\ 좌표공간에서\\ 원점에\\ 대한\\ 세\\ 점\\ A,\\ B,\\ C의\\ 위치벡터를\\ 차례로\\ \\overrightarrow{a},\\ \\overrightarrow{b},\\ \\overrightarrow{c}라\\ 할\\ 때,\\\\\n", 743 | "이들\\ 벡터\\ 사이의\\ 내적을\\ 표로\\ 나타내면\\ 다음과\\ 같다.\\\\$\n", 744 | "![16번 문제](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA/blob/master/img/16.png?raw=1)\n", 745 | "$예를\\ 들어,\\ \\overrightarrow{a}\\cdot\\overrightarrow{c}=-\\sqrt{2}이다.\\ 세\\ 점\\ A,\\ B,\\ C에\\ 대하여\\\\\n", 746 | "두\\ 점\\ 사이의\\ 거리의\\ 대소\\ 관계로\\ 옳은\\ 것은?$\n", 747 | "> a, b, c의 크기는 같다. 각 벡터가 이루는 각으로 비교해야 하는데, b와 c는 내적이 0이기에 직각을 이루고, a와 b는 내적 값이 양수이기에 예각, a와 c는 내적 값이 음수이기에 둔각을 이룬다. 따라서 둔각을 이루고 있는 AC의 길이가 가장 길고, 직각을 이루고 있는 BC의 길이가 그 다음으로 길고, 예각을 이루고 있는 AB의 길이가 가장 짧다." 748 | ] 749 | }, 750 | { 751 | "cell_type": "code", 752 | "metadata": { 753 | "id": "90lk62-hM50r", 754 | "colab_type": "code", 755 | "colab": {} 756 | }, 757 | "source": [ 758 | "" 759 | ], 760 | "execution_count": 0, 761 | "outputs": [] 762 | }, 763 | { 764 | "cell_type": "markdown", 765 | "metadata": { 766 | "id": "SLGuv499M50z", 767 | "colab_type": "text" 768 | }, 769 | "source": [ 770 | "17. 좌표평면 위의 한 점 $(x,\\ y)$에서 세 점 $(x+1,\\ y),\\ (x,\\ y+1),\\ (x+1,\\ y+1)$ 중 한 점으로 이동하는 것을 점프라 하자. \n", 771 | "점프를 반복하여 점 $(0, 0)$에서 점 $(4, 3)$까지 이동하는 모든 경우 중에서, 임의로 한 경우를 선택할 때 나오는 점프의 횟수를 확률변수 X라 하자. \n", 772 | "다음은 확률변수 X의 평균 $E(X)$를 구하는 과정이다. (단, 각 경우가 선택되는 확률은 동일하다.) \n", 773 | "![17번 문제](https://github.com/serithemage/2017_CSAT_Mathematics_Type_GA/blob/master/img/17.png?raw=1) \n", 774 | "위의 (가), (나), (다)에 알맞은 수를 각각 a, b, c라 할 때, a+b+c의 값은? \n", 775 | "\n", 776 | ">(가): 확률변수 X가 가질 수 있는 값 중 가장 작은 값을 k라 하면 k는 대각선으로 3번, 가로로 1번 가는 경우인 4의 값을 갖는다. \n", 777 | ">(나): 대각선으로 1번, 가로로 3번, 위로 2번 가야한다. \n", 778 | ">(다): 위의 확률을 다 더해서 1이 나와야 한다." 779 | ] 780 | }, 781 | { 782 | "cell_type": "code", 783 | "metadata": { 784 | "id": "KgaPp_LyM500", 785 | "colab_type": "code", 786 | "outputId": "48e426ab-00e6-410f-e92c-052e66ad006a", 787 | "colab": {} 788 | }, 789 | "source": [ 790 | "from sympy.solvers import solve\n", 791 | "from sympy import Symbol\n", 792 | "\n", 793 | "def factorial (item):\n", 794 | " if(item == 0):\n", 795 | " return(1)\n", 796 | " else:\n", 797 | " return (item * factorial(item-1))\n", 798 | " \n", 799 | "a = 4\n", 800 | "b = factorial(6)/(factorial(3)*factorial(2))\n", 801 | "N = Symbol(\"N\")\n", 802 | "c = solve((4+30+b+35)/N -1, N)\n", 803 | "print(a+b+float(c[0]))" 804 | ], 805 | "execution_count": 0, 806 | "outputs": [ 807 | { 808 | "output_type": "stream", 809 | "text": [ 810 | "193.0\n" 811 | ], 812 | "name": "stdout" 813 | } 814 | ] 815 | }, 816 | { 817 | "cell_type": "code", 818 | "metadata": { 819 | "id": "DIkROfnRM506", 820 | "colab_type": "code", 821 | "colab": {} 822 | }, 823 | "source": [ 824 | "" 825 | ], 826 | "execution_count": 0, 827 | "outputs": [] 828 | } 829 | ] 830 | } --------------------------------------------------------------------------------