Скачиваний:
65
Добавлен:
02.05.2014
Размер:
59.9 Кб
Скачать

Лабораторная работа 3

Простые циклы с неизвестным числом повторений

Цель работы: Формирование первичных умений в разработке простых циклических программ с неизвестным числом повторений.

Что нужно знать для выполнения работы

1. Структура цикла, назначение и порядок следования его отдельных частей.

2. Структуры: «цикл-пока» и «цикл-повторить».

3. Операторы цикла «while … do», «repeat … until».

Примеры выполнения задания лабораторной работы

Пример 1

Составьте программу, нахождения наибольшего общего делителя двух чисел с помощью алгоритма Евклида.

В соответствии с алгоритмом Евклида НОД(a,b) = НОД(max(a,b)-min(a,b), min(a,b)).

Схема алгоритма

a:=m

b:=n

Да

Нет

a:=a-b

b:=b - a

Рис. 3.1 Схема алгоритма программы примера 1

Текст программы

program lr3_1_1;

{Алгоритм Евклида нахождения НОД(m,n)(на вычитание)

Назаров Л.В.}

uses

crt;

var

m,n,a,b:word;

begin

clrscr;

write('Введите два числа ');

readln(m,n);

a:=m;

b:=n;

while a<>b do

if a>b then

a:=a-b

else

b:=b-a;

writeln('НОД(',m,',',n,')= ',a:4);

readkey;

end.

Пример 2

Вычислить значение функции y=sin(x) с точностью  с помощью разложения функции в ряд Маклорена:

В соответствии с признаком Лейбница данный знакопеременный ряд сходится. На практике при вычислении значения суммы ряда обычно ограничиваются конечным числом членов. Если ряд знакопеременный, то ошибка при замене суммы сходящегося знакопеременного ряда суммой нескольких его членов меньше модуля первого из отброшенных членов. Таким образом, достаточно накапливать сумму до тех пор, пока модуль очередного члена не станет меньше требуемой точности.

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

Схема алгоритма

y:=x

an:=x

n:=0

n:=n+1

an:=-an*x2/

(2n(2n+1))

y:=y+an

Рис. 3.2 Схема алгоритма программы примера 2

Текст программы

program lr3_2_1;

{Вычислить значение функции y=sin(x) с точностью eps разложением

ее в ряд Маклорена}

uses

crt;

var

n :integer;

eps,x,y,an :real;

begin

clrscr;

write('Введите x и eps ');

readln(x,eps);

y:=x;

an:=x;

n:=0;

while abs(an) >=eps do

begin

inc(n);

an:=-an*sqr(x)/(2*n*(2*n+1));

y:=y+an;

end;

writeln('x= ',x:8:4,' eps= ',eps:8:4,' y= ',y:8:4,' n= ',n);

readkey;

end.

Задания

Разработать алгоритм, программу и контрольные примеры.

Испытать программу на контрольных примерах.

1. Вычислите значение кквадратного корня с точностью EPS с использованием итерационной формулы Ньютона:

Y0=1

Yi= 1/2 (Yi-1+ X/Yi-1) (i=1,2,3,...)

Вычисления производить пока |Yi - Yi-1| не станет меньше EPS. Подсчитайте количество итераций, за которое достигается эта точность.

2. Найдите сумму членов ряда

S=1 + 1/2 + 1/4 + 1/8 + ...

Сумму вычислять, пока очередной член ряда не станет меньше ЕРS.

3. Вычислите значение кубического корня с точностью EPS с использованием итерационной формулы Ньютона:

Y0=1

Yi= 1/3 (2Yi-1+ X/Y2i-1) (i=1,2,3,...)

Вычисления производить пока |Yi - Yi-1| не станет меньше EPS. Подсчитайте количество итераций, за которое достигается эта точность.

4. Алгоритм Евклида нахождения НОД(m,n) основан на следующих свойствах этой величины. Пусть m и n два натуральных числа и пусть m n. Тогда для чисел m, n и r, где r- остаток от деления m на n, выполняется равенство НОД(m, n) = НОД(n, r). Используя алгоритм Евклида, найдите наибольший общий делитель m и n.

5. Значение функции LN(X) можно вычислить с помощью разложения ее в ряд Маклорена

