pythonでセンター試験解いてみた~その4~

プログラミング

前回は  平成31年の数1Aにある第四問  を解きました。その続きになります。

今回は 平成31年の数1Aの第二問 です。図形の問題です。なかなか数式に押し込むのが難しかったです。

では、さっそく行ってみましょう!!

スポンサーリンク

準備

ぼくがセンター試験を解くに当たり準備したものは

  • センター試験過去問(平成31年版)
  • jupyternotebook

の二つです。

jupyternotebookの導入や使い方についてはこちらを参照ください。

センター試験を解いてみよう

解く問題

△ABCにおいて、AB=3、BC=4、AC=2とする。\(\cos \angle BAC = \frac{[アイ]}{[ウ]}\)であり、\(\angle BACは[エ]\)である。また、\(\sin \angle BAC = \frac{\sqrt{[オカ]}}{[キ]}\)

線分ACの垂直二等分線と直線ABの交点をDとする。\(\cos \angle CAD =\frac{[ク]}{[ケ]}\)であるから、AD = [コ] であり、△DBCの面積は\(\frac{[サ]\sqrt{[シス]}}{[セ]}\)である。

平成31年の数1Aの第二問

行列に落とし込む

図形問題は行列に落とし込みます。

行列を書くときはMatrixを使います。

\(\angle BAC = x\)とし、A(0.0)とすると、B(3.0)、C(\(2\cos x\).\(2\sin x\))となります。よって、

 
import sympy as sy
from sympy import symbols,Matrix

x = symbols("x",real = True)

A = sy.Matrix([0,0])
B = sy.Matrix([3,0])
C = 2*sy.Matrix([sy.cos(x),sy.sin(x)])

つぎに、BC=4なので\(|\vec{C} – \vec{B}| = 4\)となり、\(\vec{C} – \vec{B}\)の長さはnormを使っていきます。

そしてこの方程式を解かせます。

y = sy.solve((C-B).norm() - 4,x)[1]

このとき、解は2つ出てくるので[1]だけとっています。

ここから、\(\cos \angle BAC \)が求まります。

print(trigsimp(sy.cos(y)))

出力は

-1/4
つまり、 \(\cos \angle BAC = \frac{[-1]}{[4]}\) 、\(\angle BACは[鈍角]\)です。

\(\cos \angle BAC\)が求まったので、

print(trigsimp(sy.sin(y)))
より、出力は
sqrt(15)/4
\(\sin \angle BAC\) は\(\frac{\sqrt{15}}{4}になります。\)

よって \(\sin \angle BAC = \frac{\sqrt{[15]}}{[4]}\)

ここでtrigsimp を使いましたが、これは三角関数を簡単化できるもので、これをつかわないと例えば、

print(sy.cos(y))
の出力が
cos(2*atan(sqrt(15)/3))
となってしまって、どんな数なのかわからなくなってしまいます。

淡々と計算する

淡々と計算していきます。

\(\angle CAD\)は\(\pi – \angle BAC\)なので、

z = sy.pi - y
であり、
print(trigsimp(sy.cos(z)))
の出力は
1/4
です。よって、\(\cos \angle CAD =\frac{[1]}{[4]}\)です。

ADの長さはACの長さの半分をcos(z)で割ったものなので、

AC = (C-A).norm()

print(AC/2)

AD = (AC/2)/trigsimp(sy.cos(z))

print(AD)

で出力は

4.00000000000000
です。 よってAD = [4]

△DBCの面積はBDの長さとCのy座標(高さ)をかけて2で割ればよいので、

BD = AD + AB

BDC = C[1]*BD*(1/2)

print(BDC)

出力は

 1.75*sqrt(15) 
なので、 △DBCの面積は\(\frac{[7]\sqrt{[15]}}{[4]}\) となります。

ここまでのコード

import sympy as sy
from sympy import symbols,Matrix
from sympy import trigsimp
x = symbols("x",real = True)

A = sy.Matrix([0,0])
B = sy.Matrix([3,0])
C = 2*sy.Matrix([sy.cos(x),sy.sin(x)])

y = sy.solve((C-B).norm() - 4,x)[1]

print(trigsimp(sy.cos(y)))
print(trigsimp(sy.sin(y)))

C = 2*sy.Matrix([-1/4,sy.sqrt(15)/4])

z = sy.pi - y
print(trigsimp(sy.cos(z)))

AC = (C-A).norm()

print(AC/2)

AD = (AC/2)/trigsimp(sy.cos(z))

print(AD)

AB = (B-A).norm()

BD = AD + AB

BDC = C[1]*BD*(1/2)

print(BDC)

参考

お気楽 SymPy プログラミング超入門
Python,入門
タイトルとURLをコピーしました