PythonはNumpyとかSympyとか、数値計算が得意なライブラリが充実しています。もちろん中学・高校の数学で習うレベルの計算もすぐにできちゃいます。
というわけで今回はPythonでプログラミングをして、中学・高校で習う数学の問題を解いてみました。
Pythonが使えるようになれば、中学・高校レベルの数学では困らずに済む。かもしれない。
■中学2年生レベル
◆連立方程式
◇問題
x + y = 3
x + 3y = 13
のとき、xとyを求めよ。
Numpyを使って、連立方程式を行列計算で解いてみました。
■中学3年生レベル
◆2次方程式
◇問題
x^2 - 10x + 24 = 0
のとき、xを求めよ。
昔の授業では
(x - 4)(x - 6) = 0
x = 4 , 6
このような解法を習ったと思います。
この問題は、NumpyのPolynomialを使って式を作り、roots()で結果を得ることができます。
なお真面目に(?)学校で習う公式を実装してみると、こんな感じです。
■高校数学レベル
◆順列と組み合わせ
これはNumpyなどを使わなくても、Python組み込みのitertoolsで計算できます。
◇問題
・それぞれ異なる色のボールが3個ある。
1.3個から2個を選んで並べた場合、何通りのパターンがあるか求めよ。(順列)
2.3個から2個を選んで取り出した場合、何通りのパターンがあるか求めよ。(組み合わせ)
3P2とか3C2とか、そのままですね。
◆集合
集合はsetを使います。setオブジェクトとしていろいろな演算が可能になります。
問題例
・A(1,2,3,4,5)とB(1,4)という集合がある。
1.BはAの部分集合であるか否か答えよ。
2.AとBの和集合を求めよ。
3.AとBの積集合を求めよ。
◆虚数・複素数
Pythonでは虚数が簡単に表現できます。 10j とすると虚数部10の数値として表現できます。数学では i を使うのが一般的で、 j を使うのは電気工学などの分野が多いから、Pythonでは j ということなんでしょうかね。
10j * 10j などとすると、 -100 と結果を得ることができます。
また、 .real で実数部、.imag で虚数部を取り出せます。
◆微分、積分
Sympyという記号計算用の便利なライブラリを使います。paiza.ioには入っていないのですが……。
pip install sympy
でインストールをして、下記のコードで計算できます。
import sympy sympy.var("x") f = x**2-10*x+24 print(sympy.diff(f, x)) print(sympy.integrate(f, x))
f = x**2-10*x+24 を微分、積分した場合、下記の結果が出力されます。
2*x - 10 x**3/3 - 5*x**2 + 24*x
極限なども求められます
import sympy sympy.var("x") f = x**2-10*x+24 print(sympy.limit(f, x, sympy.oo))
Sympyはこういう処理でかなり強力なので、使えるようになっておくと捗ります。
■まとめ
というわけで、Pythonを使ってこの辺の解き方を応用していけば、数学で困らずに済む。かもしれない。
もちろん学校の試験などではプログラミングできるはずがないので、学生の方はきちんと解き方を理解しておきましょう。試験大事。
エンジニアになって機械学習を始めた大人にとっては、Pythonがあれば面倒な計算もすぐできるのが便利ですね(それでも多少の数学の復習は必要ですが……)。
「プログラミング初心者で、まずはPythonを基礎から学びたい!」という方は、プログラミングが動画で学べる「paizaラーニング」の「Python入門編」から始めてみると、無理なく基礎を習得できると思います。
■Pythonの講座も公開中!プログラミングが動画で学べるレッスン
paizaは、技術を追い続けることが仕事につながり、スキルのある人がきちんと評価される場を作ることで、日本のITエンジニアの地位向上を目指したいと考えています。
自分のスキルを磨いていきたいと考えている方におすすめなのが「paizaラーニング」。オンラインでプログラミングしながらスキルアップできる入門学習コンテンツです。初心者でも楽しくプログラミングの基本を学ぶことができます。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。