urbic.com logotip

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
integer::OK
write(*,*) 'vnesi korak tebeliranja funkcije, h=?'
read(*,*)h
!tabeliranje funkcije na dve decimalki
x=-10.
open(111,file='tabela.txt')
do while (x.lt.10)
 write(111,'(2f10.2)')x,f(x)
 x=x+h
enddo
close(111)
!racunanje prvega odvoda
!branje datoteke je narejeno tako, da bere dokler ne pride do konca datoteke
!odvod je smerni koeficient skozi sosednji tocku
!x je na sredini med x-oma 
open(15,file='tabela.txt')
open(16,file='odvod.txt')
read(15,*)x,y
OK=0
do while (OK==0)
 read(15,*,iostat=OK)x1,y1
 if (OK==0) then
  dy=(y1-y)/(x1-x)
  write(16,*)(x+x1)/2.,dy
 endif
 x=x1
 y=y1
enddo
close(15)
close(16) 
!racunanje drugega odvoda
! vse isto kot pri prvem odvodu, le da tu odvajamo prvi odvod in ne funkcije
open(15,file='odvod.txt')
open(16,file='odvod2.txt')
read(15,*)x,y
OK=0
do while (OK==0)
 read(15,*,iostat=OK)x1,y1
 if (OK==0) then
  dy=(y1-y)/(x1-x)
  write(16,*)(x+x1)/2.,dy
 endif
 x=x1
 y=y1
enddo
close(15)
close(16)
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 odvodi.f90 in prevedemo.

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

PDF dokument slik.

Tu so se txt datoteke za korak 0.025.

tabela.txt

odvod.txt

odvod2.txt

Nazaj na osnovno stran za predmet Uporaba numeričnih metod v kemiji.