”しばっち”さんに感謝!

 投稿者:yoshipyuta  投稿日:2017年12月23日(土)10時25分54秒
  超有名な”しばっち”さんにNewton'sフラクタルの図示のプルグラムを作成していただきありがとうございます。KidsにMathを教えている私と山奥の老先生はプログラムに不慣れなので理解するのに相当な年月がかかるでしょう。

Kidsは朝から”しばっち”さんのプログラムでz^3-1の解の流域を探っていました。
下記の図

3方向から現れる流域の複雑な模様に驚かされます。というか理解できないわがKidsであります。上村文ちゃんのような一般的な図、即ち青い流域はZ1=1,緑の流域はZ2=(-1+√3i)/2、赤い流域はZ3=(-1-√3i)/2に収束する様にできますか?是非検討ください。

また外部関数が多く書かれていますので、もっと複雑な関数tan(z)の流域なども探査できるのかと期待しています。
 

Re: ”しばっち”さんに感謝!

 投稿者:しばっち  投稿日:2017年12月23日(土)11時26分23秒
  > No.4425[元記事へ]

yoshipyutaさんへのお返事です。

> 3方向から現れる流域の複雑な模様に驚かされます。というか理解できないわがKidsであります。上村文ちゃんのような一般的な図、即ち青い流域はZ1=1,緑の流域はZ2=(-1+√3i)/2、赤い流域はZ3=(-1-√3i)/2に収束する様にできますか?是非検討ください。

OPTION ARITHMETIC COMPLEX
LET SIZE=800
CALL GINIT(SIZE,SIZE)
LET LEFT=-1.5
LET RIGHT=1.5
LET BOTTOM=1.5
LET TOP=-1.5
LET EPS=1E-5
LET KS=50
LET Z1=COMPLEX(1,0)
LET Z2=COMPLEX(-1/2,SQR(3)/2)
LET Z3=COMPLEX(-1/2,-SQR(3)/2)
DO
   CLEAR
   SET WINDOW LEFT,RIGHT,BOTTOM,TOP
   LET DX=(RIGHT-LEFT)/SIZE
   LET DY=(TOP-BOTTOM)/SIZE
   FOR ZR=LEFT TO RIGHT STEP DX
      FOR ZI=BOTTOM TO TOP STEP DY
         LET XX=COMPLEX(ZR,ZI)
         FOR K=1 TO KS
            LET X=XX
            WHEN EXCEPTION IN
               LET XX=X-FUNC(X)/DIFF7(X)
            USE
               EXIT FOR
            END WHEN
            IF ABS(XX-Z1)<EPS THEN
               CALL PSET(ZR,ZI,1)
               EXIT FOR
            END IF
            IF ABS(XX-Z2)<EPS THEN
               CALL PSET(ZR,ZI,4)
               EXIT FOR
            END IF
            IF ABS(XX-Z3)<EPS THEN
               CALL PSET(ZR,ZI,2)
               EXIT FOR
            END IF
         NEXT K
      NEXT ZI
   NEXT ZR
   PAUSE "拡大する範囲を指定してください"
   CALL GETSQUARE(LEFT,TOP,RIGHT,BOTTOM)
   IF LEFT=RIGHT  THEN EXIT DO
LOOP
END

EXTERNAL FUNCTION FUNC(X)
OPTION ARITHMETIC COMPLEX
LET FUNC=X^3-1
END FUNCTION

EXTERNAL SUB PSET(X,Y,C)
OPTION ARITHMETIC COMPLEX
SET POINT COLOR C
PLOT POINTS:X,Y
END SUB

EXTERNAL SUB GINIT(XSIZE,YSIZE)
OPTION ARITHMETIC COMPLEX
SET BITMAP SIZE XSIZE,YSIZE
!'SET WINDOW  0 , XSIZE-1 , YSIZE-1, 0
SET POINT STYLE 1
SET COLOR MIX(0) 0,0,0
SET COLOR MIX(1) 0,0,1
SET COLOR MIX(2) 1,0,0
SET COLOR MIX(3) 1,0,1
SET COLOR MIX(4) 0,1,0
SET COLOR MIX(5) 0,1,1
SET COLOR MIX(6) 1,1,0
SET COLOR MIX(7) 1,1,1
CLEAR
END SUB

EXTERNAL SUB GETSQUARE(L,T,R,B)
OPTION ARITHMETIC COMPLEX
ASK LINE STYLE LSTYLE
SET DRAW MODE NOTXOR
SET LINE STYLE 2
DO
   MOUSE POLL L,T,I,J
LOOP WHILE I=0
LET L0=L
LET T0=T
LET R0=L0
LET B0=T0
PLOT LINES:L0,T0;L0,B0;R0,B0;R0,T0;L0,T0
DO WHILE I=1
   MOUSE POLL R,B,I,J
   LET W=R-L
   LET H=T-B
   IF ABS(H)<ABS(W) THEN
      LET B=T-SGN(H)*ABS(W)
   ELSE
      LET R=L+SGN(W)*ABS(H)
   END IF
   IF L0<>L OR R0<>R OR B0<>B OR T0<>T THEN
      PLOT LINES:L0,T0;L0,B0;R0,B0;R0,T0;L0,T0
      PLOT LINES:L,T;L,B;R,B;R,T;L,T
      LET L0=L
      LET T0=T
      LET R0=R
      LET B0=B
   END IF
LOOP
WAIT DELAY 1
PLOT LINES:L,T;L,B;R,B;R,T;L,T
SET DRAW MODE OVERWRITE
SET LINE STYLE LSTYLE
IF L>R THEN SWAP L,R
IF B>T THEN SWAP B,T
END SUB

EXTERNAL FUNCTION DIFF7(X)
OPTION ARITHMETIC COMPLEX
LET H=1/256
LET DIFF7=(-FUNC(X-3*H)+9*FUNC(X-2*H)-45*FUNC(X-H)+45*FUNC(X+H)-9*FUNC(X+2*H)+FUNC(X+3*H))/(60*H)
END FUNCTION
 

戻る