Tangentna metoda iskanja ničel

 

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 numerične metode za kemike.

 

Fakulteta za kemijo in kemijsko tehnologijo

Katedra za fizikalno kemijo

Univerza v Ljubljani

Večna pot 113, K3.009

1000 Ljubljana

Slovenija

tel: +386 1 479 8540

e-pošta: tomaz pika urbic at fkkt.uni-lj.si

Govorilne ure so po dogovoru.

Prešernove nagrade