иксуй! | 18 января 2010 22:00 | Код:
program task1;
const
eps=0.001;
p=0.333;
type TypeFunc = function (x:real):real;
var x,a,b,c,Fa,Fb,Fc,S,s1,s2,s3,xr1,xr2,xr3:real;
n0:integer;
{$F+}
{***f1***}
function f1 (x:real):real; begin f1:=3*(0.5/(x+1)+1) end;
{***f2***}
function f2 (x:real):real; begin f2:=2.5*x-9.5 end;
{***f3***}
function f3 (x:real):real; begin f3:=5/x end;
{******}
procedure root (f,g:TypeFunc; eps,a,b:real; var x:real);
begin
while b-a > eps do
begin
c:=0.5*(b+a);
Fc:=f(c)-g(c);
Fa:=Fc*(f(a)-g(a));
Fb:=Fc*(f(b)-g(b));
if Fa < 0 then b:=c
else
if Fb < 0 then a:=c
else
if Fc = 0 then begin
b:=c;a:=c;
break
end;
end;
x:=(b+a)*0.5;
end;
{******}
{******FUNCTION INTEGRAL******}
function integral(f:TypeFunc;a,b,eps:real):real;
const p=3;
var
n,i:integer;
s1,s2,h:real;
begin
n:=1;
h:=(b-a)/n;
s1:=h*0.5*(f(a)+f(a+h));
n:=2*n;
h:=(b-a)/n;
s2:=h*(0.5*f(a)+f(a+h)+0.5*f(a+n*h));
repeat
h:=(b-a)/n;
s1:=s2;
s2:=0.5*h*(f(a+n*h)+f(a+2*n*h));
for i:=n+1 to 2*n-1 do
begin
h:=(a-b)/i;
s2:=s2+f(a+i*h);
end;
n:=2*n;
until (abs(s1-s2)/p)<eps;
integral:=s2;
end;
{------------------------Ѓ‹ЋЉ-------------------------}
begin
writeln('ўўҐ¤ЁвҐ Є®®а¤Ё вл в®зҐЄ a Ё b ®бЁ x');
readln(a,b);
root(f1,f2,eps,a,b,xr1);
root(f2,f3,eps,a,b,xr2);
root(f3,f1,eps,a,b,xr3);
writeln('в®зЄЁ ЇҐаҐбҐзҐЁп:')
writeln(' x1=',xr1,' x2=',xr2,' x3=',xr3);
writeln();
Writeln('S=',integral(f1,xr3,xr2,eps)-integral(f3,xr3,xr2,eps)+integral(f1,xr2,xr1,eps)-integral(f2,xr2,xr1,eps));
readln(s)
end. ребятааа кто шарит помогите сделать чтобы она заработала
вообщем программа должна находить площадь фигуры образованной графиками трёх функций
процедура root находит точки пересечения методом деления отрезка пополам, а функция integral вычисляет его по формуле трапеций, ну ф-ла в задании дана..
что надо чтобы она работала ? :confused: |