Board logo

标题: 嵌套子循环 [打印本页]

作者: 柳烟    时间: 2011-11-26 08:30     标题: 嵌套子循环

好久没看过UF中的范例了,昨晚打开后,看到一个以前似没见过的新图,试作之,弄不出正品。程序中间有一段循环的子程序,我先将这子程序进行迭代,搞出终点后,再进行下一步的迭代,扫出的图十万八千。大家拾柴火焰高,我将代码与图帖上,没事时大家作作。此分形位于pdf.ufm中。代码不算复杂。
pgd_Mandelnewton {
; Iterates Newton's method for roots of (((c^2+c)^2+c)^2+c)^2+c... = 0.
; The number of nested Mandelbrot iterations is determined via parameter.
; The higher the number the "busier" the fractal, and the more the
; outlines of the M-set are revealed. The fractals themselves are
; Julia sets with 2^n basins of attraction.
; All points bail out. Use decomp, iterations, or similar color methods.
; Orbit traps might be interesting too.
init:
  z = #pixel
  float b = 1/@bailout
  float b2 = b*b
  complex zz = z
loop:
  complex oz = z
  complex zd = 1
  int i = 1
  WHILE (i < @numi)
    i = i + 1
    zd = 2*zd*z + 1
    z = sqr(z) + oz
    IF (|zd| > @bailout)
      i = @numi
    ENDIF
  ENDWHILE
  ; z is now m(oz) and zd is m'(oz), with m(x) = (x^2+x)^2+x...
  z = oz - (z/zd) ; Apply Newton's method once
  IF (@zeroinside)
    IF (|z| < b2)
      z = zz ; Trap z
    ENDIF
  ENDIF
bailout:
  |z - oz| > b
default:
  title = "Mandelnewton Julia sets"
  periodicity = 0
  maxiter = 1000
  center = (-0.5,0)
  param numi
    caption = "Order"
    default = 6
    min = 1
  endparam
  param zeroinside
    caption = "A(0) inside"
    default = false
  endparam
  param bailout
    caption = "Bailout"
    default = 100000
    min = 0
  endparam
}
作者: 柳烟    时间: 2011-11-26 08:39

New.jpg

图片附件: New.jpg (2014-7-9 12:06, 37.09 KB) / 下载次数 1409
http://inrm3d.cn/attachment.php?aid=15360&k=b9b2241469dc0f26b4c391534074859b&t=1732395707&sid=1FgI9d


作者: 榕坚    时间: 2011-11-26 10:02

图形是很好看,但涉及循环嵌套。几何画板恐难以完成。
作者: 柳烟    时间: 2011-11-30 19:43

个人感觉,此图用画板是能够实现的,只是目前还没找到方法而已。此分形我搞了几天,失败告终,大家有时间可研究研究。现在问题归结到这样的问题,子循环按迭代次数8进行,当随时满足某条件时,中止迭代,即刻退出程序,用画板如何实现呢?
搞得头昏脑大,退而求其次,研究其它的嵌套子循环(原来一直不敢用画板作之,因是新生事物,原来没整成功过),倒是颇多收获。我在作时,没完全按程序进行,用画板达到程序运行时的同样效果就行。GSP文件: DubeauPhi0.gsp (25.23 KB)
未命名.jpg
望能起到抛砖引玉的作用。一楼的文件,可作课题研究,有研究出来的朋友,请提供源文件,让我好学习学习。

图片附件: 未命名.jpg (2011-12-4 19:37, 37.13 KB) / 下载次数 1431
http://inrm3d.cn/attachment.php?aid=15435&k=3eeed9f07a038d7c9247b046edd04130&t=1732395707&sid=1FgI9d



附件: DubeauPhi0.gsp (2011-11-30 19:50, 25.23 KB) / 下载次数 3188
http://inrm3d.cn/attachment.php?aid=15436&k=f15c6a161bc697a0a4fdbeb6792acad7&t=1732395707&sid=1FgI9d
作者: 柳烟    时间: 2011-12-3 18:13

以前搞不出来的,现在用GSP搞出了。扫描版的著名Logistic映射。
未命名(1).jpg
UF中代码如下:
lyap {
; By Samuel Monnier, 1999
init:
  z = #pixel
  r = real(z)
  x = .2
  i = 0
loop:
  i = i + 1
  x = r * x * (1 - x)
bailout:
  i < 200 || |x - imag(z)| > @resol
default:
  title = "Logistic"
  center = (2.5, 0.5)
  magn = .8
  maxiter = 250
  periodicity = 0
  method = multipass
  param resol
  caption = "Resolution"
  default = .0001
  endparam
}

