克利夫角:克利夫莫尔的数学和计算

科学计算,数学和更多

节日的问候分形

我不记得我是在哪里找到这个季节分形的。我无法解释它是如何工作的。所以,如果你对这两个问题有任何看法,请提交评论。

内容

节日的问候

在过去的两年里,我在每年的这个时候都有一个分形。我看到了圣诞树或者冬青装饰。

这个公式

所有这些数字都是通过改变由部分和生成复数$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

附言

新年快乐。




MATLAB®R2016a发布

|

评论

要留下评论,请点击在这里以登录您的MathWorks帐户或创建一个新的帐户。