节日的问候分形
我不记得我是在哪里找到这个季节分形的。我无法解释它是如何工作的。所以,如果你对这两个问题有任何看法,请提交评论。
内容
节日的问候
在过去的两年里,我在每年的这个时候都有一个分形。我看到了圣诞树或者冬青装饰。
这个公式
所有这些数字都是通过改变由部分和生成复数$z$的公式中的参数得到的。
$ z = \sum_n{\exp{(\ n^p+ sigma) \ i}} $$
将$n$取为连续整数的向量,利用MATLAB累积求和函数得到复平面上的点向量cumsum计算部分和。上图有8600个点,下图有10万个点。
参数$\phi$的默认值是我的老朋友黄金比例.
$$ \ = \frac{1+\sqrt{5}}{2} $$
在以前的文章中,我已经把$\phi$取为其他有理数和无理数,但今天我坚持这个值。
参数$\sigma$控制角度方向。$ sigma$接近$1/8$使大圣诞树垂直。
为了理解这个东西是如何工作的,我改变了$p$的值,从它通常的值2,取了成千上万个点数。这就产生了今天的照片。不同的$p$值会产生截然不同的结果。
对于实变量$x$,表达式$ exp (x \ i)$是周期性的,位于复平面的单位圆上。我们画的是单位圆上的值的累积和。乍一看,这似乎是一个复值随机数生成器。但这是一个糟糕的生成器,因为我们可以在输出中看到圣诞树。
传统p = 2
p = 2/3
p = 5/4
p = 4
今天的代码
类型greetings_gifs
函数greetings_gif %生成动画季节的问候gif。%生成分形phi =(1+根号(5))/2;s = 1/8;n = 100000;For gifnum = 1:4 switch gifnum case 1, p = 2;情形2,p = 2/3;案例3,p = 1.25;情形4,p = 4;结束w = exp((phi*(0:n).^p+s)*pi*1i);z = cumsum (w); % Find local extrema ks = extrema(z); % Make an animated gif plotit(z,p,ks,gifnum) end % gifnum % ------------------------ function ks = extrema(z) n = length(z)-1; m = n/40; ks = []; for j = 0:m:n-m zj = z(j+1:j+m); w = zj - mean(zj); k = find(abs(w) == max(abs(w))) + j; ks = [ks k]; end end % extrema function plotit(z,p,ks,gifnum) % Make an animated gif shg plot(z,'.') axis square ax = axis; gif_frame(['greetings' int2str(gifnum) '.gif']) clf axis(ax) axis square gif_frame for j = 1:length(ks) k = ks(j); plot(z(1:k),'k.','markersize',0.5) axis(ax) axis square hold on plot(z(ks(1:j)),'g.','markersize',18) plot(z(k),'r.','markersize',24) hold off title(sprintf('p = %4.2f',p)) gif_frame end gif_frame(5) gif_frame('reset') end % plotit end % greetings_gifs
附言
新年快乐。
评论
要留下评论,请点击在这里以登录您的MathWorks帐户或创建一个新的帐户。