Pythonhukuda222こんにちは。hukuda222です。情報通信系の学部2年生です。バスゼミに行った2,5類の方は初めての休日、他の類の方は連休2日目ですね。一年前の僕は2類のバスゼミで徹夜で遊んで疲れたので昼まで寝ていました。・前置き近年、ハードウェアの進歩によって機械学習の分野に注目が集まっており、その影響でその辺に強いプログラミング言語であるところのPython、Rあたりの需要が高まっています。Pythonは言語別年収で1位らしいですし、これはマスターしておけばきっと将来安泰でしょう[要出典]Pythonにはバージョン2系と3系があり、2系にしか対応してないライブラリも多いので併用して使われています。いずれは、全てのライブラリが最新バージョンに対応するようなのでここでは最新の安定バージョンである3.6.0(4/9現在)を使います。それから、未習範囲の数学の話も出てきますが、予習がてら目を通すなり、授業で課題が出て「この回答であってるかな?」となった時にでも見てください。・準備Python最新版をインストール......するのは面倒かもしれないので、数学の検算だけできればいいやって場合はこのサイトを使ってください。http://live.sympy.org/Macに入れたい場合はこのサイトを参考にすると良いと思います。http://www.task-notes.com/entry/20141215/1418612400windowsに入れたい場合はこのサイトを参考にすると良いと思います。windowsでのPythonのインストール方法Pythonのインストール以降は、基本的にコマンドプロントでの操作になります。SymPyのインストールSymPyは、PythonでSymbol、つまり変数を扱うことのできるライブラリです。これを用いることで、大学数学の計算機を用いることを想定していない計算問題を一瞬で解くことができます。ブラウザで動くsympyを使う場合は、以下の操作は必要ありません。sympyでインストールできます。SymPyをダウンロード(GitHubに飛びます)Macの方なら、sympy-1.0.tar.gz、Windowsの方ならsympy-1.0-win32.exeを上のリンクからダウンロードしてください。installを実行することで、インストールできます。Sympyで遊ぼう今回は対話モードで実験したいと思います。(ブラウザのSympyを使う場合はここまでのコマンドは必要ありません)最初のコマンドは"Sympy"っていうのを使うよ、2つ目はSympyの全ての機能を使うよという意味です。※以下ではpprintという関数を使っていますが、ブラウザ版のSympyだとpprintを使わなければ、latexで綺麗に表示してくれるので使わない方がいいです。Symbol('y')これで、xとyという変数を使うことができます。yyという感じで表示されます。x/yの結果がちょっとわかりにくいかもしれませんが、ちゃんとyが分母でxが分子の分数として表示されています。x見にくいですが、x**nでxのn乗を表します。縦長ですが、普段使う表記で表示してくれます。・有名な定数と関数>>init_session()この関数を実行することでよく使う定数や関数を使えるようになります。sin(e⋅π)eかなり見辛いですが、"E"は自然対数e、"I"は虚数単位i、"pi"で円周率πを示せる他、expやlog、三角関数はそのまま使えます。{y:1,x:3}こんな感じで、=0となる式と求めたい変数を入れると計算してくれます。あとの具体的に使いそうな機能は、手元にある実際に授業で使った教科書の計算問題で紹介します。1.(3(x−1)2x2+1​​)の導関数を求めよ>>diff((x**2+1/((x-1)**2))**(1/3),x,1)2/3を丸めて計算しているので0.6666666667という表記になってしまっていますが、ちゃんと計算できています。問題によっては計算ができているものの約分ができてなかったりすることがあります。2.(x→0lim​x(cosx−1)sinx−xex+x2​)を漸化展開を用いて書き表せ数学的な説明は長くなるので省きますが、式が極限まで0に近づくとどうなるのかを考えると、分子分母がそれぞれ0になってしまいます。そこで、漸化展開をすることによって分子と分母を約分できるような形に近似させます。することで、xが0に限りなく近い場合にとる値も求めることができます。4心配しなくてもSympyが勝手に漸化展開して計算してくれます。漸化展開した結果は、series(f1,x)で見ることができます。>>10080.0000000000無限は、ooで表記します。ガンマ関数も必要に応じて勝手に使ってくれます。0]])がAを簡約化した行列です。二つ目の要素は、Aをどのように簡約化したかを示すピポットというものです。詳しくはググるか数学の先生に聞いてください。慣れるとこんな簡単な問題ならすぐにできるのですが、簡約化は計算ミスの温床になりやすいのでチェックは入念にしたいところです。それから、省きましたが行列同士の演算は商以外は実数と同様に計算できます。b*d*e*hvar("a:z")で、a~zの変数を一気に宣言することができます。変数を含む行列の行列式を出すのも余裕です。2)/x**2]])C.adjugate()で余因子行列が出せます。逆行列というのは、余因子行列を行列式で割ったものなのでそのままかくと答えが出ます。2/x**2]])C.inv()でもそのまま逆行列を出すことができます。この際、そのまま書くとぐちゃぐちゃなことになるのでsimplifyの中に入れることで見やすい形に変形させることができます。simplifyは様々な式に対して使えます。・終わりに実際に数学の課題を見るとわかりますが、単純な計算よりも難しい問題はたくさんあります。証明問題とかε-δ問題とか、どちらかというと、計算するだけの段階にまで落とし込めれば正解したも同然という問題が多くあります。そこで、立式まではあってるのに最後の最後の計算ミスによって、数学の成績を下げてしまうと大変もったいないのです。数学の単位は1,2Qの必修で4単位、3,4Qの選択で6単位なのですごーく重要です。試験の場合は何回もチェックするくらいしかできないですが、課題の場合は何を使ってもいいので、計算機や友人の回答と照らし合わせて是非是非高得点を目指して、希望の系に行けるように頑張ってください。Drive連携」の二本立てです。Notesのおまけ記事(日本語)http://www.turbare.net/transl/scipy-lecture-notes/packages/sympy.html・プログラミング速報(日本語)http://programming.blogo.jp/python/sympy/introductionこの記事を書いた人hukuda222福田です。プログラムを書いてます。