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.gif ExpandedBlockStart.gif Code
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值