Sympy

【備忘】sympyのtips(グラフを合成する)

sympyのtips備忘録 グラフを合成するやり方はあまりググっても出てこなかったのでメモ 参考:微分と積分ってなに? (概念理解とsympy) 参考:sympyを使って微分積分した結果をグラフにplotする グラフを合成するには、「extend」を使う 以下は例 元の線だけのグラフに 各三角を合成すると(上段)、下段のようになる

微分と積分ってなに? (概念理解とsympy)

微分と積分ってなに? 文系の自分は、高校の途中でアメリカをフラフラしていたこともあり、 微積分は知識ゼロだったため、社会人になってから改めて始めから勉強 細かい公式などは、ググるか、python先生に計算をお任せできるけど、 文系人間には概念の理解が難しかったのでメモ 概念 「微分」は「傾き」、「積分」は「面積」を出すこと 例えば、 「距離」を「時間(一定の変化率)」で微分すると「速さ」が出る 「速さ」を「時間(一定の変化率)」で積分すると「距離」が出る 微分 例えば、距離を表しているグラフ「x **2」を「微分」する ※ 以下グラフ「function」青線 ※「 **2」は二乗の意味 接線を引いてみると、時間が大きくなるほど、傾きが大きくなることがわかる ※ 以下グラフ「function」水色線 つまり、微分すると右(「Differential calculus」)のようなグラフとなり、 どんどん傾き(スピード)を大きくなっていることがわかる ※ 以下グラフ「Differential calculus」 参考まで、グラフ表示のpythonコードは以下 ※実行方法など詳細は、sympyを使って微分積分した結果をグラフにplotする を参照ください 積分 次は積分 例えば、速さを表しているグラフ「2*x」を「積分」する ※ 以下グラフ「function」青線 xが大きくなるにつれて、「y=0」との面積は大きくなることがわかる ※ x=10までの面積(濃い青エリア) ※ x=20までの面積(濃い青エリア+水色エリア) ※ x=30までの面積(濃い青エリア+水色エリア+薄い水色エリア) つまり、積分すると右(「integral」)のようなグラフとなり、 どんどん面積(距離)を大きくなっていることがわかる ※ 以下グラフ「integral」 参考まで、グラフ表示のpythonコードは以下 ※実行方法など詳細は、sympyを使って微分積分した結果をグラフにplotする を参照ください まとめ 上の例のように、単純なグラフなら微分積分を使わずに傾きや面積が出せるかもしれないが 以下のようなぐにゃぐにゃ曲がったグラフだと、計算が大変なので微分積分を使うことになる 基本的な概念はここまで

sympyを使って微分積分した結果をグラフにplotする

sympyを使って微分積分した結果をグラフにplotする 自分が引っかかったところは、numpyとmatplotlibを直接?使わないというところ sympyで計算して、sympyで描写する 準備 python3.5.0 on Mac環境で進める まず、必要モジュールをインストール sympyだけだと、実行時に「ValueError: The TextBackend supports only one graph per Plot.」というエラーが出る インストールされたモジュールは以下 このまま実行すると、以下のようなエラーが出てしまう 「matplotlibrc」ファイルの中身を修正することで対応する 参考:Pythonでmatplotlibをimportするとエラーが出る場合の対処策(Mac) 「python -c “import matplotlib;print(matplotlib.matplotlib_fname())”」で表示されたファイルの中身を修正する 「backend: macosx」部分を「backend: Tkagg」に書き換える   実行 「x **3 + 200」を微分するコードは以下 「diff」関数で微分ができる 「f_org」が微分前で、「f_diff」が微分後 微分後の線は赤に指定する ※「**3」は3乗という意味 いざ実行 「x**2 / 3」を積分するコードは以下 「integrate」関数で積分ができる 「f_org」が積分前で、「f_inte」が積分後 積分後の線は赤に指定する いざ実行 以上。 参考: 【Python入門】Sympy・matplotlibで微分積分を計算してみよう [SymPy] Plotting Module