русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Вычисление сумм


Дата добавления: 2014-11-27; просмотров: 860; Нарушение авторских прав


Одной из важных задач, решаемых с помощью циклического алгоритма – вычисление суммы большого числа слагаемых.

Пример 3.15. Вычислить сумму .

Для решения данной задачи воспользуемся методом накопления суммы. Суть его состоит в следующем. Положим S = 0 – это начальное значение S, когда вычисление суммы еще не начато. Далее вычислим следующее выражение: S + , значение которого равно 1, присвоим его переменной S. На языке PASCAL эта ото действие можно записать в виде оператора

S := S + 1/sqr(1);

После выполнения этой операции значение S будет равно 1, т.е. первому слагаемому.

Теперь вычислим выражение: S + , значение которого, снова присвоим переменной S. На языке PASCAL эта ото действие можно записать в виде оператора

S := S + 1/sqr(2);

При выполнении этой операции к старому значению S = 1 прибавится второе слагаемое, и результат запишется в S. После выполнения этой операции значение S будет равно , т.е. сумме первых двух слагаемых.

Аналогично, после выполнения оператора

S := S + 1/sqr(3);

мы получим сумму 3-х слагаемых, и т.д. Для вычисления всей суммы надо 20 раз повторить следующий оператор

S := S + 1/sqr(k);

увеличивая при этом каждый раз значение k на 1. Окончательно получаем следующий алгоритм:

1. Положить S = 0, k = 1.

2. Вычислить S + и записать результат в S.

3. Увеличить k на 1.

4. Если k £ 20, повторить шаг 2, иначе СТОП.

На PASCAL этот алгоритм удобно записать с помощью цикла repeat, т.к. в данном варианте алгоритма проверка условия прекращения цикла происходит после выполнения действия.

var S : real;

k: integer;

Begin

S:= 0; k :=1;

repeat S:= S + 1/sqr(k);

k := k + 1;

until k > 20;

writeln(‘ S = ’, S:10:5):

End.

Задачу примера 3.15 можно решить с помощью другого варианта циклического алгоритма.



1. Положить S = 0, k = 1.

2. Если k > 20, то СТОП, иначе продолжить.

3. Вычислить S + и записать результат в S.

4. Увеличить k на 1.

5. Повторить шаг 2.

На PASCAL этот алгоритм удобно записать с помощью цикла while, т.к. в данном варианте проверка условия прекращения цикла происходит до выполнения действия.

var S : real;

k: integer;

Begin

S:= 0; k :=1;

while k <= 20 do

begin S:= S + 1/sqr(k);

k := k + 1;

end;

writeln(‘ S = ’, S:10:5):

End.

В приведенных примерах количество повторений тела цикла можно оценить еще до его выполнения. Однако, во многих задачах количество этих повторений заранее не известно и вычислено быть не может. Опера­торы repeat и while позволяют организовывать такие циклы. В сле­дующих двух примерах рассмотрим нахождение суммы бесконечного ря­да с заданной точностью.

Пример 3.16.Найти сумму членов бесконечно убывающей геометрической прогрессии с точностью до слагаемого, меньшего заданной величины e:

z = 1 + x + x2 + x3 +…+ xn + …

При нахождении суммы такого ряда не следует вычислять от­дельно каждый элемент. Достаточно установить зависимость, по ко­торой из предыдущего элемента образуется следующий. Обозначим через an = xn – n-й член прогрессии, тогда

an+1 = xn+1 = an × x; a0 = 1.

Та­кой подход позволяет сократить количество вычислительных операций и уменьшить время счета. Сумму будем накапливать в переменной S, которую предвари­тельно необходимо обнулить, как и в предыдущем примере.

Условие окончания цикла – |an | £ e., которое означает, что последнее слагаемое по модулю меньше e. Так как слагаемые данного выражения убывают, то и все следующие слагаемые малы, значит, сумма от последующих сложений практически не увеличится и процесс накопления суммы можно прекратить.

Ниже приведены два варианта программы. В первом варианте использован оператор while, во втором – repeat. В программах an обозначено именем а.

Первый вариант

Var

x, s, eps, a : real;

Begin

write ('введите х и epsilon - ');

readln (x, eps);

s:=0;

a:=1; { задание параметру цикла его начального значения }

while abs(a) > eps do{ проверка условия выхода из цикла }

Begin

s := s + a; a := a * x;

end;

writeln ('сумма прогрессии = ', s:10:3)

End.

Второй вариант

Var

x, s, eps, a : real;

Begin

write ('введите х и epsilon - ');

readln (x, eps);

s := 0;

a := 1; { задание параметру цикла его начального значения }

Repeat

s := s + a; a := a * x;

until abs(a) < eps; { проверка условия выхода из цикла }

writeln ('сумма прогрессии = ', s:10:3)

End.

Пример 4.18.Выполнить задание, приведённое в примере 4.15, используя оператор for.

var s: real;

n, k : integer;

Begin

n:= 20; s:=0;

for k := 1 to n do

s := s + 1/sqr(k);

writeln ('s = ', s:10:3);

End.

 

Тема 4.Структурированные типы данных

Структурированные или сложные типы данных, в отличие от простых типов, содержат более одной компоненты, т.е. состоят из нескольких элементов. Из существующих в PASCAL структурированных типов мы рассмотрим только наиболее используемый тип – “массив”.

 



<== предыдущая лекция | следующая лекция ==>
Структура оператора | Одномерные массивы


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.155 сек.