跳转到内容

曼德博集合:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
L1988770613留言 | 贡献
內容擴充
はるもと留言 | 贡献
修正筆誤
 
(未显示25个用户的33个中间版本)
第1行: 第1行:
{{Refimprove|time=2020-09-23T04:50:42+00:00}}
{{NoteTA|G1=Math|1=zh-hans:复二次多项式;zh-hant:複二次多項式;}}
{{NoteTA|G1=Math|1=zh-hans:复;zh-hant:複;|2=zh-hans:迭代;zh-hant:疊代;}}
[[File:Mandelset hires.png |right|thumb|250px| 如果c点属于曼德博集合M则为黑色,反之为白色]]
[[File:Mandelset hires.png|right|thumb|250px| 如果c点属于曼德博集合M则为黑色,反之为白色]]


'''曼德博集合'''(Mandelbrot set,或译為'''曼德布洛特复数集合''')是一种在[[复平面]]上组成[[分形]]的点的集合,以數學家[[本華·曼德博]]的名字命名。曼德博集合與[[朱利亚集合]]有些相似的地方,例如使用相同的复二次多项式來进行[[迭代]]。
'''曼德博集合'''({{lang-en|Mandelbrot set}},或译為'''曼德布洛特复数集合''')是一种在[[复平面]]上组成[[分形]]的点的集合,以數學家[[本華·曼德博]]的名字命名。曼德博集合與[[朱利亚集合]]有些相似的地方,例如使用相同的复二次多项式來进行[[迭代]]。


== 定义 ==
== 定义 ==
曼德博集合可以用二次多项式来定义:
曼德博集合可以用二次多项式来定义:


:<math>f_c(z) = z^2 + c \,</math>
:<math>f_c(z) = z^2 + c \,</math>


其中 <math>c</math> 是一个复数数。
其中 <math>c</math> 是一个复数数。


从 <math>z = 0</math> 开始对 <math>f_c(z)</math> 进行[[迭代]]:
从 <math>z = 0</math> 开始对 <math>f_c(z)</math> 进行[[迭代]]:
第27行: 第28行:
不同的参数 <math>c</math> 可能使[[序列]]的[[绝对值]]逐漸發散到无限大,也可能[[收斂]]在有限的區域内。
不同的参数 <math>c</math> 可能使[[序列]]的[[绝对值]]逐漸發散到无限大,也可能[[收斂]]在有限的區域内。


曼德博集合 <math>M</math> 就是使[[序列]]不延伸至无限大的所有复数 <math>c</math> 的[[集合_(数学)|集合]]。
曼德博集合 <math>M</math> 就是使[[序列]]不延伸至无限大的所有复数 <math>c</math> 的[[集合 (数学)|集合]]。

