Помощь - Поиск - Пользователи - Календарь
Полная версия: Интегрирование методом Симсона (вывод погрешности)
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
kvadrat
Ответ в паскале несовпадает с ответом в Маткаде (в прикреплённом рисунке)

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
Во первых, 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;

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.