Fandom

Scratchpad Wiki

Alpha 1/ジュリア集合

< Alpha 1

322このwikiの
ページ数
新しいページをつくる
トーク0 シェアする

ジュリア集合

これまた学校で出された課題。

  • ジュリア集合
  • マンデルブロ集合
  • シェルピンスキー・ガスケット

の3つをgnuplotにより描くプログラムのソースと描いた図形を提出するというもの。

そんでもってまずはジュリア集合。

z_{n+1}=az_n(1-x_n)

z_n=x_n+\mathit{i}y_n

を放り込んで実部と虚部を等置してできるのが

x_{n+1}=a(x_n-x_n^2+y_n^2)

y_{n+1}=ay_n(1-2x_n)

んで、n→∞とした際に上の連立漸化式が発散しない初期条件x_0,y_0の集合をジュリア集合と呼ぶ、と書いてある。

そして、その判別にニュートン法を使うとのこと。

x_{n+1}=x_n-\frac{(a-2ax_n-1)\left\{(a-1)x_n-a(x_n^2+y_n^2)\right\}}{(a-2ax_n-1)^2+4a^2y_n^2}

y_{n+1}=n_n-\frac{y_n(a-2ax_n-1)^2-2ay_n\left\{a(x_n-x_n^2+y_n^2)-x_n\right\}}{(a-2ax_n-1)^2+4a^2y_n^2}

上の2式を様々な初期条件からスタートし、その解が有限範囲に収まるか否かをチェックしていけばよい。

#include <stdio.h>

#define A 3.3
#define XS 0
#define XE 1
#define YS -0.25
#define YE 0.25

int main(void)
{
  FILE *fs;
  int count=1;
  double x0,xn,xn1,y0,yn,yn1;

  x0=XS;
  y0=YS;

  fs=fopen("plot.dat","w+");

  while(x0 <= XE)
    {
      y0=YS;
      while(y0 <= YE)
	{
	  xn=x0;
	  yn=y0;
	  count=0;
	  while(1)
	    {
	      xn1=xn-(A-2*A*xn-1)*((A-1)*xn-A*(xn*xn+yn*yn))/\
              ((A-2*A*xn-1)*(A-2*A*xn-1)+4*A*A*yn*yn);
	      yn1=yn-(yn*(A-2*A*xn-1)*(A-2*A*xn-1)+2*A*yn*(A*(xn-xn*xn+yn*yn)-xn))/\
              ((A-2*A*xn-1)*(A-2*A*xn-1)+4*A*A*yn*yn);

	      printf("x0:%f xn:%lf xn1:%lf , y0:%lf yn:%lf yn1:%lf\n",x0,xn,xn1,y0,yn,yn1);

	      if((xn1-xn > -0.001 && xn1-xn < 0.001) && (yn1-yn > -0.001 && yn1-yn < 0.001))
		{
		  fprintf(fs,"%lf %lf\n",x0,y0);

		  break;
		}
	      else if(count>=10000)
		{
		  break;
		}

	      count++;

	      xn=xn1;
	      yn=yn1;
	    }
	  y0+=0.01;
	}
      x0+=0.01;
    }
  fclose(fs);

  return 0;
}

それでまあ、これを実行してgnuplotに放り投げても見事な升目になってしまうのですね。

なんか時間がなくなったので中途保存。また後日追記します。


2008/07/11 15:08

プロフィール
  • 名前:Tommy6
  • ニックネーム:( ・ω・)
  • 性別:男
  • 生年月日:
  • 出身地:北
  • 血液型:B
2008年07月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
最近の記事

Extension:DynamicPageList (DPL), version 2.3.0 : Error: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby or their 'not' variants

アーカイブ

Extension:DynamicPageList (DPL), version 2.3.0 : Error: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby or their 'not' variants

YouTube






編集

まだ今月分のポータルが作成されていません!

作成

まだ本日分のポータルが作成されていません!

作成

日記を書く

注意:トップページからのみ日記を作成してください。他のページから作ると記事空間がおかしくなります。

広告ブロッカーが検出されました。


広告収入で運営されている無料サイトWikiaでは、このたび広告ブロッカーをご利用の方向けの変更が加わりました。

広告ブロッカーが改変されている場合、Wikiaにアクセスしていただくことができなくなっています。カスタム広告ブロッカーを解除してご利用ください。

Fandomでも見てみる

おまかせWiki