==特性==
*自相似
*面积为{{gaps|1.506|591|856|1}}<ref>{{Cite web |url=http://www.mrob.com/pub/muency/pixelcounting.html |title=Mrob.com pixel counting |accessdate=2012-01-01 |archive-date=2019-08-10 |archive-url=https://web.archive.org/web/20190810111304/http://www.mrob.com/pub/muency/pixelcounting.html |dead-url=no }}</ref><ref>{{Cite web |url=http://mrob.com/pub/muency/areahistory.html |title=Mrob.com area history |access-date=2012-04-29 |archive-date=2020-09-22 |archive-url=https://web.archive.org/web/20200922130536/http://mrob.com/pub/muency/areahistory.html |dead-url=no }}</ref>


== 相關的定理 ==
== 相關的定理 ==
第37行: 第42行:


假設 <math>|c|\leq\frac{1}{4}</math> 為真
假設 <math>|c|\leq\frac{1}{4}</math> 為真

則<math>|z_1|= |c|\leq \frac{1}{4}< \frac{1}{2}</math>


===== 第一步: =====
===== 第一步: =====
第103行: 第110行:
由數學歸納法可得知 <math>2<|{z_1}|<|{z_2}|<...<|{z_n}|<|z_{n+1}|<|z_{n+2}| \,</math>,可看出隨著迭代次數增加 <math>|z_n| \,</math> 逐漸遞增並發散。
由數學歸納法可得知 <math>2<|{z_1}|<|{z_2}|<...<|{z_n}|<|z_{n+1}|<|z_{n+2}| \,</math>,可看出隨著迭代次數增加 <math>|z_n| \,</math> 逐漸遞增並發散。


所以若 <math>|c|>2 \,</math>,<math>c\notin{M}</math>,故得證。
假如<math>|z_n| \,</math>不发散则收敛于某个常数<math> a>|c|>2 </math>,


由<math>|z_{n+1}|\ge |z_{n}|^2-|c|</math> 再取极限得 <math>a\ge a^2-|c|</math> 即 <math>a^2-a\leq |c|</math>。

又 <math>a^2-a=a(a-1)\ge a> |c|</math>,矛盾,故<math>|z_n| \,</math>发散。


所以若 <math>|c|>2 \,</math>,則 <math>c\notin{M}</math>,故得證。


=== 定理三 ===
=== 定理三 ===


若 <math>c\in{M}</math>,則 <math>|z_n|\leq{2}, n=1,2,...</math>
若 <math>c\in{M}</math>,則 <math>|z_n|\leq{2}, (n=1,2,...)</math>


==== 證明: ====
根據定理二以同樣的方法可證明出下式


:<math>2<|{z_1}|<|{z_2}|<...<|{z_n}|<|z_{n+1}|<|z_{n+2}| \,</math>
要證明若 <math>|z_n|>2, (n=1,2,...) \,</math>,則 <math>c\notin{M}</math>


首先分別探討 <math>|c|>2 \,</math> 與 <math>|c|\leq2</math> 兩種情形
由上式可得知對於所有的n(n=1,2,...),<math>|z_n| \,</math>皆比2大,且隨著迭代次數增加逐漸遞增並發散。


所以若 <math>|z_n|>2, n=1,2,... \,</math>, <math>c\notin{M}</math>,故得證
由定理二可知道 <math>|z_n|>2, (n=1,2,...) \,</math> 且 <math>|c|>2 \,</math> 時, <math>c\notin{M}</math>。

接著要證明 <math>|c|\leq2</math> 時的情況:

假設 <math>|z_{n}|>2 \,</math>,因為 <math>|c|\leq2</math> ,所以 <math>|z_{n}|>|c| \,</math> ,而

:<math>|z_{n+1}|=|z_{n}^2+c|\ge |z_{n}^2|-|c|= |z_{n}|^2-|c|</math>

因為 <math>|z_{n}|>|c| \,</math>

:<math>|z_{n}|^2-|c|> |z_{n}|^2-|z_{n}| \,</math>

由 <math>|z_{n}|>2 \,</math>,左右同乘 <math>|z_{n}| \,</math> 再減去 <math>|z_{n}| \,</math> 可得到下式

:<math>|z_{n}|^2-|z_{n}|> 2|z_{n}|-|z_{n}|= |z_{n}| \,</math>

由以上可得知 <math>|z_{n+1}|>|z_{n}| \,</math>

由數學歸納法可得知 <math>2<|{z_n}|<|z_{n+1}|<|z_{n+2}|<... \,</math>,可看出隨著迭代次數增加 <math>|z_n| \,</math> 逐漸遞增並發散。

所以在 <math>|z_n|>2, (n=1,2,...) \,</math> 且 <math>|c|\leq2</math> 的情況下也是 <math>c\notin{M}</math>。

綜合上述可得知不論 <math>|c| \,</math>為多少

若 <math>|z_n|>2, (n=1,2,...) \,</math>,則 <math>c\notin{M}</math>,故得證。


利用定理三可以在程式計算時快速地判斷 <math>|z_n| \,</math>是否會發散。
利用定理三可以在程式計算時快速地判斷 <math>|z_n| \,</math>是否會發散。
第122行: 第159行:
== 计算的方法 ==
== 计算的方法 ==
曼德博集合一般用[[计算机程序]]计算。对于大多数的分形软件,例如[[Ultra fractal]],内部已经有了比较成熟的例子。下面的程序是一段[[伪代码]],表达了曼德博集合的计算思路。
曼德博集合一般用[[计算机程序]]计算。对于大多数的分形软件,例如[[Ultra fractal]],内部已经有了比较成熟的例子。下面的程序是一段[[伪代码]],表达了曼德博集合的计算思路。
<source lang="VB">
<syntaxhighlight lang="VB">
For Each z0 in Complex
For Each c in Complex
repeats = 0
repeats = 0
z=z0
z = 0
Do
Do
z=z^2+z0
z = z^2 + c
repeate = repeats+1
repeats = repeats + 1
Loop until abs(z)>Bailout or repeats >= MaxRepeats
Loop until abs(z) > EscapeRadius or repeats > MaxRepeats '根据定理三,EscapeRadius可设置为2。
If repeats >= MaxRepeats Then
If repeats > MaxRepeats Then
Draw c,Black '如果迭代次数超过MaxRepeats,就将c认定为属于曼德博集合,并设置为黑色。
Draw z0,Black
Else
Else
Draw z0,f(z,z0,Repeats) 'f返回颜色
Draw c,color(z,c,repeats) 'color函数用来决定颜色
End If
End If
Next
Next
</syntaxhighlight>
</source>
=== f函数的一些例子 ===
=== 決定顏色的一些方法 ===
# 直接利用循环终止时的Repeats
# 直接利用循环终止时的Repeats
# 综合利用z和Repeats
# 综合利用z和Repeats
第143行: 第180行:




也可以用Mathematica制作
=== [[Mathematica]]代码 ===
<syntaxhighlight lang="VB">
DensityPlot[Block[{z, t = 0}, z = x + y*I; While[(Abs[z] < 2.0) && (t < 100), ++t; z = z^2 + x + y*I]; Return[t]],{x, -2, 0.8}, {y, -1.5, 1.5}, PlotPoints -> 500, Mesh -> False];
mand = Compile[{{z0, _Complex}, {nmax, _Integer}},
Module[{z = z0, i = 1},
While[i < nmax && Abs[z] <= 2, z = z^2 + z0; i++]; i]];
ArrayPlot[
Reverse@Transpose@
Table[mand[x + y I, 500], {x, -2, 2, 0.01}, {y, -2, 2, 0.01}]]
</syntaxhighlight>


== 各種圖示 ==
== 各種圖示 ==


{{commons|Mandelbrot set}}
[[File:Fractal-zoom-1-15-rupture.ogg|thumb|270px|動畫]]
[[File:Mandelbrotzoom Wiki h265 CRF04 20210412 006GANZ.webm|thumb|270px|動畫]]
[[Image:Mandelbrot sequence new.gif|thumb|right|點擊此圖像可觀看動態影像。]]


{| border=0
{| border=0
第171行: 第217行:
|}
|}


== 參考資料 ==
{{commons|Mandelbrot set}}
{{reflist}}


{{分形}}
{{分形}}


[[Category:分形]]
[[Category:分形]]
[[Category:带有伪代码示例的条目]]

{{Link GA|de}}

[[ar:مجموعة ماندلبرو]]
[[ca:Conjunt de Mandelbrot]]
[[cs:Mandelbrotova množina]]
[[da:Mandelbrotmængden]]
[[de:Mandelbrot-Menge]]
[[en:Mandelbrot set]]
[[eo:Aro de Mandelbrot]]
[[es:Conjunto de Mandelbrot]]
[[fa:مجموعه مندلبرو]]
[[fi:Mandelbrotin joukko]]
[[fr:Ensemble de Mandelbrot]]
[[gl:Conxunto de Mandelbrot]]
[[he:קבוצת מנדלברוט]]
[[hr:Mandelbrotov skup]]
[[hu:Mandelbrot-halmaz]]
[[is:Mandelbrot mengið]]
[[it:Insieme di Mandelbrot]]
[[ja:マンデルブロ集合]]
[[kk:Мандельброт фракталы]]
[[ko:만델브로 집합]]
[[lv:Mandelbrota kopa]]
[[nl:Mandelbrotverzameling]]
[[no:Mandelbrotmengden]]
[[pl:Zbiór Mandelbrota]]
[[pt:Conjunto de Mandelbrot]]
[[ro:Mulțimea lui Mandelbrot]]
[[ru:Множество Мандельброта]]
[[sh:Mandelbrotov skup]]
[[simple:Mandelbrot set]]
[[sk:Mandelbrotova množina]]
[[sl:Mandelbrotova množica]]
[[sv:Mandelbrotmängden]]
[[te:మేండెల్‌బ్రాట్ సెట్]]
[[th:เซตมานดัลบรอ]]
[[tr:Mandelbrot kümesi]]
[[uk:Множина Мандельброта]]
[[vi:Tập hợp Mandelbrot]]

2023年6月10日 (六) 13:49的最新版本

如果c点属于曼德博集合M则为黑色,反之为白色

曼德博集合(英語:Mandelbrot set,或译為曼德布洛特复数集合)是一种在复平面上组成分形的点的集合,以數學家本華·曼德博的名字命名。曼德博集合與朱利亚集合有些相似的地方,例如使用相同的复二次多项式來进行迭代

定义

[编辑]

曼德博集合可以用複二次多项式来定义:

其中 是一个复数參数。

开始对 进行迭代

每次迭代的值依序如以下序列所示:

不同的参数 可能使序列绝对值逐漸發散到无限大,也可能收斂在有限的區域内。

曼德博集合 就是使序列不延伸至无限大的所有复数 集合

特性

[编辑]
  • 自相似
  • 面积为1.5065918561[1][2]

相關的定理

[编辑]

定理一

[编辑]

,則

證明:

[编辑]

假設 為真

第一步:
[编辑]

因為

由以上可得知

第二步:
[编辑]

假設 成立

由上式可得知

由數學歸納法可得知對於所有的n(n=1,2,...), 皆比 小。

當n趨近無限大時 依然沒有發散,所以 ,故得證。


定理二

[编辑]

,則

證明:

[编辑]

假設

第一步:
[编辑]

,左右同乘 再減去 可得到下式

由以上可得知

第二步:
[编辑]

假設 成立,則

因為

,左右同乘 再減去 可得到下式

由以上可得知

由數學歸納法可得知 ,可看出隨著迭代次數增加 逐漸遞增並發散。

假如不发散,则收敛于某个常数,

再取极限得

,矛盾,故发散。


所以若 ,則 ,故得證。

定理三

[编辑]

,則

證明:

[编辑]

要證明若 ,則

首先分別探討 兩種情形

由定理二可知道 時,

接著要證明 時的情況:

假設 ,因為 ,所以 ,而

因為

,左右同乘 再減去 可得到下式

由以上可得知

由數學歸納法可得知 ,可看出隨著迭代次數增加 逐漸遞增並發散。

所以在 的情況下也是

綜合上述可得知不論 為多少

,則 ,故得證。

利用定理三可以在程式計算時快速地判斷 是否會發散。

计算的方法

[编辑]

曼德博集合一般用计算机程序计算。对于大多数的分形软件,例如Ultra fractal,内部已经有了比较成熟的例子。下面的程序是一段伪代码,表达了曼德博集合的计算思路。

For Each c in Complex
 repeats = 0
 z = 0
 Do
  z = z^2 + c
  repeats = repeats + 1
 Loop until abs(z) > EscapeRadius or repeats > MaxRepeats '根据定理三,EscapeRadius可设置为2。
 If repeats > MaxRepeats Then
  Draw c,Black                                            '如果迭代次数超过MaxRepeats,就将c认定为属于曼德博集合,并设置为黑色。
 Else
  Draw c,color(z,c,repeats)                               'color函数用来决定颜色。
 End If
Next

決定顏色的一些方法

[编辑]
  1. 直接利用循环终止时的Repeats
  2. 综合利用z和Repeats
  3. Orbit Traps


mand = Compile[{{z0, _Complex}, {nmax, _Integer}}, 
   Module[{z = z0, i = 1}, 
    While[i < nmax && Abs[z] <= 2, z = z^2 + z0; i++]; i]];
ArrayPlot[
 Reverse@Transpose@
   Table[mand[x + y I, 500], {x, -2, 2, 0.01}, {y, -2, 2, 0.01}]]

各種圖示

[编辑]
動畫
點擊此圖像可觀看動態影像。
最原始圖片
放大等級1
放大等級2
放大等級3
放大等級4
放大等級5
放大等級6
放大等級7
放大等級8
放大等級9
放大等級10
放大等級11
放大等級12
放大等級13
放大等級14

參考資料

[编辑]
  1. ^ Mrob.com pixel counting. [2012-01-01]. (原始内容存档于2019-08-10). 
  2. ^ Mrob.com area history. [2012-04-29]. (原始内容存档于2020-09-22).