Naloga:
Napišite program, ki izračuna določeni integral funkcije exp(-x)+x-1 na intervalu [0,1] za različne korake z različnimi metodami.
program integral implicit none real :: x,f,h,v,a,b,w integer::n,i write(*,*) 'st. delilnih tock, n=?' read(*,*)n a=0 b=1 h=(b-a)/real(n) write(*,*)'korak je, h=',h !trapezna z delnimi vsotami write(*,*)'trapezna metoda' v=0 x=0 do i=1,n v=v+(f(x)+f(x+h))/2.*h x=x+h enddo write(*,*) 'integral je (delne vsote)',v !trapezna z utežmi v=0 do i=0,n x=i*h if (i==0 .or. i==n) then w=1 else w=2 endif v=v+w*f(x) enddo v=v*h/2. write(*,*) 'integral je (utezi)',v write(*,*)'simpsonova metoda' if (mod(n,2).eq.0) then !simpson z delnimi vsotami v=0 x=0 do i=1,n,2 v=v+(f(x)+4*f(x+h)+f(x+2*h))/3.*h x=x+2*h enddo write(*,*) 'integral je (delne vsote)',v !simpson z utežmi v=0 do i=0,n x=i*h if (i==0 .or. i==n) then w=1 elseif (mod(i,2)==0) then w=2 else w=4 endif v=v+w*f(x) enddo v=v*h/3. write(*,*) 'integral je (utezi)',v else write(*,*)'ni sodo stevilo intervalov' endif write(*,*)'analiticen integral je ',0.5-exp(-1.) end program integral function f(x) implicit none real::x,f ! tu napisemo funkcijo, katero bomo tabelirali f=exp(-x)+x-1 end function f
Tekst sedaj shranimo kot datoteko integral.f90 in prevedemo.
Tu je sedaj še print screen postopka prevajanja. V kolikor vam kakšna podrobnost ni jasna, mi sporočite.
Nazaj na osnovno stran za predmet Uporaba numeričnih metod v kemiji.