В общем нужно программу вычесление интеграла... d(x) на промежутка a и b.
препод на листке объяснил что то..но я мало понял...вот чтов общем он мне написал на листке
Program p;
..............
...............
function int(a,b,eps:real,f:func):real
begin
реализация метода вычисления
интеграла для ф-ии вид которой а
end;
function fi(x:real):real;
begin fi:=x*x;end;
begin
readln(a,b,eps);
writeln(int(a,b,eps,fi);
Sстарое = ((f(a)+f(b))* (b-a))/2
S новое =S1+S2
abs(S ст -S н) < eps все ОК!!!
дальше чет не понял...толи какой то цикл идет ..то ли S новое переходит в S старое...
или ещё что о он написал
в общем помогите разобраться...
http://forum.pascal.net.ru/index.php?showtopic=4389 ?
вот код нам давали на лекции..метод средних треугольников..только препод дал программу не работающую..я показал по практике преподавателю(думал доделаем) он сказал что программа очень неграммотна...и вообще зачем нам знать число деления n. и что нужно использовать эпсилан
вот нашёл похожее..только сделанно ка кто слишком заумно..возможно ли переделать по проще..чтобы не было никаких модулей
UNIT C_Rect;
INTERFACE
TYPE Func=Function(x:real):real;
FUNCTION Rectangles(a,b:Real; f:Func; n:word):Real;
FUNCTION RectanglesRunge(a,b:Real; f:Func; var n: word;eps:Real):Real;
IMPLEMENTATION
FUNCTION Rectangles(a,b:Real; f:Func; n:word):Real;
VAR
h,f1,sum,x,y:Real;
i:Integer;
BEGIN
h := (b-a) / n;
sum := 0;
x := a;
for i := 1 to n do
begin
y := x;
x := x + h;
f1 := f((x + y)/2);
sum := sum + f1;
end;
Rectangles:= sum*h;
END;
FUNCTION RectanglesRunge(a,b:Real; f:Func; var n: word; eps:Real):Real;
VAR
I1, I2: real;
BEGIN
I1 := Rectangles(a,b,f,n);
n := n+n;
I2 := Rectangles(a,b,f,n);
while abs(I1-I2) > 2*eps do
begin
if n >= 16383 then break;
I1 := I2;
n := n+n;
I2 := Rectangles(a,b,f,n);
end;
RectanglesRunge := I2;
END;
BEGIN
END.