Помощь - Поиск - Пользователи - Календарь
Полная версия: Интегрирование методом Симсона (вывод погрешности)
Форум «Всё о Паскале» > 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;

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