Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Интегрирование методом Симсона (вывод погрешности)

Автор: kvadrat 19.12.2008 23:23

Ответ в паскале несовпадает с ответом в Маткаде (в прикреплённом рисунке)

program Simpson;

{integriruemaya funkciya}
function F(x:Real):Real;
begin
F:=-21/(sqr(6-7*x));
end;

function F1(x:Real):Real;
begin
F1:=14*(6-7*X)*(6-7*X)*(6-7*X)*(-1);
end;

var a,b,h,x,pogr :real;
n,i :integer;
integ :real;

begin
write('Vvedite nachalo integrirovaniya a='); readln(a);
write('Vvedite konec integrirovaniya b='); readln(b);
write('Vvedite kolichestvo razbieniy intervala (chetnoe chislo) n='); readln(n);
if (n mod 2)>0 then
begin
n:=n+1;
writeln('Chislo n bylo vvedeno nechetnoe ono bylo zameneno na n=',n);
end;

h:=(b-a)/n;
integ:=F(a)+F(b)+4*F(a+h);
for i:=1 to (n div 2)-1 do
begin
x:=a+2*h*i;
integ:=integ+2*F(x)+4*F(x+h/2);
pogr:=abs((((b-a)*exp(ln(h)*4))/180)*F1(a));
end;
integ:=h*integ/3;

writeln('Integral = ',integ:0:15);
writeln('pogreshnost=',pogr:0:15);
end.


Прикрепленное изображение
Почему так? blink.gif

Автор: xds 20.12.2008 1:30

Во первых, integ:=integ+2*F(x)+4*F(x+h) - не h/2;

Во вторых, тем же MathCad можно было правильно посчитать 4-ю производную:

function F1(x:Real):Real;
begin
F1:=-6050520/exp(ln(6-7*x)*6);
end;