for循环小实例--for循环与Mandelbrot

Mandelbrot集?应该算数学的范畴吧...

要是在早那么点点时间的话说不清我会感兴趣...

不过还是了解一下下吧...

哪位好心人能说说这东西是干什么的?

 

*

Mandelbrot集

曼德布洛特集合(Mandelbrot set)是在复平面上组成分形的点的集合。Mandelbrot集合可以用复二次多项式f(z)=z^2+c来定义。
其中c是一个复参数。对于每一个c,从z=0开始对f(z)进行迭代
序列 (0, f(0), f(f(0)), f(f(f(0))), .......)的值或者延伸到无限大,或者只停留在有限半径的圆盘内。
曼德布洛特集合就是使以上序列不延伸至无限大的所有c点的集合。
从数学上来讲,曼德布洛特集合是一个复数的集合。一个给定的复数c或者属于曼德布洛特集合M,或者不是。
计算的方法

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

 

For Each z0 in Complex
repeats = 0
z=z0
Do
z=z^2+z0
repeate = repeats+1
Loop until abs(z)>Bailout or repeats >= MaxRepeats
If repeats >= MaxRepeats Then
Draw z0,Black
Else
Draw z0,f(z,z0,Repeats) 'f返回颜色
End If
Next
---------------------

Mandelbrot 图像C#源代码

ContractedBlock.gifExpandedBlockStart.gifCode
using System;
using System.Collections.Generic;
using System.Text;
// Mandelbrot Image
// Created by Rich on 2009-3-25
namespace Ch4Ex06
ExpandedBlockStart.gifContractedBlock.gif
{
class Program
ExpandedSubBlockStart.gifContractedSubBlock.gif
{
    
static void Main(string[] args)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
{
        
double realCoord, imagCoord;
         
double realTemp, imagTemp, realTemp2, arg;
        
int iterations;
        
for (imagCoord = 1.2; imagCoord >= -1.2; imagCoord -= 0.05)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            
for (realCoord = -0.6; realCoord <= 1.77; realCoord += 0.03)
ExpandedSubBlockStart.gifContractedSubBlock.gif        
{
            iterations 
= 0;
            realTemp 
= realCoord;
            imagTemp 
= imagCoord;
            arg 
= (realCoord * realCoord) + (imagCoord * imagCoord);
            
while ((arg < 4&& (iterations < 40))
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                realTemp2 
= (realTemp * realTemp)-(imagTemp*imagTemp)-realCoord;
                imagTemp 
= (2 * realTemp * imagTemp) - imagCoord;
                realTemp 
= realTemp2;
                arg 
= (realTemp * realTemp) + (imagTemp * imagTemp);
                iterations 
+= 1;
            }

            
switch (iterations % 4)
ExpandedSubBlockStart.gifContractedSubBlock.gif            
{
                
case 0:
                    Console.Write(
".");
                    
break;
                
case 1:
                    Console.Write(
"o");
                    
break;
                
case 2:
                    Console.Write(
"0");
                    
break;
                
case 3:
                    Console.Write(
"@");
                    
break;
            }

        }

        Console.Write(
"\n");
    }

    Console.ReadKey();
     }

    }

}

 


转载于:https://www.cnblogs.com/soso_ak/archive/2009/04/14/1435894.html