見出し画像

macOSで数式を計算する

何度か告白したことがあるけれども、私は数学が得意ではない。自分の手計算なんて 1 ミリも信じていない。ちょっと事情があって、数式を計算したいと思い、自分の環境に設定してみた。なお、環境は macOS である。ちょっと長くなるので、2回に分け、今回は導入作業編だ。(→計算編

Jupyter Notebook と Jupyter Lab

随分前、コードを含むノートが作ることができる、Jupyter Notebook についての記事を書いた。この環境は Python で動いていて、コメントとコード、なんなら Pandas というパッケージを使って集計作業なんかをしたり、matplotlib というパッケージを使って、グラフを作ったりすることができる。(Rの方が使いやすいと思うこともある)

久し振りにトップページを見ると、Jupyter Lab を推している。そこで、数式を計算したいニーズが出てきたので、改めて設定してみることにした。

LaTeXという代物

理系の論文を書かれたりする方は、数式を綺麗に清書することを目的として作られた、LaTeX というものがあるのはご存知であろう。Jupyter Lab は、ノートの中に Markdown という記法で書き込むと、綺麗なフォントでコメントを書いてくれる。さらに、LaTeXが使える環境で、nbconvert という Python のパッケージを導入すると、LaTeX で Markdown の中に書いた数式を解釈して、綺麗に書いてくれる。[^1]

$$
S = \{ x \in \mathbb{Z}\}
$$
レンダリングされた LaTeXのコード
(なお、上記は適当に書いています)

インストールするには

必要なディスク容量

手元の環境で見たところ、Python の環境で必要なのは、おそよ 300 MB、MacTeX におよそ 8.8 GB 必要だ。これには、matplotlib や pandas などの統計によく使われるパッケージは含まれていない。

専用環境の設定

インストールをするには、まず、Python が導入されていることが前提だ。
私の環境では、Python 3.12.2 が導入されている。

user@mac-book-pro ~ % python3 --version
Python 3.12.2

Python でいろんな環境を使うのであれば、環境を分けた方が良い。
例は、~/Documents の下に、mypyenv という環境を作成するコマンドだ。作成したら、環境を使うために、"activate" を読み込む。環境を解除するには "deactivate" とコマンドを入力する。

user@mac-book-pro ~ % python3 -m venv ~/Documents/mypyenv
user@mac-book-pro ~ % ls ~/Documents/mypyenv
bin		include		lib		pyvenv.cfg
user@mac-book-pro ~ % source ~/Documents/mypyenv/bin/activate
(mypyenv) mac-book-pro%

LaTeXの導入

LaTeXの導入は、Homebrew のようなパッケージマネージャを使うのが簡単だ。もちろん、ダウンロードしても良い。おすすめは、MacTeX。なお、本稿執筆時点の大きさを見てみると、8.8 GB ほど必要だ。途中、管理者のパスワードを入力するところが1箇所出てくる。時間はかかるが、それ以外はすんなりとインストールされるはずだ。

user@mac-book-pro ~ % brew install mactex

なお、上記は LaTeX 編集用のエディタなども導入されるので、Visuatl Studio Code の機能拡張をつかって LaTeXを使うように特にGUIが不要な場合であれば、mactex-no-gui のパッケージを導入しても良い。

Sympy の導入

今回は数式を扱えるようにするのが目的なので、Sympy を導入する。
公式の推奨は Anaconda パッケージマネージャを使った方法だ。Anacondaは安定したパッケージの組み合わせで配布されるため、、不具合などの修正が入るのが若干遅めである。今回は、 GitHubからレポジトリを clone し適用する方法をとった。

user@mac-book-pro ~ % git clone https://github.com/sympy/sympy.git
user@mac-book-pro ~ % cd sympy
user@mac-book-pro ~ % python -m pip install -e .


Jupyter Lab の導入

以下のコマンドで、Jupyter Lab が導入できる。

(mypyenv) mac-book-pro% pip install jupyterlab
Collecting jupyterlab
  Using cached jupyterlab-4.1.5-py3-none-any.whl.metadata (15 kB)
Collecting async-lru>=1.0.0 (from jupyterlab)
  Using cached async_lru-2.0.4-py3-none-any.whl.metadata (4.5 kB)
Collecting httpx>=0.25.0 (from jupyterlab)
  Using cached httpx-0.27.0-py3-none-any.whl.metadata (7.2 kB)
Collecting ipykernel (from jupyterlab)
  Using cached ipykernel-6.29.4-py3-none-any.whl.metadata (6.3 kB)
Collecting jinja2>=3.0.3 (from jupyterlab)
  Using cached Jinja2-3.1.3-py3-none-any.whl.metadata (3.3 kB)
Collecting jupyter-core (from jupyterlab)
  Using cached jupyter_core-5.7.2-py3-none-any.whl.metadata (3.4 kB)
Collecting jupyter-lsp>=2.0.0 (from jupyterlab)
  Using cached jupyter_lsp-2.2.4-py3-none-any.whl.metadata (1.8kB)
(..........)
-2.2.1 wcwidth-0.2.13 webcolors-1.13 webencodings-0.5.1 websocket-client-1.7.0
(mypyenv) mac-book-pro%

続いて、nbconvert を導入する。

(mypyenv) mac-book-pro% pip install nbconvert
Requirement already satisfied: nbconvert in ./Documents/mypyenv/lib/python3.12/site-packages (7.16.3)
Requirement already satisfied: beautifulsoup4 in ./Documents/mypyenv/lib/python3.12/site-packages (from nbconvert) (4.12.3)
(......)
>=6.1.12->nbclient>=0.5.0->nbconvert) (6.4)
(mypyenv) mac-book-pro%

起動

順調に設定ができたら、ターミナルから以下のコマンドで、JupyterLab のアプリケーションをスタートする。ブラウザが開き、画面が表示されるはずだ。

(mypyenv) mac-book-pro% jupyter lab

なお、上記のコマンドを実行したターミナルで、CTRL+C を押すと、以下の確認が出るので、y を押して ENTER を押すことで、停止することができる。

// 例
^C[I 2024-04-02 22:09:50.558 ServerApp] interrupted
[I 2024-04-02 22:09:50.558 ServerApp] Serving notebooks from local directory: /Users/hisaotsu
    0 active kernels
    Jupyter Server 2.13.0 is running at:
    http://localhost:8889/lab?token=bdf049a8bcaa44a427ed6ea6f3764a3b60d74dc874955b66
        http://127.0.0.1:8889/lab?token=bdf049a8bcaa44a427ed6ea6f3764a3b60d74dc874955b66
Shut down this Jupyter server (y/[n])? y
[C 2024-04-02 22:09:52.704 ServerApp] Shutdown confirmed
[I 2024-04-02 22:09:52.706 ServerApp] Shutting down 4 extensions
(mypyenv) mac-book-pro% 

実行例

Sympyの導入の文書に書かれているものを試してみると、以下のようになった。

SymPyで微積分を計算させた例

また、Markdown で以下のように数式を表示させることもできる。

数式を LaTeX で書いた例

引き続き、計算編をお読みになりたい方はこちら。

脚注

[^1]: ふと気がついたが、note でもコードブロックに LaTeX を書いて、マウスポインタを持っていくと解釈して表示してくれる。

参考文献



この記事はここまでです。 最後まで読んでいただいてありがとうございます。 気に入っていただいたなら、スキを押していただいたり、 共有していただけるとうれしいです。 コメントや感想大歓迎です!