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.
Nazaj na osnovno stran za predmet Uporaba numeričnih metod v kemiji.