先上图

用python画人物代码 如何用python画一个人_for循环

好看的曼德勃罗集错了错了是这个

用python画人物代码 如何用python画一个人_如何用python画人像_02

特别好看的曼德勃罗集

当然你需要下载Python(https://www.python.org)

和Visual Studio 2019(https://visualstudio.microsoft.com/zh-hans/downloads/)

用python画人物代码 如何用python画一个人_用python画人物代码_03

记得在Visual Studio中加入Python的环境

用python画人物代码 如何用python画一个人_for循环_04

让我们开始吧

用python画人物代码 如何用python画一个人_for循环_05

一、什么是曼德勃罗集

这里就不对曼德勃罗集的历史、发现之类的内容进行说明了,想知道的朋友自行搜索。

我们先构造一个数列:

用python画人物代码 如何用python画一个人_如何用python画人像_06

比如我们取c=1

于是

z₁=z₀²+c=1

z₂=z₁²+c=2

z₃=z₂²+c=5

z₄=z₃²+c=26

很明显,这个数列最后会变成无穷大(blows up to infinity英文可能跟好理解)

注:复平面上到原点距离大于2的点(即复数c)套入数列后,数列最后一定会变成无穷大

又比如我们取c=i(i²=-1)

于是

z₁=z₀²+c=i

z₂=z₁²+c=-1+i

z₃=z₂²+c=-i

z₄=z₃²+c=-1+i

很明显,这个数列最后不会变成无穷大,而是再-1+i与-i之间反复横跳

于是我们就能把复平面上的点(即复数c)分成两类套入数列后,数列最后会变成无穷大

套入数列后,数列最后不会变成无穷大

如果满足第二种,我们就把这个点涂成黑色

注:彩色图片中的颜色是根据数列变成无穷大的速度涂色的

用python画人物代码 如何用python画一个人_for循环_05

二、用Python实现

大致思路是这样的:用for循环计算数列,看看最后的结果到原点的距离是否大于2

用if判断:如果大于2,在这个位置打上一个”空格”;如果小于2,在这个位置打上一个“字符”

用for循环检索x∈[-2,2],y∈[-2,2]的点,重复1、2步

首先,很容易写出计算数列的代码:

为了减少计算量,当z离原点的距离大于2时,停止这个循环

加入打字的内容,

我的思路是,将每一次判断大于2还是小于2的结果加入一个变量text中

最后,我们用两个for循环套在外面,让它可以检索x∈[-2,2],y∈[-2,2]的点,注意,我们要先沿实轴正方向检索,再演虚轴“负方向”检索。

但这只能输出这样的图:

用python画人物代码 如何用python画一个人_如何用python画人像_08

不行,我们要更大的。问题出在哪里呢?

注意,range函数只能让i从一个整数,跳到另一个整数。为了使检索的精度变高,我们可以在写for循环时,给i和j的下界与上界都乘一个整数p,在最后用到变量的时候,除以p,增加它的检索精度。

用python画人物代码 如何用python画一个人_for循环_09

按下按钮,静静等待

用python画人物代码 如何用python画一个人_Visual_10

tada~

本人Python学的也不是很好,希望有大佬能对代码修改或优化

图片来源:

[1]彩色曼德勃罗集:http://f8r.cn/uvxbtq