LoginSignup
1
2

More than 1 year has passed since last update.

[備忘録]Pythonで数学の入試問題の答えを出してみた[積分/三角関数/実数解と虚数解をもつn次方程式]

Last updated at Posted at 2021-05-15

はじめに

Pythonには様々なライブラリがあり、標準・外部ともに便利なものがたくさんあります。

今回は外部ライブラリのsympyを用いて、数学の入試問題の答えを求めてみます。

  ・プログラミングを通して、数学を勉強してみたいと思ってる人
  ・数学に対して苦手意識を持ってる人
  ・何か作りたいものはないけど、プログラミングを始めてみたい人

Pythonを通して数学と戯れませんか?🐍🎸
解いた問題は、qiitaに備忘録として投稿し、他の人にも共有してみましょう!!

▶外部ライブラリにつき、予めインストールを要します。(以下、入力例)

bash/zsh
conda install sympy #エラーが起これば、下のコマンドを実行してください。
pip install sympy 

目次

  1. 積分
  2. 三角関数
  3. 実数解と虚数解をもつn次方程式
  4. References

本編

積分

数式

信州大で出題された問題: e^{\!-x}sin\left(x \right)

コーディング

python
from sympy import *
x = Symbol('x')
sol = integrate(exp(x*-1)*sin(x))#信州大 積分
print(sol)#答えは、-exp(-x)*sin(x)/2 - exp(-x)*cos(x)/2 

はい、これだけで終わりです。
驚いた方もいらっしゃるのはないでしょうか。

最初なので、一行ずつ説明します。

x = Symbol('x')

  • 数学的には、xを変数としてます
  • プログラミング的には、左辺のxとは未知数であることを右辺で表現してます

sol = integrate(exp(x*-1)*sin(x)) 

  • 数学的には、問題の積分計算をしてます
  • プログラミング的には、右辺で積分した返り値を左辺のsolに代入してます

プログラミングは一般的に右辺にどういう動作をするか記述するため、左辺は自由に決めて問題ありません。
既存のコードを見る際は、初めに左辺の変数名を参考にしつつ、右辺で何をしてるのか気にしてみてください。

print(sol)  #-exp(-x)*sin(x)/2 - exp(-x)*cos(x)/2

  • 数学的に言うと、積分の答えを書いてるといった感じです。
  • プログラミング的には、solの中身を標準出力しています。
  • 標準出力はプログラミングの基本のため、これから幾度も出会うことでしょう。
  • Pythonのprint関数は+αの機能が数多くあるので、各自で調べてみてください。

solの値は積分定数が0に限るので、正確には-exp(-x)*sin(x)/2-exp(-x)*cos(x)/2+Cです

三角関数

数式

2019年横浜市立(医)で出題された問題: tan\left(π/24 \right)

コーディング

python
from sympy import *
sol2 = 1/(tan(pi/24))  #2019年横浜市立(医)
print(sol2) #答えは1/(-(sqrt(2)/4 + sqrt(6)/4)/(-sqrt(2)/4 + sqrt(6)/4) + 1/(-sqrt(2)/4 + sqrt(6)/4))
  • 数学的補足

    • 今回の問題は、pi/12(=15°)の半角が、pi/24(=7.5°)あることの発見がカギ。
    • まずは、sin30°やcos30°の値から半角の公式よりsinとcosのpi/12(=15°)の値を求める
  • プログラミング的補足:

    • 開発者がコメントを残したいときは、文頭に特定の記号を入れます。
    • Pythonでは、#を入れるとその文の後ろではコメントアウトされます。

↓--以下、tan(π/24)を手作業で解く時に必要な値(参考)--↓

sin15°= -sqrt(2)/4 + sqrt(6)/4
cos15°= sqrt(2)/4 + sqrt(6)/4
sin7.5° = -sqrt(3)*sqrt(1/2 - sqrt(2)/4)/2 + sqrt(sqrt(2)/4 + 1/2)/2
cos7.5° = sqrt(1/2 - sqrt(2)/4)/2 + sqrt(3)*sqrt(sqrt(2)/4 + 1/2)/2

実数解と虚数解をもつn次方程式

数式

2021年早稲田大学で出題された問題: x^{\!4}+5x^{\!3}-3x^{\!2}+4x+2  ※(1+√3i)/2を解に持つことは明示

コーディング

python
from sympy import *
x = Symbol('x')
sol3 = solve((x**4)+5*(x**3)-3*(x**2)+4*(x)+2,x)  #2021年早稲田大学
print(sol3) #[-3 - sqrt(7), -3 + sqrt(7), 1/2 - sqrt(3)*I/2, 1/2 + sqrt(3)*I/2]
  • 数学的補足:

    • 今回は4次方程式のため、解は4つ存在する
    • (1+√3i)/2、(1-√3i)/2の和と積は1である⇔x^2-x+x+1=0
    • 「実数係数のn次方程式が虚数解を持つとき、その共役複素数も解となる」性質より残り2つとなる
    • 与式とx^2-x+x+1の商がx^2+6x+2なので、残りの2つはこの二次方程式の解(実数解)となる

    ("b^2-4ac = 7" かつ "b=3, a=1/2" のとき、c=1 ⇔ a=1, b=6, c=2の二次方程式 ⇔ x^2+6x+2=0となり、今回の4次方程式の残りの二つの解はこの二次方程式の解となると解釈しても良い)

  • プログラミング的補足:

    • 少なくとも、Pythonではべき上の表現を**で表現できます。

References

More Info

About me

1
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2