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.
Tu so se txt datoteke za korak 0.025.
Nazaj na osnovno stran za predmet Uporaba numeričnih metod v kemiji.