Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгор_ТХТК_пособие.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.6 Mб
Скачать

1. Метод прямоугольников

Метод основан на замене площади сложной фигуры суммой площадей прямоугольников, высота которых равна значению функции f(x), а ширина — hx, шагу по оси х. Очевидно, что чем меньше шаг, тем точнее аппроксимация. Площадь элементарного прямоугольника равна f(x)* hx.

Алгоритм вычисления определенного интеграла рассматриваемым методом может быт таким.

  1. Ввести a, b и Е.

    1. Начальное значение шага hx = (b-a)/n, где n — начальное количество точек;

    2. Вычислить площадь S1 =  Sпрямоуг (hx)

    3. Повторять

      1. hx := hx / 2;

      2. Вычислить площадь S2 =  Sпрямоуг (hx);

      3. Y:= | S2 - S1|;

      4. S1:= S2

Пока не будет y Е.

2.4. Вывести S2.

3. Закончить.

В приведенном алгоритме дважды вычисляется сумма площадей элементарных прямоугольников. Эту операцию можно оформить в виде процедуры или функции.

Пример 4.16 Программа, которая реализует описанный алгоритм с использованием функции f(x) и процедуры вычисления площади методом прямоугольников приведена ниже.

Program Integral;

Const

n= 20; { начальное количество точек на интервале }

Var

a, b, hx, s1, s2, E, y : Real;

Function f(x: Real): Real;

Begin

f:= { здесь должна быть формула для вычисления функции}

End;

Procedure S_Rect(a,b,h:Real; Var S:Real);

{ вычисление интеграла методом прямоугольников }

{ a и b — границы интервала, h — шаг по оси х }

{ S — результат }

Var

X: Real;

Begin

S:=0;

X:=a;

While x<b do

Begin

S:= S + f(x)*h;

x:= x+h;

End;

End;

Begin

{ основная программа }

Writeln('Введите интервал и погрешность');

Readln(a, b, E);

{ Начальный шаг }

hx:=(b-a)/n;

{ Начальное значение интеграла (площади) }

S_Rect(a,b,hx,s1);

{ Вычисление очередных приближений }

Repeat

hx:=(b-a)/2;

S_Rect(a,b,hx,s2);

y:=Abs(s2-s1);

s1:=s2;

Until y <= E;

Writeln('Интеграл = ', s2 :10:6);

Writeln('Работа окончена');

Readln;

End.

2. Метод трапеций

Метод основан на замене площади сложной фигуры суммой площадей трапеций, высота которых равна шагу по оси х (hx), а основания — значениям функции f(x) и f(x + hx). Очевидно, что он позволяет точнее аппроксимировать функцию и быстрее получить результат. В этом можно убедиться, подсчитав количество приближений обоими методами. Из геометрии известно, что площадь элементарной трапеции равна (f(x) + f(x + hx)) / (2* hx).

Алгоритм вычисления определенного интеграла рассматриваемым методом отличается от предыдущего только процедурой нахождения площадей s1 и s2. Эта процедура может быть предствалена в следующем виде.

Procedure S_Trap(a,b,h:Real; Var S:Real);

{ вычисление интеграла методом трапеций }

{ a и b — границы интервала, h — шаг по оси х }

{ S — результат }

Var

X: Real;

Begin

S:=0;

X:=a;

While x<b do

Begin

S:= S + (f(x) + f(x + h)) / (2* h).;

x:= x+h;

End;

End;

Вызов в основной программе с именем Integral процедуры S_Trap вместо S_Rect позволит реализовать в ней метод трапеций.

Пример 4.17 Найти сумму ряда

x x x

y = x - ----- + ----- - ----- + …

2! 3! 4!

С точностью = 10 , точность считается достигнутой, если очередной член ряда по модулю < .

Составим программу: x

Program iter; a = a *----- общий член ряда.

uses crt; i

var y = y +a cумма ряда.

x, y, a: real;

i = integer; esp: = real;

begin

Clr Scr; - очищение экрана

Writeln (' введите x, esp'); readln (' x, esp);

определение начальных значений.

While abc (a)>esp do

begin

Вычисление суммы ряда -

Writeln ('y=', y, ' кол. итер.=', i );

end.

1шаг 2 шаг 3 шаг

a = (-1)*(x/1) a = -(x)*(x/2) a = -(-x /2)*(x/3)…

a = +x a = x /2 a = +x /(2*3) = x /3!