Wolfram
Mathematica
8의 신기능: 빠른 컴파일 함수 기능
◄
이전
|
다음
►
소프트웨어 개발
Julia 집합 연구
C 코드 생성과 연결을 대상으로하여 컴파일 함수 작업을 가속화 할 수 있습니다.
In[1]:=
X
cjc = Compile[{{power, _Integer}, {c, _Complex}}, Module[{imax = 1000, dzmax = 2500., maxpt = 10^5, z, dz, roots, branches, i = 2, res = 0. + 0. I, pt = 0}, branches = Table[Exp[-2. N[Pi] I k/power], {k, 0, power - 1}]; z = Table[0. + 0. I, {imax}]; dz = Table[1. , {imax}]; roots = Table[1, {imax}]; Map[{Re[#], Im[#]} &, NestWhileList[ Function[ z[[i]] = branches[[roots[[i]]]] (z[[i - 1]] - c)^(1/power); dz[[i]] = power Abs[z[[i]]]^(power - 1) dz[[i - 1]]; res = z[[i]]; If[i < imax && dz[[i]] < dzmax, i++; roots[[i]] = 1 (* else *), While[i > 1 && roots[[i]] == power, roots[[i]] = 1; i--]; roots[[i]]++]; res], 0. + 0. I , Function[(i > 1) && (pt++ < maxpt)]]]], CompilationTarget -> "C", RuntimeOptions -> "Speed"]; Graphics[{PointSize[0.0001], Point[cjc[3, -0.040000000000000036` + I * -0.78`]]}, AspectRatio -> 1]
Out[1]=
Manipulate
이용하여 Julia 집합 연구와 흥미로운 점을 발견할 수 있습니다.
In[2]:=
X
Manipulate[ Graphics[{PointSize[0.0001], Point[cjc[p, d[[1]] + I d[[2]]]]}, AspectRatio -> 1], {{p, 3}, Range[10]}, {{d, {-.5, -.05}}, {-2, -2}, {2, 2}}]
Out[2]=