Numerično integriranje

 

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 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