Учебно-методический комплекс дисциплины для обучающегося «Языки программирования» для специальности 5В010900 Математика



бет32/142
Дата03.01.2022
өлшемі1.33 Mb.
#450516
түріУчебно-методический комплекс
1   ...   28   29   30   31   32   33   34   35   ...   142
УМКДО -ЯзыкиПрограммирования

Пример использования циклов

Задача. Вычислить интеграл в заданных границах a и b для некоторой гладкой функции f от одной переменной (с заданной точностью).

Алгоритм. Метод последовательных приближений, которым мы воспользуемся для решения этой задачи, состоит в многократном вычислении интеграла со все возрастающей точностью, - до тех пор, пока два последовательных результата не станут различаться менее чем на заданное число (скажем, eps = 0,001). Количество приближений нам заранее неизвестно (оно зависит от задаваемой точности), поэтому здесь годится только цикл с условием (любой из них).

Вычислять одно текущее значение для интеграла мы будем с помощью метода прямоугольников: разобьем отрезок [a,b] на несколько мелких частей, каждую из них дополним (или урежем - в зависимости от наклона графика функции на данном участке) до прямоугольника, а затем просуммируем получившиеся площади. Количество шагов нам известно, поэтому здесь удобнее всего воспользоваться циклом с параметром.

На нашем рисунке изображена функция f(x) = x2 (на отрезке [1,2]). Каждая из криволинейных трапеций будет урезана (сверху) до прямоугольника: высотой каждого из них послужит значение функции на левом конце участка. График станет "ступенчатым".

Реализация

step:= 1;

h:= b-a;

s_nov:= f(a)*h;

repeat

s_star:= s_nov;



s_nov:= 0;

step:= step*2;

h:= h/2;

for i:= 1 to step do

s_nov:= s_nov+f(a+(step-1)*h);

s_nov:= s_nov*h;

until abs(s_nov - s_star)<= eps;

writeln(s_nov);




Достарыңызбен бөлісу:
1   ...   28   29   30   31   32   33   34   35   ...   142




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет