chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

Mathematicaは微積の勉強に役立つ?

フーリエ級数の勉強をしていて、sinΘとsinΘを掛け算して積分したら非0だが、sinΘとsin2Θを掛け算して積分したら0になる・・元の関数f(x)に含まれる波(sin/cos/nΘ)を知りたかったら、調査したい波を掛け合わせて積分して0か非0かで判断できる・・的な説明があって、Pythonでプログラム組んでみようと思った。でもまぁどうせなら、PythonやらPyplotで試行錯誤するのではなく、Mathematica等の数式処理システムの方がサクッと動くのではと期待。微積も一発だろうし、グラフも出るようだ。しかも、Mathematicaは基本Lispらしく、ちょっと仕様を読むとカッコの沼らしい。Lispは好きな言語で、カッコの沼にずっとズブズブなので、これはこれでいいのでは?と思い、まずはお試し版をDLしてみた。
ちなみに、家庭・趣味用で使う場合は、Premium Planで¥24,800/年だ。これはあまりに高すぎる。素人なのに月2千円も払うとは。一方で、RaspberryPy版は無料で使えるらしいので、そっちを使ってみるか。。
いつものことながら、またそのうち飽きてしまうのかもしれないが、Mathematicaのtutorialで勉強して、sin/cosのグラフを描画したり、さくっと微積の計算ができるようになりたい。(お試し版の有効期限は15日。自分が集中していられる時間もそれぐらいかも。)
お試し版を契約するとCloud版のMathematicaも使えるようで、とりあえずSinのグラフを描画してみた

元のf(x)に含まれるsin(Θ)を掛け算すると、積分値は非0であると(下記図の上は確かに正の値のみ)。含まれないsin(4Θ)を掛け算して積分すると0になるはずなのだが(下記図の下側のグラフ)。。面積見るだけだとこれが0になるのかどうかちょっと分からず

積分関数を使って面積を算出しないとちょっと見るだけでは判断つかない
Mathematicaでは積分関数も用意されていて、、以下のように書くと、Cos(x)に対して、0-Pi/2の区間積分してくれるらしい。この手軽さはすばらしい。

Integrate[Cos[x], {x, 0, Pi/2}]

どうせなら、関数を定義してからIntegrateを呼びたい。。
sin(4Θ)が含まれるかを確認するため、sin(4Θ)を掛け算する関数(定義した関数名がf(x)なので若干混乱)を定義して、積分してみた

結果は0となり、元の波形にはsin(4Θ)は含まれないことが分かった(ということと理解)
全く知らない人間がプログラムをインストールして少し調べて数時間で、波形表示、積分までできるとは、さすが専用ソフトはよくできている。
ちなみに、関数定義とは、以下と書かれている

Wolfram言語では,関数定義は,パターンに対する変換規則を与える割当てのことです.

スコープ等の概念はなく、文字列置換して実行されるだけ。。。ということのようです。
■追記
Mathematica微積や数理解析、グラフ化等、特徴的な数式処理システムではあるが、年間ライセンスで2.4万円というのが自分には高すぎる(それだけの価値を引き出せる使い方ができそうにない)。RPi上だと無料だけど、毎回RPiを起動して使うのはやはり面倒。PythonにはSympyという数式処理ライブラリがあり、Mathematicaと同様に微積ができるらしい。ということで、Mathematicaを習得するよりSimpyを使う方が良いのではないかという考えに至った*1

■参考URL
解析学の勉強をはかどるために使ったツール #Mathematica - Qiita
Wolfram + Raspberry Pi Project: A Wolfram Engine on Every Raspberry Pi
Wolfram言語チュートリアル:プログラミングの基本
Wolfram Language & System Documentation Center
関数定義 | Wolfram言語プログラミングの基本
科学計算基礎
JSONata およびアセンブリー・アクション

SymPy による数式処理とグラフ作成 - 弘前大学 Home Sweet Home
sympyを使って数学をしよう! #Python - Qiita
Python によるグラフ作成 SymPy Plotting Backends 編 - 相対論の理解とその周辺
プロットを利用する — 読書ノート 1.6dev documentation
Python Plotting Made Easy: A Step-by-Step Guide for Beginners | Medium
https://chemistryprogramming.xyz/2024/03/plots-with-sympy-and-matplotlib/

*1:グラフ化等はMathematicaの方が機能上らしい