335|2

1万

帖子

13

资源

版主

【RPi PICO】计算Mandelbrot [复制链接]

本帖最后由 dcexpert 于 2021-2-16 21:39 编辑

将micropython源码中的examples/mandel.py例子修改了一下,用于测试计算性能

 

from time import ticks_ms, ticks_diff

def run(func, param = None):
    t1 = ticks_ms()
    if param == None:
        func()
    else:
        func(param)
    t2 = ticks_ms()
    print('calc time:', ticks_diff(t2, t1), 'ms')

def mandelbrot():
    # returns True if c, complex, is in the Mandelbrot set
    # @micropython.native
    def in_set(c):
        z = 0
        for i in range(40):
            z = z * z + c
            if abs(z) > 4:
                return False
        return True

    for v in range(31):
        for u in range(81):
            if in_set((u / 30 - 2) + (v / 15 - 1) * 1j):
                print(' ', end='')
            else:
                print('#', end='')
        print()

run(mandelbrot)

 

 

运行结果

 

############################################################ ####################
#################################################################################
########################################################  #######################
#####################################################       #####################
######################################################      #####################
################################################### ###    ### # ################
############################################   ##                ################
############################################                           ##########
###########################################                          ############
##########################################                             ##########
########################################                                 ########
########################## ### ########                                 #########
##########################          ###                                 #########
########################             #                                   ########
#######################                                                ##########
                                                                    #############
#######################                                                ##########
########################             #                                   ########
##########################          ###                                 #########
########################## ### ########                                 #########
########################################                                 ########
##########################################                             ##########
###########################################                          ############
############################################                           ##########
############################################   ##                ################
################################################### ###    ### # ################
######################################################      #####################
#####################################################       #####################
########################################################  #######################
#################################################################################
############################################################ ####################

 

赞赏

1

查看全部赞赏


回复

1万

帖子

13

资源

版主

circuitpython版本程序

 

from time import monotonic

def run(func, param = None):
    t1 = monotonic()
    if param == None:
        func()
    else:
        func(param)
    t2 = monotonic()
    print('calc time:', round((t2 - t1)*1000), 'ms')

def mandelbrot():
    # returns True if c, complex, is in the Mandelbrot set
    # @micropython.native
    def in_set(c):
        z = 0
        for i in range(40):
            z = z * z + c
            if abs(z) > 4:
                return False
        return True

    for v in range(31):
        for u in range(81):
            if in_set((u / 30 - 2) + (v / 15 - 1) * 1j):
                print(' ', end='')
            else:
                print('>', end='')
        print()

run(mandelbrot)

 


回复

785

帖子

2

资源

版主

感谢分享!!!


回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    关闭
    站长推荐上一条 1/6 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表