русс | укр

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

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

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

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


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

Приближенное вычисление суммы бесконечного ряда


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


Рассмотрим задачу, в которой требуется написать программу приближенного вычисления суммы:

1 + х/1! + х2/2! + х3/3! + …

с точностью Е.

Считается, что нужное приближение получено с заданной точностью е (эпсилон), если вычислена сумма нескольких первых слагаемых, и очередное слагаемое оказалось по модулю меньше, чем данное малое положительное число Е. Тогда считается, что это и все последующие слагаемые можно уже не учитывать.
На каждом следующем шаге цикла будем максимально использовать сделанное нами на предыдущих шагах.
Если уже получено хi-1/(i-l)!, то для вычисления xi/i! достаточно умножить предыдущий результат на x/i.

Блок-схема алгоритма решения задачи приведена на рис. 7.2.

Рис. 7.2. Блок-схема алгоритма приближенного вычисления суммы ряда (пример 7.1)

Пример 7.1.
Приближенное вычисление суммы бесконечно убывающего ряда

Program Summer2;
var
Eps:real; { Заданное число "эпсилон"}
X:real; { Основание степени в числителе дроби}
S:real; { В этой переменной будем накапливать сумму }
Y: real; { Для хранения очередного слагаемого }
i:integer; { Счетчик числа шагов }
begin
write('Введите X и Epsilon:');
readln(X. Eps);
Y:=l; { Первое слагаемое }
S:=Y; {Положим в сумматор первое слагаемое }
i :=0;{ Обнулим счетчик шагов }
while abs(Y)>=Eps do { Пока добавленное слагаемое не меньше "эпсилон", считаем сумму. Если "эпсилон" сразу не меньше 1, цикл, не выполнится ни разу! }
begin { Началось тело цикла }
i:=i+1; { Вычислили номер текущего шага }
Y:=Y*X/i; { Посчитали новое слагаемое }
S:=S+Y { Увеличили сумму на текущее слагаемое }
end; { Тело цикла завершилось. После этой строки компьютер перейдет на оператор while для сравнения переменной "эпсилон" с только что добавленным слагаемым }
{ Теперь выведем результат на экран }
Writeln ('Суммачисел=', S:6:4);
readln
end.



 

Задание 7.1.
Вычислить сумму ряда:
1/12+ 1/32+ 1/52+ 1/72+ …

Вычисления прекращаются по тому же условию, что и в примере 7.1.
Полученная сумма должна быть близка к числу п2/8.

Возведение числа в указанную целую степень

Рассмотрим задачу: возвести число а, введенное с клавиатуры, в степень n.
Задачу будем выполнять за n + 1 шаг. Например, возведем число 2 в степень 3 (23):

0 шаг: 20 =1
1 шаг: 21 = 20 • 2 (1 • 2)
2 шаг: 22 = 21 • 2 (2 • 2)
3 шаг: 23 = 22 • 2 (4 • 2)

Пример 7.2.
Возведение числа а, введенного с клавиатуры, в степеньn

Program Stp;
var Р: real; { Переменная, которая хранит результат очередного шага }
N: integer; { Показатель степени }
i: integer; { Счетчик числа шагов }
A.: real; { Основание степени }
begin
write('Введите основание степени:');
readln(A);
write('Введите показатель степени:');
readln(N);
i :=0; { 0-й шаг }
Р:=1; { 20=1 }
while i<abs(N) do {.Показатель может быть отрицательным, поэтому используем для анализа его абсолютную .величину. Если показатель N=0, то в тело цикла не попадаем ни разу, так как 0-й шаг уже сделан }
begin
i:=i+l; { Увеличиваемi на 1, то есть i теперь равно номеру текущего шага }
Р:=Р*А { Получаем результат i-го шага}
end; { В переменной Р на данный момент получен результат для положительного N }
if N<0 then { Если показатель N - отрицательный, }
Р:=1/Р; {то результат должен иметь обратную величину }
writeln ('Результат=',Р:6:3);
readln
end.

 

Задание 7.2.
Используя цикл с предусловием, написать программу вычисления N!.

Задание 7.3.
Выполните задачу из предыдущей темы (задание 6.8), но используйте для этого цикл с предусловием. Блок-схема алгоритма вывода звездочек в верхней (2-й) строке с 3-го столбца (координата х) до 75-го столбца приведена на рис. 7.3. Продолжите блок-схему. Будьте внимательны с условиями!

 

Рис. 7.3. Блок-схема алгоритма вывода звездочек во 2-й строке экрана с 3-й по 75-ю позицию

 

Обратите внимание: нам понадобилось самим устанавливать значение х до входа в цикл и увеличивать х на 1 в теле цикла! В цикле со счетчиком это все делалось за нас в самой конструкции цикла.

 

Задание 7.4.
Измените в задании 7.3 в теле цикла шаг счетчика, сделав его равным 3.

Задание 7.5.
Проведите звездочки по диагонали из нижнего левого угла в верхний правый. Сначала заполните блок-схему алгоритма (рис. 7.4).

Рис. 7.4. «Слепая» блок-схема алгоритма вывода звездочек по диагонали из левого нижнего в правый верхний угол

 

Пояснение: координата хизменяется быстрее, чем у,, поскольку экран прямоугольный.

Задание 7.6.
Выведите в центр экрана с задержкой друг относительно друга следующие числа: 1,2,4,8,16, 32,64,128,256.
Вероятно, вы поняли, что это степени числа 2.
Заполните блок-схему алгоритма (рис. 7.5), затем напишите программу.

 

Рис. 7.5. «Слепая» блок-схема алгоритма вывода в центр экрана степеней числа 2 с временной задержкой

Задание 7.7.
Введите два числа (например, А = 5 и В = 8) и найдите их произведение, используя только операцию сложения. Заполните блок-схему алгоритма (рис. 7.6).

Рис 7.6. «Слепая» блок-схема алгоритма вычисления произведения двух чисел с использованием только операции сложения.

Задание 7.8.
Введите два числа (например, А = 45 и В = 8) и найдите частное от деления нацело первого числа на второе (А на В) (в переменной к) и остаток от деления нацело (в переменной А), используя только операцию вычитания. Заполните блок-схему алгоритма (рис. 7.7).

 

Рис. 7.7. «Слепая» блок-схема алгоритма вычисления целого частного и остатка от деления одного числа на другое с использованием только операции вычитания

Пояснение: в переменной к подсчитывайте, СКОЛЬКО раз сделана операция вычитания, то есть СКОЛЬКО раз число В содержится в числе А.



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


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


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

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

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


 


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

 
 

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

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