Naloga:
Napišite program, ki v kompleksni ravnini poišče h kateri ničli konvergira tangentna metoda v odvisnosti od zacetne točke za funkcijo f(x)=x**3-1 na kvadratu sranice 8 okoli izhodišča kompleksne ravnine.
program fractal implicit none complex(8) :: x,f,df,x1 real(8)::h integer :: i,j,k,m open(101,file='nicle.txt') h=0.01 do i=int(-4/h),int(4/h) do j=int(-4/h),int(4/h) x=cmplx(i*h,j*h) x1=x k=0 do while (abs(f(x))>1e-4) x=x-f(x)/df(x) k=k+1 enddo if (abs(x-1).lt.1e-3) then m=1 else if (abs(x-cmplx(-0.5,sqrt(3.)/2.)).lt.1e-3) then m=2 else if (abs(x-cmplx(-0.5,-sqrt(3.)/2.)).lt.1e-3) then m=3 endif write(101,'(2f10.3,2i5)')real(x1),aimag(x1),m,k enddo write(*,*)i enddo end program fractal function f(x) implicit none complex(8)::x,f ! tu napisemo funkcijo, katere niclo hocemo poiskati f=x**3-1 end function f function df(x) implicit none complex(8)::x,df ! tu napisemo odvod f'(x) funkcije f(x) df=3*x**2 end function df
Tekst sedaj shranimo kot datoteko fractal.f90 in prevedemo.
Tu je sedaj še print screen postopka risanja fractala z gnuplotom. Barve pomenijo h kateri ničli konvergira od začetne točke. Odtenki pa pomenijo koliko korakov je potrebnih za konvergenco.
V kolikor vam kakšna podrobnost ni jasna, mi sporočite.
Nazaj na osnovno stran za predmet Uporaba numeričnih metod v kemiji.