f(z) =
→複素関数を座標平面への着色としてプロットするツールです。定義域を表す座標平面の各点に、関数の値を表す色をプロットします。計算はブラウザ側(JavaScript)で行われるため、描画にかかる時間は閲覧環境に依存します。
なお、計算時間や精度についての最適化は行っていないので(たとえば複素関数は定義通りの式のまま実装されています)、応答が遅い、誤差で数値がおかしいなどの不具合が起こることがあります。あらかじめご了承ください。
複素数の値に対して、絶対値から輝度、偏角から色相を決めて、HSL色空間で表します。彩度は100%で固定です。偏角から色相へは単純なラジアンから度への変換ですが、絶対値から輝度へは値の範囲が異なるので、次の関数 \(L:[0,∞)→[0\%,100\%)\) で変換をします。
\(L(r)=\begin{cases} \frac{1}{2}r^{\log_2\frac{\mathrm{e}}{4}}×100\% & (0≦r≦1)\\ (1-\frac{1}{2\log_2(\sqrt{r}+1)})×100\% & (1<r) \end{cases}\)
例えば、関数 \(f(z)=z^2\) は \(z=0+1\mathrm{i}\) のとき \(f(z)=-1=1\mathrm{e}^{\mathrm{i}\pi}\) です。 \(\pi=180°,L(1)=50\%\) ですから、点 \((0,1)\) に \((H,S,L)=(180°,100\%,50\%) \) の色をプロットすることになります。
おまけとして、3つの実数から色を決めるものも実装しました。各関数の実部の値を次の関数 \(R:(-∞,∞)→(0,256)\) で変換した後、3つの値の組 \((R,G,B)\) をRGB色空間に対応させます。
\(R(x)=\begin{cases} \frac{x}{|x|}(1-\frac{1}{2\log_2(|x|+2)})×256 \end{cases}\)
sin(z+pi)*exp(z^2)-i
のように入力してください。入力フォームで一覧した通りの変数・定数・記号・関数が使えます。スペースや、大文字小文字の違い、括弧の違い(()
,{}
,[]
の3種類)は無視されます。全角文字は使えません。括弧の数のチェックなどはしていないので、きちんと閉じられているかなどは自分で確認してください。
複素数の偏角 arg(z)
は \(-\pi ≦ \theta ≦ \pi\) の範囲*1で値を返すため、負の実軸を横切るときに値が \(2\pi\) だけ飛び、連続ではありません。このように不連続となる曲線をbranch cut(分岐切断)といいます(「分岐切断」という呼称はPython複素関数ライブラリのリドキュメントで使われていました)。log
はarg
に依存するため同様の分岐切断を持ち、平方根・立方根・逆三角関数・逆双曲線関数は定義の中にlog
があるため、やはり分岐切断が生じます。
arg(c)+2*pi
とすれば \(2\pi\) だけ大きい偏角を得られることから、log(c)+i*2*pi
などとすることで、log
の別の分岐が得られます。
実装にあたって参考にした情報(の一部)です。