Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ.doc
Скачиваний:
9
Добавлен:
26.10.2018
Размер:
415.23 Кб
Скачать

Метод Симпсона

Правило Симпсона (n=2). Заменяем график функции F(x) квадратичной параболой, проходящей через три точки с координатами (х00), (х0+h,у1), (х0+2h,у2). Расчетную формулу для вычисления элемента интегральной суммы получим, используя интерполяционный многочлен Лагранжа, в виде

y(x)=y0A0(x)+y1A1(x)+y2A2(x), где

При x0=0; x1=h; x2=2h, получим

При интегрировании на отрезке [a,b] расчетные формулы для методов прямоугольника, трапеций и Симпсона имеют вид

где h - шаг по x, fa, fi, fb - значения функции при x равном a, xi, b соответственно. Для метода прямоугольников приведены две расчетные формулы, так как площадь прямоугольника на каждом шаге интегрирования может определяться по левой или правой стороне. Суть метода прямоугольников для отрезка [a,b] проиллюстрирована на рисунке, при этом площадь под кривой f(x) (вспомните геометрический смысл определенного интеграла) заменена суммой площадей заштрихованных прямоугольников.

Задание к выполнению расчетно-графического задания.

Каждый из интегралов, приведенных ниже, вычислить:

а) по формуле прямоугольников;

б) по формуле трапеций;

в) по формуле Симпсона;

а); б).

Текст программы и блок-схема.

Интеграл а) метод трапеций:

program integral;

var

a,b,h,x :real

n,i :integer;

integ: real;

function F(x: Real): Real;

begin

F:=(3*sqr(x)+(exp(x)))/(sqr(x)*x+(exp(x)));

End;

Begin;

a:=0;

b:=2;

s:=0;

n:=3;

h:=(b-a)/n;

for i:=1 to n-1 do

begin

s:=s+f(a+h*i);

end;

integ:=h*((f(a)+f(b))/2+s);

writeln (‘integral=’, integ:2:2);

readln;

end.

Интеграл а) метод трапеций:

program integral;

var

a,b,h,x :real

n,i :integer;

integ: real;

function F(x: Real): Real;

begin

F:= (arctan(2*x))/(1+4*sqr(x));

End;

Begin;

a:=0;

b:=45;

s:=0;

n:=3;

h:=(b-a)/n;

for i:=1 to n-1 do

begin

s:=s+f(a+h*i);

end;

integ:=h*((f(a)+f(b))/2+s);

writeln (‘integral=’, integ:2:5);

readln;

end.

Интеграл а) метод Сипсона:

program integral; function F(x:Real):Real; begin F:=(3*sqr(x)+(exp(x)))/(sqr(x)*x+(exp(x))); end; var

a,b,h,x :real; n,i :integer; integ :real; begin write('vvedite niznii predel a='); readln(a); write('vvedite verchnii predel b='); readln(b); write('vvedite kolitschestvo razbienii integrala n='); readln(n); h:=(b-a)/n; integ:=((b-a)/6)*(F(a)+F(b)+4*F((a+b)/2)); writeln('integral = ',integ:3:5); end.

Интеграл б) метод Сипсона:

program integral; function F(x: Real): Real; begin F:=(arctan(2*x))/(1+4*sqr(x)); end; var

a,b,h,x :real; n,i :integer; integ :real; begin write('vvedite niznii predel a='); readln(a); write('vvedite verchnii predel b='); readln(b); write('vvedite kolitschestvo razbienii integrala n='); readln(n); h:=(b-a)/n; integ:=((b-a)/6)*(F(a)+F(b)+4*F((a+b)/2)); writeln('integral = ',integ:3:5); end.

Интеграл а) метод прямоугольников:

program integral;

var

a,b,h,sum,itog :real; n,i :integer; function F(x:Real):Real; begin F:=(3*sqr(x)+(exp(x)))/(sqr(x)*x+(exp(x))); end; begin write('vvedite niznii predel a='); readln(a); write('vvedite verchnii predel b='); readln(b); write('vvedite kolitschestvo razbienii integrala n='); readln(n); h:=(b-a)/n;

sum:=0;

for i:=1 to n-1 do

sum:=sum+f(h*i+a);

sym:=sum+(f(a)+f(b))/2;

itog:=(b-a)/n*sum;

writeln('integral = ',itog:3:5); end.

Интеграл б) метод прямоугольников:

program integral;

var

a,b,h,sum,itog :real; n,i :integer; function F(x:Real):Real; begin F:= (arctan(2*x))/(1+4*sqr(x)); end; begin write('vvedite niznii predel a='); readln(a); write('vvedite verchnii predel b='); readln(b); write('vvedite kolitschestvo razbienii integrala n='); readln(n); h:=(b-a)/n;

sum:=0;

for i:=1 to n-1 do

sum:=sum+f(h*i+a);

sum:=sum+(f(a)+f(b))/2;

itog:=(b-a)/n*sum;

writeln('integral = ',itog:3:5); end.