ニュートン写像はニュートン=ラフソン法によって、ある初期値から適当な値へ収束するまでの回数でその関数を特徴づけるものです。
フラクタルと似ている考えであることを明記しておきます。
ニュートン写像
\(
\displaystyle N_f(z)=z-\frac{f(z)}{f'(z)}
\)
の繰り返しによって適当な初期値からスタートし、収束させていきます。このページでは画像が主です。説明の方はリーマンのゼータ関数の複素力学系をご覧ください。
基本はこれだけです。簡単な複素関数でも相当複雑になります。
早速適当な関数を用意して、ニュートン写像を見ていきましょう。
[adsense1]
まずは基本的な多項式を見ます。
\(
f(z)=z^2-1
\)
\(
\displaystyle f(z)=z^5-1, z^6-1, z^7-1, z^10-1
\)
少し複雑な関数の場合
\(
\displaystyle f(z)=\ln z, e^z-1
\)
\(
\displaystyle f(z)=e^{1/z}-0.01
\)
\(
\displaystyle f(z)=ze^{z}\ln z-0.01
\)
\(
\displaystyle f(z)=z^5e^z-0.1
\)
\(
\displaystyle f(z)=z^4e^z\ln z-0.1
\)
\(
\displaystyle f(z)=sin(z)/z
\)
\(
\displaystyle f(z)=z^2 e^{-z^2}-1
\)
\(
\displaystyle f(z)=ln(z) e^{-z^2}-1
\)
複素関数\(f(z)\)が多くの根を持つとき、非常に複雑で綺麗な画像が得られるようです。
恐らく遠く離れたところからたまたま根のあたりに到達することが多くなるからでしょう。
[adsense2]
fortran90によるプログラム
fortran90によるプログラムを置いておきます。入力するべき場所は!=====の間と、関数fと導関数dfです。
implicit none
integer,parameter::kmax=49
double precision,parameter::eps=1d-8
integer::i,j,k,Nx,Ny
double precision::xa,xb,ya,yb,x,y,hx,hy
complex(kind(0d0))::f,df,z,z1
external::f,df
!==================
xa=-5d0; xb=5d0
Nx=201
ya=-5d0; yb=5d0
Ny=201
!==================
hx=(xb-xa)/dble(Nx-1)
hy=(yb-ya)/dble(Ny-1)
do i=0,Nx-1
x=xa+i*hx
do j=0,Ny-1
y=ya+j*hy
z=dcmplx(x,y)
do k=0,kmax
z1=z-f(z)/df(z)
if(abs((z-z1)/z).le.eps)exit
z=z1
enddo
write(10,'(2e18.8e3,i5)')x,y,k
enddo
write(10,*)
if(mod(i,100).eq.0)write(6,'(A,i6,A,i6)')" ",i," / ",Nx
enddo
stop
end program main
function f(z)
implicit none
complex(kind(0d0))::f,z
f=z**5*exp(z)-0.1d0
return
end function f
function df(z)
implicit none
complex(kind(0d0))::df,z
df=5*z**4*exp(z)+z**5*exp(z)
return
end function df