LN(X) = X - Х2/2 + Х3/3 - Х4/4 + ...

Вычислите LN(X) с точностью EPS, т.е., вычисление суммы ряда нужно продолжать до тех пор, пока абсолютная величина очередного члена ряда не станет меньше EPS. Подсчитайте количество членов ряда, которое для этого понадобилось.

6. Даны два натуральных числа m и n (1<m<n). Найти наименьшее k, при котором mk>n.

7. Генерировать случайные числа из отрезка [1;10] и находить их сумму пока модуль разности между последовательными двумя числами больше 1.

8. Значение функции COS(X) можно вычислить с помощью разложения ее в ряд Маклорена

COS(X) = 1 - X2/2! + Х4/4! - Х6/6! + Х8/8! - ...

Вычислите COS(X) с точностью EPS, т.е., вычисление суммы ряда нужно продолжать до тех пор, пока абсолютная величина очередного члена ряда не станет меньше EPS. Подсчитайте количество членов ряда, которое для этого понадобилось.

9. Найти приближенно с точностью до 0,01 наибольшее значение функции y=(ax2+bx+c)/(dx+e) на отрезке [x1;x2]. Значения a, b, c, d,e, x1, x2 введите с клавиатуры.

10. Дано целое число м > 10. Получите наибольшее целое k, при котором 4k< м.

11. Дано натуральное число n . Получите наименьшее натуральное число вида m2, превосходящее n.

12. Значение функции sin2(x) можно вычислить с помощью разложения ее в ряд Маклорена

sin2(x) = x2 - 2x4/3 - …+ (-1)n-1 22n-1 x2n/(2n)! + ...

Вычислите sin2(x) с точностью EPS, т.е., вычисление суммы ряда нужно продолжать до тех пор, пока абсолютная величина очередного члена ряда не станет меньше EPS. Подсчитайте количество членов ряда, которое для этого понадобилось.

13. Ввести два натуральных числа m и n. Проверить, являются ли данные числа взимно простыми?

14. Изменяя х от а с шагом h, определить, при каком значении х SIN(x) станет больше COS(x).

15. Дана некоторая денежная сумма А руб. Определить, сколькими способами можно представить данную сумму «пятерками» и «десятками»?

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

17. Найти корни уравнения ех – 10х = 0 с точностью  методом простой итерации.

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

19. Найти корень уравнения tg(1,5773х) – 2,3041х = 0 с точностью  методом простой итерации.

20. Найти корень уравнения ln(7,622x) – 8,59х + 0,5 = 0 с точностью  методом простой итерации.

21. Найти корни уравнения 9,33sin(6,977x) – 7,25х = 0 с точностью  методом простой итерации.

22. Вычислить и вывести на экран значения функции y=1/x, превосходящие  для х, принимающего значения 1, 2,… . Значение  ввести с клавиатуры.

23. Ввести натуральное число n. Подсчитать количество цифр в этом числе.

24. Вычислять значение функции y=sin(ax) для x, изменяющегося от 1 с шагом 1 до тех пор, пока данная функция возрастает. Значение а ввести с клавиатуры.

25. Уточните корень уравнения ех – 10х = 0 на отрезке [a,b] методом половинного деления. Для того, чтобы на отрезке [a,b] был корень достаточно, чтобы f(а) и f(b) были разных знаков. В качестве первого приближения х можно взять середину отрезка [a,b], а затем в качестве нового отрезка, на котором необходимо искать корень, нужно взять тот из двух [a,x] и [x,a], на концах которого функция f(х) принимает значения разных знаков. Итерационный процесс продолжать, пока длина отрезка и модуль f(х) не станут меньше заданной малой величины EPS.

26. Вычислить значение числа  с заданной точностью используя формулу

27. Вычислить значение числа  с заданной точностью используя формулу

27. Уточните корень уравнения ех – 10х = 0 на отрезке [a,b] методом хорд.

28. Уточните корень уравнения ех – 10х = 0 на отрезке [a,b] методом касательных.

29. Уточните корень уравнения ех – 10х = 0 на отрезке [a,b] комбинированным методом хорд и касательных.

30. Найти наименьшее общее кратное натуральных чисел k, m, n.

Соседние файлы в папке Лабораторный практикум по программированию на Паскале