返回列表 回复 发帖

嵌套子循环

好久没看过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
}
New.jpg
图形是很好看,但涉及循环嵌套。几何画板恐难以完成。
个人感觉,此图用画板是能够实现的,只是目前还没找到方法而已。此分形我搞了几天,失败告终,大家有时间可研究研究。现在问题归结到这样的问题,子循环按迭代次数8进行,当随时满足某条件时,中止迭代,即刻退出程序,用画板如何实现呢?
搞得头昏脑大,退而求其次,研究其它的嵌套子循环(原来一直不敢用画板作之,因是新生事物,原来没整成功过),倒是颇多收获。我在作时,没完全按程序进行,用画板达到程序运行时的同样效果就行。GSP文件: DubeauPhi0.gsp (25.23 KB)
未命名.jpg
望能起到抛砖引玉的作用。一楼的文件,可作课题研究,有研究出来的朋友,请提供源文件,让我好学习学习。
以前搞不出来的,现在用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
}
源文件整理好了,今发在此。
Logistic.gsp (13.42 KB)
未命名(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
}
迭代时的表格在造此类分形时,很管用,可查看表格,知迭代是否正确。
附上整理好的源文件:
Lacunary 1 Mandel.gsp (18.96 KB)
4# 柳烟


说得没错,应该可以用几何画板完成,只是要浪费许多迭代过程,因为几何画板不能中间跳出。从迭代表看有一些眉目了,只是有此参数还没找到较好的式子来表示。
一楼的这个分形很奇怪,对Z的着色也会扫出小M集来:

New.jpg (50.95 KB)

New.jpg

返回列表