图片附件: 未命名(1).jpg (2011-12-4 19:37, 14.24 KB) / 下载次数 1481
http://inrm3d.cn/attachment.php?aid=15482&k=d61e9941aeae538d345026c178c11c35&t=1732395707&sid=1FgI9d


作者: 柳烟    时间: 2011-12-3 19:44

源文件整理好了,今发在此。
Logistic.gsp (13.42 KB)

附件: Logistic.gsp (2011-12-3 19:44, 13.42 KB) / 下载次数 3441
http://inrm3d.cn/attachment.php?aid=15483&k=a05198c24916353a699dc77b98ca5d36&t=1732395707&sid=1FgI9d
作者: 柳烟    时间: 2011-12-4 18:18

未命名(2).jpg
这个嵌套子迭代也有趣得紧
代码:
Lacunary1_M {
; iteration of f(z) = c + z + z^2 + z^4 + ... + z^(2^n)

init:
    if (@degree==1)
        z = -0.5
    elseif (@degree==2)
        z = -0.38545849852963
    elseif (@degree==3)
        z = -0.3828986970212
    else
        z = -0.38289643077689
    endif
loop:
    complex summand = z
    int k=0
    z = z+#pixel
    while (k<@degree)
        summand = sqr(summand)
        z = z + summand
        k = k+1
    endwhile

bailout:
    |z| < @bailout

default:
  title = "Lacunary 1 Mandel"
  int param degree
    caption="degree n"
    hint="If your coloring algorithm requires a 'power' or 'exponent', set it to 2^n. \
        If you use large values here, you may have to set a small bailout or increase the precision."
    default=2
    min=1
  endparam
  float param bailout
    caption = "Bailout value"
    hint = "Iteration stops when z becomes larger than this bailout."
    min=0
    default=1e4
  endparam
switch:
    type="Lacunary1"
    c=#pixel
    degree=degree
    bailout=bailout
}

图片附件: 未命名(2).jpg (2011-12-4 19:38, 17.21 KB) / 下载次数 1402
http://inrm3d.cn/attachment.php?aid=15499&k=772d840964a6667f448c0fada7b64d6d&t=1732395707&sid=1FgI9d


作者: 柳烟    时间: 2011-12-4 19:51

迭代时的表格在造此类分形时,很管用,可查看表格,知迭代是否正确。
附上整理好的源文件:
Lacunary 1 Mandel.gsp (18.96 KB)

附件: Lacunary 1 Mandel.gsp (2011-12-4 19:51, 18.96 KB) / 下载次数 3124
http://inrm3d.cn/attachment.php?aid=15501&k=2a75e7a73a4788477f2d3c339829521e&t=1732395707&sid=1FgI9d
作者: 榕坚    时间: 2011-12-5 21:33

4# 柳烟


说得没错,应该可以用几何画板完成,只是要浪费许多迭代过程,因为几何画板不能中间跳出。从迭代表看有一些眉目了,只是有此参数还没找到较好的式子来表示。
作者: 榕坚    时间: 2011-12-6 10:19

一楼的这个分形很奇怪,对Z的着色也会扫出小M集来:

图片附件: New.jpg (2014-7-9 12:06, 50.95 KB) / 下载次数 1518
http://inrm3d.cn/attachment.php?aid=15538&k=1449f8fa4f840e46576d6e373dab4264&t=1732395707&sid=1FgI9d


作者: 柳烟    时间: 2011-12-6 14:13

10# 榕坚
UF中,改变此分形的参数,可看到有趣的变化。
作者: 柳烟    时间: 2014-4-29 22:33

New.jpg
扫一局部:
New1.jpg

图片附件: New.jpg (2014-7-9 12:07, 33.07 KB) / 下载次数 838
http://inrm3d.cn/attachment.php?aid=21478&k=1f88768af7677eb27346ecd38ac48e4d&t=1732395707&sid=1FgI9d



图片附件: New1.jpg (2014-7-9 12:07, 21.88 KB) / 下载次数 803
http://inrm3d.cn/attachment.php?aid=21479&k=f73920c4d5483466552becc506a6acc8&t=1732395707&sid=1FgI9d


作者: 柳烟    时间: 2014-4-30 20:42

Mandelnewton Julia sets20140430.gsp (18.03 KB)
近来学习了各位老师无私奉献的文件,感觉到以前的这个分形可作了,试了又试,作成了,谢谢。

附件: Mandelnewton Julia sets20140430.gsp (2014-4-30 20:42, 18.03 KB) / 下载次数 2338
http://inrm3d.cn/attachment.php?aid=21487&k=207c13c8f33ac9c818e95423ef2a2bf8&t=1732395707&sid=1FgI9d




欢迎光临 inRm3D: 画板论坛 (http://inrm3d.cn/) Powered by Discuz! 7.0.0