├── 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 | ""
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 | "\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 | "\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 | "\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 | "
"
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 | ""
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 | "\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 | "\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 | "\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 | "\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 | "
"
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 | ""
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 | "\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 | "\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 | "\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 | " \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 | }
--------------------------------------------------------------------------------