返回列表 发帖

[数值计算] 求批处理版Mandelbrot集合

求批处理版Mandelbrot集合

本帖最后由 aa77dd@163.com 于 2015-7-14 15:42 编辑

近似算法, 以下是迭代上限 MaxRepeats 设为 30 次得到的图像
                                                                      # #
                                                                    #
                                                                    #
                                                                    #
                                                                   ###
                                                               ## #####
                                                                ########
                                                                #########
                                                                #########
                                                                #########
                                                                ########
                                                  #       #      #######
                                                    #     ## ############## ###      #
                                                    ###   ####################    #
                                                    #### ##################### #  # ##
                                                   ##################################
                                                    #################################
                                                     ################################
                                                #  # ################################
                                               #  ###################################
                                                ######################################
                                                #####################################
                          #                     #####################################
                                  #          ###########################################
                                   #            ########################################
                                 ###          ########################################
                             ## #######       #########################################
                             ############     #########################################
                            #############     ##########################################
                           ################# ##########################################
                           ################# ##########################################
                          ##############################################################
                       #   ###########################################################
                      ################################################################
                      ###############################################################
        ##        ##################################################################
##################################################################################
        ##        ##################################################################
                      ###############################################################
                      ################################################################
                       #   ###########################################################
                          ##############################################################
                           ################# ##########################################
                           ################# ##########################################
                            #############     ##########################################
                             ############     #########################################
                             ## #######       #########################################
                                 ###          ########################################
                                   #            ########################################
                                  #          ###########################################
                          #                     #####################################
                                                #####################################
                                                ######################################
                                               #  ###################################
                                                #  # ################################
                                                     ################################
                                                    #################################
                                                   ##################################
                                                    #### ##################### #  # ##
                                                    ###   ####################    #
                                                    #     ## ############## ###      #
                                                  #       #      #######
                                                                ########
                                                                #########
                                                                #########
                                                                #########
                                                                ########
                                                               ## #####
                                                                   ###
                                                                    #
                                                                    #
                                                                    #COPY
如果将 MaxRepeats 的值设小一些, 耗时会减短, 但结果的近似程度相应会更差
@echo off & setlocal enabledelayedexpansion & color f0 & chcp 437 & title Mandelbrot set
rem 将控制台字体设置为 点阵 8X8 查看效果比较好
set "DOT=#"
set /a "MaxRepeats = 30"
set /a "ratio=36, EscapeSQ=ratio*ratio*2*2+1, wid=ratio*3, Cols=wid, lines=ratio*2+1, iMax=wid*(lines-1)"
set /a "XC = Cols*2/3, YC = lines/2"
set /a "xl=ratio*-2, xh=ratio-1, yl=-ratio+1, yh=ratio"
mode !Cols!, !lines!
for /l %%i in (1 1 !iMax!) do set "scr= !scr!"
for /l %%a in (!xl! 1 !xh!) do for /l %%b in (!yl! 1 !yh!) do call :Mandelbrot %%a %%b
cls &(<nul set /p=!scr:~0,-1!)
>nul pause
exit
:Mandelbrot a b  rem c = a + bi
title %1,%2
set /a "repeats=za=zb=0" & rem z = za + zbi
:loop
    REM z = z^2 + c
    set /a "ta = za, za = (za*za - zb*zb) / ratio + %1,  zb = 2 * ta * zb / ratio + %2"
    set /a "repeats += 1"
    set /a "SQ = za*za + zb*zb, t = SQ - EscapeSQ & repeats - MaxRepeats"
if !t! lss 0 goto :loop
if !repeats! geq %MaxRepeats% (
    set /a "x= XC + %1, y= YC - %2"
    set /a "ind=x+y*wid+1, lenL=ind-1, lenR=iMax-ind"
    for /f "tokens=1,2,3" %%a in ("!lenL! !ind! !lenR!") do (set scr=!scr:~0,%%a!%DOT%!scr:~%%b,%%c!)
    cls &(<nul set /p=!scr:~0,-1!)
)
exit /bCOPY
1

评分人数

    • CrLf:PB + 16 技术 + 1

TOP

TOP

返回列表