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

プログラミング

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

今回は 平成31年の数1Aにある第一問の(1)をやっていきたいと思います。

スポンサーリンク

準備

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

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

の二つです。

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

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

解く問題

\(a\)を実数とする。 $$9a^2-6a+1 = ([ア]a-[イ])^2$$ である。次に $$A = \sqrt{9a^2-6a+1} + |a+2|$$ である。 次の三つの場合に分けて考える。$$\\$$ $$\begin{cases} a>\frac{1}{3}のとき、A = [ウ]a+[エ]である。\\ -2 < a < \frac{1}{3}のとき、A = [オカ]a+[キ]である。\\ a<-2のとき、A = -[ウ]a-[エ]である。 \end{cases}$$ \(A=2a+13\)となる\(a\)の値は $$ [ク],\frac{[ケコ]}{[サ]} $$ である。

因数分解

まずは\(9a^2-6a+1\)の因数分解です。

これには、factorという関数を使っていきます。では早速やっていきましょう。

import sympy 
from sympy import Symbol
from sympy import factor

a = Symbol('a',real=True);

exp = 9*a**2-6*a+1;
print(factor(exp));

出力は

(3*a - 1)**2
でしっかりと因数分解できています。 よって答えは $$ ([3]a-[1])^2 $$

このことから、[ウ][エ][オカ][キ]は簡単に求められて、 $$\begin{cases} a>\frac{1}{3}のとき、A = [4]a+[1]である。\\ -2 < a < \frac{1}{3}のとき、A = [-2]a+[3]である。\\ a<-2のとき、A = -[4]a-[1]である。 \end{cases}$$ となります。

絶対値の計算

最後に絶対値を含む方程式を計算します。少し特殊なのでてこずりました。

from sympy import sqrt
from sympy import Eq
from sympy import solve
 
A = sympy.sqrt(9*a**2-6*a+1) + abs(a+2)#math,numpyの.sqrtではうまくいかない

exp2 = Eq(A,2*a + 13)

solve(exp2,a)

出力は

[-7/3, 6]
で答えと一致します。

ちなみに、因数分解したときに定義したaで、

a = Symbol('a',real=True)
real=Trueという記述を忘れていていると、ルートの計算をするところでエラーを起こしてしまいます。

また、エラー関連でいうと

A = sympy.sqrt(9*a**2-6*a+1) + abs(a+2)
でnumpyやmathのsqrt関数を使うとエラーを起こします。これは、numpyやmathは数値が与えられている場合に強いが、代数の計算は不得意なためだと思われます。

よって答えは $$ [6],\frac{[-7]}{[3]} $$ です。

参考

Python 'add' object has no attribute 'sqrt'
I'm trying to find the intersection between a ray and a 3D surface, given in spherical coordinates r=f(theta). Not sure how to do simply in Python, I first con...
過去3年間分の試験問題|大学入試センター
大学入試センターの過去の試験情報です。実施結果、本試験や追・再試験の問題・正解、志願者のデータ、試験問題評価委員会報告書、受験案内、受験上の注意、出願手続き方法、センター試験参加大学などに関する情報を掲載しています。

コメント

  1. […] 平成31年の数1Aにある第一問の(1) […]

タイトルとURLをコピーしました