[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

求批处理版Mandelbrot集合

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

近似算法, 以下是迭代上限 MaxRepeats 设为 30 次得到的图像
  1.                                                                       # #
  2.                                                                     #
  3.                                                                     #
  4.                                                                     #
  5.                                                                    ###
  6.                                                                ## #####
  7.                                                                 ########
  8.                                                                 #########
  9.                                                                 #########
  10.                                                                 #########
  11.                                                                 ########
  12.                                                   #       #      #######
  13.                                                     #     ## ############## ###      #
  14.                                                     ###   ####################    #
  15.                                                     #### ##################### #  # ##
  16.                                                    ##################################
  17.                                                     #################################
  18.                                                      ################################
  19.                                                 #  # ################################
  20.                                                #  ###################################
  21.                                                 ######################################
  22.                                                 #####################################
  23.                           #                     #####################################
  24.                                   #          ###########################################
  25.                                    #            ########################################
  26.                                  ###          ########################################
  27.                              ## #######       #########################################
  28.                              ############     #########################################
  29.                             #############     ##########################################
  30.                            ################# ##########################################
  31.                            ################# ##########################################
  32.                           ##############################################################
  33.                        #   ###########################################################
  34.                       ################################################################
  35.                       ###############################################################
  36.         ##        ##################################################################
  37. ##################################################################################
  38.         ##        ##################################################################
  39.                       ###############################################################
  40.                       ################################################################
  41.                        #   ###########################################################
  42.                           ##############################################################
  43.                            ################# ##########################################
  44.                            ################# ##########################################
  45.                             #############     ##########################################
  46.                              ############     #########################################
  47.                              ## #######       #########################################
  48.                                  ###          ########################################
  49.                                    #            ########################################
  50.                                   #          ###########################################
  51.                           #                     #####################################
  52.                                                 #####################################
  53.                                                 ######################################
  54.                                                #  ###################################
  55.                                                 #  # ################################
  56.                                                      ################################
  57.                                                     #################################
  58.                                                    ##################################
  59.                                                     #### ##################### #  # ##
  60.                                                     ###   ####################    #
  61.                                                     #     ## ############## ###      #
  62.                                                   #       #      #######
  63.                                                                 ########
  64.                                                                 #########
  65.                                                                 #########
  66.                                                                 #########
  67.                                                                 ########
  68.                                                                ## #####
  69.                                                                    ###
  70.                                                                     #
  71.                                                                     #
  72.                                                                     #
复制代码
如果将 MaxRepeats 的值设小一些, 耗时会减短, 但结果的近似程度相应会更差
  1. @echo off & setlocal enabledelayedexpansion & color f0 & chcp 437 & title Mandelbrot set
  2. rem 将控制台字体设置为 点阵 8X8 查看效果比较好
  3. set "DOT=#"
  4. set /a "MaxRepeats = 30"
  5. set /a "ratio=36, EscapeSQ=ratio*ratio*2*2+1, wid=ratio*3, Cols=wid, lines=ratio*2+1, iMax=wid*(lines-1)"
  6. set /a "XC = Cols*2/3, YC = lines/2"
  7. set /a "xl=ratio*-2, xh=ratio-1, yl=-ratio+1, yh=ratio"
  8. mode !Cols!, !lines!
  9. for /l %%i in (1 1 !iMax!) do set "scr= !scr!"
  10. for /l %%a in (!xl! 1 !xh!) do for /l %%b in (!yl! 1 !yh!) do call :Mandelbrot %%a %%b
  11. cls &(<nul set /p=!scr:~0,-1!)
  12. >nul pause
  13. exit
  14. :Mandelbrot a b  rem c = a + bi
  15. title %1,%2
  16. set /a "repeats=za=zb=0" & rem z = za + zbi
  17. :loop
  18.     REM z = z^2 + c
  19.     set /a "ta = za, za = (za*za - zb*zb) / ratio + %1,  zb = 2 * ta * zb / ratio + %2"
  20.     set /a "repeats += 1"
  21.     set /a "SQ = za*za + zb*zb, t = SQ - EscapeSQ & repeats - MaxRepeats"
  22. if !t! lss 0 goto :loop
  23. if !repeats! geq %MaxRepeats% (
  24.     set /a "x= XC + %1, y= YC - %2"
  25.     set /a "ind=x+y*wid+1, lenL=ind-1, lenR=iMax-ind"
  26.     for /f "tokens=1,2,3" %%a in ("!lenL! !ind! !lenR!") do (set scr=!scr:~0,%%a!%DOT%!scr:~%%b,%%c!)
  27.     cls &(<nul set /p=!scr:~0,-1!)
  28. )
  29. exit /b
复制代码
1

评分人数

    • CrLf:PB + 16 技术 + 1

TOP

TOP

返回列表