2025/01/16

マンデルブロ集合の彩色方法(4)

04.knit

1 Binary Decomposition

下記文献に従い着色した。

参考文献: Binary Decomposition

バイナリ分解プロットを作成する最も簡単な方法は、非常に大きなエスケープ半径を持つ通常の エスケープ反復アルゴリズムを使用することです。エスケープされた Z の値 ( N番目の 反復) に正の虚数成分があるかどうかに注意してください。これを使用して明るい色または暗い色を 選択します。

下記では、 escape.radius=60 で計算した \(z_n\) の値について正の虚数成分があるかどうか チェックしています。(sign(Im(z))の部分)

mandelbrot()関数の中身は省略します。知りたい方は初回の記事を参照ください。

library(tidyverse)

mandelbrot(escape.radius=60) %>%                               ## エスケープ半径=60で計算
    mutate(bd=if_else(is.na(iter), NA_real_, sign(Im(z)))) %>% ## Znの虚数成分が正の場合は1
    ggplot() +
    aes(x=Re(c), y=Im(c), fill=bd) +
    geom_raster() +
    scale_fill_gradient(low='gray30', high='white', na.value='black') +
    coord_fixed(ratio=1) +
    guides(fill='none')

2 実験

2.1 エスケープ半径を標準的な値にするとどうなるか?

エスケープ半径を標準的な値(escape.radius=2)にすると下記のようになった。

library(tidyverse)

mandelbrot(escape.radius=2) %>%                                ## エスケープ半径=2で計算
    mutate(bd=if_else(is.na(iter), NA_real_, sign(Im(z)))) %>% ## Znの虚数成分が正の場合は1
    ggplot() +
    aes(x=Re(c), y=Im(c), fill=bd) +
    geom_raster() +
    scale_fill_gradient(low='gray30', high='white', na.value='black') +
    coord_fixed(ratio=1) +
    guides(fill='none')

2.2 虚数成分ではなく実数成分で色分けしてみるとどうなるか?

\(z_n\)の実数成分で色分けしてみると下記のようになった。これは使えそう。

library(tidyverse)

mandelbrot(escape.radius=60) %>%                               ## エスケープ半径=60で計算
    mutate(bd=if_else(is.na(iter), NA_real_, sign(Re(z)))) %>% ## Znの実数成分が正の場合は1
    ggplot() +
    aes(x=Re(c), y=Im(c), fill=bd) +
    geom_raster() +
    scale_fill_gradient(low='gray30', high='white', na.value='black') +
    coord_fixed(ratio=1) +
    guides(fill='none')

マンデルブロ集合の彩色方法(4)

04.knit 1 Binary Decomposition 下記文献に従い着色した。 参考文献: Binary Decompo...