Numerično odvajanje - 2 verzija

 

Naloga:
Napišite program, ki tabelira funkcijo sin(x) z željenem korakom, zapiše rezultate na dve decimalki in potem numerično izračuna prvi in drugi odvod.

program odvodi
implicit none
real :: x,h,y,x1,y1,dy,f,x2,y2,dy2
integer::i,n
write(*,*) 'vnesi korak tebeliranja funkcije, h=?'
read(*,*)h
!tabeliranje funkcije na dve decimalki
i=1
x=-10.
open(111,file='tabela2.txt')
open(112,file='tabela2podatki.txt')
!v to datoteko napisemo podatke o stevilu tock in o koraku
do while (x.lt.10)
 write(111,'(2f10.2)')x,f(x)
 x=x+h
 i=i+1
enddo
close(111)
! i je za ena vec kot je podatkov v tabeli
write(112,*)i-1,h
close(112)
!racunanje prvega in drugega odvoda, uporabimo formule za drugi red 
open(15,file='tabela2.txt')
open(16,file='tabela2podatki.txt')
open(17,file='odvodi.txt')
read(16,*)n,h
close(16)
read(15,*)x,y
read(15,*)x1,y1
do i=3,n
 read(15,*)x2,y2
! odvod v prvi tocki 
 if (i==3) then
  dy=(-3*y+4*y1-y2)/(2*h)
  write(17,*)x,dy
 endif
 dy=(y2-y)/(2*h)
 dy2=(y2+y-2*y1)/h**2
 write(17,*)x1,dy,dy2
!odvod v koncni tocki
 if (i==n) then
  dy=-(-3*y+4*y1-y2)/(2*h)
  write(17,*)x2,dy
 endif
 x=x1
 y=y1
 x1=x2
 y1=y2
enddo
close(15)
close(17) 
end program odvodi

function f(x)
implicit none
real::x,f
! tu napisemo funkcijo, katero bomo tabelirali
f=sin(x)
end function f

Tekst sedaj shranimo kot datoteko odvodi2.f90 in prevedemo.

Tu je sedaj še print screen postopka prevajanja. V kolikor vam kakšna podrobnost ni jasna, mi sporočite.



Tu so se txt datoteke za korak 0.1.
tabela2.txt odvodi.txt

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