- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究 Python 和 LaTeX(最好是矢量图形 TikZ/Asymptote/PGF/Metapost/GeoGebra,按此顺序)通过在终端上运行简单代码来生成此动画的代码。
这是一个 thread on Tex.SE其中讨论了几种绘制 Mandelbrot 集的方法,但我无法像在 Python 中那样容易地修改 LaTeX 中的数学方程。因此,我切换到 Python 并生成尽可能接近矢量图形的高分辨率输出(~2,000 dpi)。我想绘制尽可能一般定义的 multibrots。例如,当 d 为负时。
恩内布罗特
以下代码取自 this Mandelbrot (dimension=2) project在 GitHub 上,我需要通过更改指数来创建此分形项目的更高维度版本,例如 Triabrot(维度 = 4)、Pentabrot(维度 = 6)、Heptabrot(维度 = 8)和 Enneabrot(维度 = 10)在定义 Mandelbrot 集的递归方程中。换句话说,我们为 Mandelbrot 分形定义了一个变量 d,而不是 z_{n+1} = z_n * z_n + z_0,我们定义了一个维度变量 d,然后 d 维 Multibrot 的方程将是 z_{n+1} = z_n ^d + z_0 和每个这样的方程将在其稳定区图中产生 d-1 尖点。要了解有关此主题的更多信息,请观看以下两个 YouTube 视频:Times Tables by Mathologer和 Mandelbrot Set by Numberphile .
需要为每个输出补丁更改轴;发生这种情况是因为分形在复平面中移动,我们需要沿着镜头移动以通过 Python 观察它们。我们还可以使用哪些其他公式?也许axisFix = ((d^2-4)/d)/10?在这个建议的公式中,d^2-4 是因为我希望 Mandelbrot 分形 (d=2) 打印在中心,如果它没有任何位移打印。因此,轴平移的值将为零。这很有趣,因为它对于 d=-2 也是零,这意味着我们还必须尝试查看像 z_{n+1}=z_n^{-2.0} + z_0 这样的方程。目标是找到最平滑的函数 f(d),使得 f(2)=0 并通过以小尺寸 (0.01-0.1) 的增量增加 d 的值并打印 mandelbrot(threshold,密度,维度)函数在这里定义为动画。功能越流畅,演示文稿中幻灯片动画中的幻灯片过渡越流畅。
import numpy as np
import matplotlib.pyplot as plt
# counts the number of iterations until the function diverges or
# returns the iteration threshold that we check until
def countIterationsUntilDivergent(c, threshold, d):
z = complex(0, 0)
for iteration in range(threshold):
# here is the recurrence relation z_{n+1} = z_n^d + z_0, used for
# drawing d-1-dimensional Mandelbrot creatures (growing fractals)
z = z**d + c
if abs(z) > 4:
break
pass
pass
return iteration
# takes the iteration limit before declaring function as convergent and
# takes the density of the atlas
# create atlas, plot mandelbrot set, display set
def mandelbrot(threshold, density, d):
# it is necessary to change the axis for every patch of outputs;
# this happens because the fractals move in the complex plane
# and we need to move along our lens to watch them through Python
## what other formulas could we use? Maybe axisFix = ((d^2-4)/d)/10?
## d^2-4 is there because I want the Mandelbrot fractal (d=2)
## to be right there were it is printed without any replacement
## so the value of the axis translation would be zero. This is
## funny because it is also zero for d=-2 which means that
## we must also be trying to look at equations like
### z_{n+1}=z_n^{-2.0} + z_0
### the goal is to find the smoothest function
### f(d) such that f(2)=0 and make an animation
### by increasing the value of d by increments of small size (0.01-0.1)
### and printing the output of the mandelbrot function defined here
### as an animation. The smoother the function, the smoother
### the transition of slides in the animation
axisFix = d/10
# location and size of the atlas rectangle
realAxis = np.linspace(-2.25+axisFix, 0.75+axisFix, density)
imaginaryAxis = np.linspace(-1.5, 1.5, density)
# realAxis = np.linspace(-0.22, -0.219, 1000)
# imaginaryAxis = np.linspace(-0.70, -0.699, 1000)
realAxisLen = len(realAxis)
imaginaryAxisLen = len(imaginaryAxis)
# 2-D array to represent mandelbrot atlas
atlas = np.empty((realAxisLen, imaginaryAxisLen))
# color each point in the atlas depending on the iteration count
for ix in range(realAxisLen):
for iy in range(imaginaryAxisLen):
cx = realAxis[ix]
cy = imaginaryAxis[iy]
c = complex(cx, cy)
atlas[ix, iy] = countIterationsUntilDivergent(c, threshold, d)
pass
pass
# plot and display mandelbrot set
fig1 = plt.gcf()
plt.axis('off')
# plt.savefig('mandel.eps', format='eps')
plt.imshow(atlas.T, interpolation="nearest")
# plt.show()
output_name = str(d)+'.pdf'
fig1.savefig(output_name, format='pdf', bbox_inches='tight', dpi=2000)
# time to party!!
dimensions = np.arange(10, 100) / 10
# for d in dimensions:
# mandelbrot(120, 1000, d)
# Enneabrot
mandelbrot(120, 1000, 10)
# Heptabrot
mandelbrot(120, 1000, 8)
# Pentabrot
mandelbrot(120, 1000, 6)
# Triabrot
mandelbrot(120, 1000, 4)
# Mandelbrot
mandelbrot(120, 1000, 2)
最佳答案
这是结果,感谢 Aryan Hemmati 通过将灵魂的九型人格与十维 Mandelbrot 分形合并来编辑最终照片。
我需要一个 Python 和 LaTeX(最好是矢量图形 TikZ/Asymptote/PGF/Metapost/GeoGebra,按顺序)通过在终端上运行简单的代码来生成这个动画。我们可以轻松更改参数以制作 Heptabrot (d=8)、Pentabrot (d=6) 甚至 Triabrot (d=4)。我附上了使用 Python 绘制 Enneabrot (d=10) 的代码,并且我修改了 this code由 Danyaal Rangwala 编写,并在递归方程中定义了一个新变量 d(维数)来计算解的精确平衡区,这最终表明 Enneabrot 是我尝试生成这种分形的最后一个数字(从 d=1.0 开始, 0.1 增量直到 d=10.0)。
在这里,我将发布 Mandelbrot 分形 (d=2) 以及我上面定义的分形的输出:Enneabrot (d=10)、Heptabrot (d=8)、Pentabrot (d=6),甚至是 Triabrot ( d=4)。在此 answer 的下一版本中要遵循的其他图表.
曼德布罗 (d=2)
Triabrot (d=4)
五角星 (d=6)
Heptabrot (d=8)
Enneabrot (d=10)
关于python - 使用 Python 将 9 倍尖峰 multibrot 和 enneagram 结合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65615783/
我正在处理一组标记为 160 个组的 173k 点。我想通过合并最接近的(到 9 或 10 个组)来减少组/集群的数量。我搜索过 sklearn 或类似的库,但没有成功。 我猜它只是通过 knn 聚类
我有一个扁平数字列表,这些数字逻辑上以 3 为一组,其中每个三元组是 (number, __ignored, flag[0 or 1]),例如: [7,56,1, 8,0,0, 2,0,0, 6,1,
我正在使用 pipenv 来管理我的包。我想编写一个 python 脚本来调用另一个使用不同虚拟环境(VE)的 python 脚本。 如何运行使用 VE1 的 python 脚本 1 并调用另一个 p
假设我有一个文件 script.py 位于 path = "foo/bar/script.py"。我正在寻找一种在 Python 中通过函数 execute_script() 从我的主要 Python
这听起来像是谜语或笑话,但实际上我还没有找到这个问题的答案。 问题到底是什么? 我想运行 2 个脚本。在第一个脚本中,我调用另一个脚本,但我希望它们继续并行,而不是在两个单独的线程中。主要是我不希望第
我有一个带有 python 2.5.5 的软件。我想发送一个命令,该命令将在 python 2.7.5 中启动一个脚本,然后继续执行该脚本。 我试过用 #!python2.7.5 和http://re
我在 python 命令行(使用 python 2.7)中,并尝试运行 Python 脚本。我的操作系统是 Windows 7。我已将我的目录设置为包含我所有脚本的文件夹,使用: os.chdir("
剧透:部分解决(见最后)。 以下是使用 Python 嵌入的代码示例: #include int main(int argc, char** argv) { Py_SetPythonHome
假设我有以下列表,对应于及时的股票价格: prices = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4, 11] 我想确定以下总体上最
所以我试图在选择某个单选按钮时更改此框架的背景。 我的框架位于一个类中,并且单选按钮的功能位于该类之外。 (这样我就可以在所有其他框架上调用它们。) 问题是每当我选择单选按钮时都会出现以下错误: co
我正在尝试将字符串与 python 中的正则表达式进行比较,如下所示, #!/usr/bin/env python3 import re str1 = "Expecting property name
考虑以下原型(prototype) Boost.Python 模块,该模块从单独的 C++ 头文件中引入类“D”。 /* file: a/b.cpp */ BOOST_PYTHON_MODULE(c)
如何编写一个程序来“识别函数调用的行号?” python 检查模块提供了定位行号的选项,但是, def di(): return inspect.currentframe().f_back.f_l
我已经使用 macports 安装了 Python 2.7,并且由于我的 $PATH 变量,这就是我输入 $ python 时得到的变量。然而,virtualenv 默认使用 Python 2.6,除
我只想问如何加快 python 上的 re.search 速度。 我有一个很长的字符串行,长度为 176861(即带有一些符号的字母数字字符),我使用此函数测试了该行以进行研究: def getExe
list1= [u'%app%%General%%Council%', u'%people%', u'%people%%Regional%%Council%%Mandate%', u'%ppp%%Ge
这个问题在这里已经有了答案: Is it Pythonic to use list comprehensions for just side effects? (7 个答案) 关闭 4 个月前。 告
我想用 Python 将两个列表组合成一个列表,方法如下: a = [1,1,1,2,2,2,3,3,3,3] b= ["Sun", "is", "bright", "June","and" ,"Ju
我正在运行带有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我正在按照说明 here构建包含在我的发行版中的教程 Boost-Pyth
学习 Python,我正在尝试制作一个没有任何第 3 方库的网络抓取工具,这样过程对我来说并没有简化,而且我知道我在做什么。我浏览了一些在线资源,但所有这些都让我对某些事情感到困惑。 html 看起来
我是一名优秀的程序员,十分优秀!