方程式解くのがクッソ苦手でも、コンピュータで方程式を解くためのツールというのが存在するので、大抵のものは自分のようなバカでも自動で解くことができる。

Maxima は Common-Lisp で書かれた数式処理ツールで、方程式を解くこともできる。例えば以下のように

(%i96) assume(C > 0, L > 0);
(%o96)                          [C > 0, L > 0]
(%i97) solve([ (2 * %pi * f * L = 1 / (2 * %pi * f * C))], [f]);
                            1                          1
(%o97)     [f = - ---------------------, f = ---------------------]
                  2 %pi sqrt(C) sqrt(L)      2 %pi sqrt(C) sqrt(L)
(%i98) tex(%);
$$\left[ f=-{{1}\over{2\,\pi\,\sqrt{C}\,\sqrt{L}}} , f={{1}\over{2\,
 \pi\,\sqrt{C}\,\sqrt{L}}} \right] $$
(%o98)                              false

(負のやつが出てくるのはどうしたらいいのかわからない。f > 0 を assume しても消えない)


また、出てきた方程式は tex(%oNN) とすると tex 記法にできて、そのまま使える (手直しが必要な場合も多いけど)

数学ができない僕みたいな人間にとってはこの程度の使い方でも死ぬほど便利だと思う。プログラムを書いてるとしばしば方程式を解いて使う場面があって、そういうとき試行錯誤なしにパツイチで求める式が出てくるのはうれしい。


問題は数式を Maxima の式になおすとこなのですこしだけメモ。演算子, ベーシックな関数

y = 2 * x
2^n
sqrt(2)
%pi
%e^(-t / (C * R))
sum(2 * n, n, 1, k)

simplify_sum

sum をとにかく計算したいときは

$ load(simplify_sum);
$ simplify_sum(sum(2 * n, n, 1, k));

ってやると

ってでてくる。便利すぎる。

log10

log10 はなぜか定義されていないので

 log10(x) := log(x) / log(10)

してあげる必要がある。面倒だから最初から定義されていてほしい。

assume()

よくある、一部変数の値の範囲を仮定できる。一回定義したのは forget(定義) で消せる。全部消したいときは forget(facts()) で消せる。

Dell ディスプレイ モニター UP2414Q 23.8インチ/4K/IPS非光沢/8ms/DPx2,HDMI/AdobeRGB 99%/USBハブ - Dell

Dell

5.0 / 5.0

4K で10万円を切る値段のがでてきた。23.8inch 3840 x 2160 非光沢 IPS。重要なのはディスプレイサイズが今までのに比較して、小さいところだと思う。AdobeRGB 99% カバーらしいし、写真扱うなら本当に欲しいものが出てきた感じだ。

ディスプレイのppiはどれぐらい必要か? というのを書いたけど、これの場合、ppi は約185。デスクトップに置いたとき、ディスプレイの大きさとのバランスが良いのがでてきたなぁという印象。

MacBook の最新モデルからは 4K 解像度に対応しはじめたので、ようやく使える環境が整いつつある。しかし、割と最近にディスプレイ買ったばっかりなのでちょっと手が出ない…… (とかいって買いそう)

function ppi (w, h, inch) { return Math.sqrt(w * w + h * h) / inch };
ppi(3840, 2160, 23.8); //=> 185