Całkowanie metodą trapezów

Programowanie w środowisku Delphi lub Pascal
Hom38
Posty: 1
Rejestracja: 6 maja 2014, 18:48

Całkowanie metodą trapezów

Post autor: Hom38 » 6 maja 2014, 19:02

Bardzo proszę o pomoc z rozwiązaniu zad z załącznika.
Napisałam taki program , ale nie wiem czy jest to dobrze zrobione :
uses crt,sysutils;
var
eps,temp,z,z0,krok,zasieg,wynik:real;
p:text;
i:integer;

function fbo(eps,z0,temp,z:real):real;
var
z3,u:real;

begin
if(z/z0<0.5) then fbo:=-1 else
begin
z3:=(z0/z)*(z0/z)*(z0/z);
u:=eps*z3*(z3*z3-1);
fbo:=exp(-u/temp)-1;
end;
end;

procedure calka(eps,z0,temp,krok,zasieg:real; var wynik:real);
var
i:integer;
begin
wynik:=(fbo(eps,z0,temp,0)+fbo(eps,z0,temp,zasieg))/2;
for i:=1 to trunc(zasieg/krok)-1 do
wynik:=wynik+fbo(eps,z0,temp,i*krok);
wynik:=wynik*krok;
end;




begin
writeln('podaj eps,z0,temp,krok,zasieg');
readln(eps,z0,temp,krok,zasieg);
assign(p,'boltzmann.dat');
rewrite(p);
for i:=1 to trunc(zasieg/krok) do begin
z:=i*krok;
writeln(p,z,' ',fbo(eps,z0,temp,z));
end;
close(p);

calka(eps,z0,temp,krok,zasieg,wynik);
writeln(temp,' ',wynik);
assign(p,'hen.dat');
if FileExists( 'hen.dat') then append(p) else rewrite (p);
writeln(p,temp,' ',wynik);
close(p);
end.

Dziękuję za pomoc :)
P.S jeżeli posiadacie jakieś fajne poradniki dot całek w pascalu podzielcie się :D
Załączniki
xx.jpg
xx.jpg (70.39 KiB) Przejrzano 7833 razy