Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
YaP_laby.pdf
Скачиваний:
159
Добавлен:
31.05.2015
Размер:
915.49 Кб
Скачать

ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ

Цель работы – овладеть практическими навыками разработки и программирования алгоритмов итерационной циклической структуры; приобрести дальнейшие навыки по отладке и тестированию программ.

Задания

1.Изучить:

а) организацию итерационных циклов; б)возможности языка программирования для организации таких цик-

лов.

2.Разработать алгоритмы решения задач для данных заданий.

3.Составить программы решения задач для данных заданий.

Контрольныевопросы

1.Что такое итерационный циклический процесс? Его отличия от цикла с заданным числом повторений.

2.В чем заключается сущность метода итераций при вычислении интеграла? Как определить число итераций, необходимых для получения значения интеграла с требуемой точностью?

3.Почему при программировании итерационных процессов не используются индексированные переменные для обозначения последовательных приближений к корню? Сколько соседних приближений одновременно используются в вычислениях?

4.Что будет выведено на экран компьютера при выполнении следующего фрагмента программы:

int x = 10; while (x > 0)

{ cout << x << endl; x = x + 3; }

5.Какое различие между выполнением операторов while и do-while?

6.Какой из следующих вариантов представляет собой ключевое слово: for, For или FOR.

7.Представить общий формат инструкции for.

8.Если цикл включает инструкцию switch, то приведет ли к завершению этого цикла инструкция break, принадлежащая инструкции switch?

9.Написать for-инструкцию для цикла, который считает от 1000 до 0 с шагом – 2.

10.Допустим ли следующий фрагмент кода?

for ( int i=0; i<num; i++) sum +=i;

Языки программирования. Метод. указания по лаб. работам

-20-

ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ

Контрольные вопросы

count =i;

11.Пояснить назначение инструкции break в цикле.

12.Найти и исправить ошибки в следующих операторах: while ( c < k)

{ s = s+c; c++;

Вариантызаданий

Составить программу приближенного вычисления площади фигуры, ограниченной заданными линиями.

В вариантах № 1–5 использовать метод прямоугольников. Для построения прямоугольника использовать левый конец отрезка.

1. y = 0, y =5x x2 +14.

2.y = x2 + 2x + 2, y = x2 + 4x +5, y =1.

3.y = −x2 + 2x + 2, y = −x2 4x 1, y =3.

4.y =3x2 4x + 2, y = 20 x.

5.y = −2x2 +3x +6, y = x + 2.

Ввариантах № 6–10 использовать метод прямоугольников. Для построения прямоугольника использовать правый конец отрезка.

6.y = 0, y = −2(x 1)2 +8.

7.y = 0, y = −2(x 3)2 + 2.

8.y = x, x 3y + 2 = 0.

9.x = 0, y =sin x, y = cos x, x = π2 .

10.y = −2x2 +3x +6, y = x + 2.

В вариантах № 11–15 использовать метод прямоугольников. Для построения прямоугольника использовать середину отрезка.

11.y = 0, y =5x x2 +14.

12.y = x2 + 2x + 2, y = x2 + 4x +5, y =1.

13.y = −x2 + 2x + 2, y = −x2 4x 1, y =3.

14.y =3x2 4x + 2, y = 20 x.

15.y = −2x2 +3x +6, y = x + 2.

Ввариантах № 16–20 использовать метод трапеций.

16.y = 0, y = −2(x 1)2 +8.

17.y = 0, y = −2(x 3)2 + 2.

18.y = x, x 3y + 2 = 0.

19. x = 0, y =sin x, y = cos x, x = π2 .

Языки программирования. Метод. указания по лаб. работам

-21-

ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ

Варианты заданий

20. y = −2x2 +3x +6, y = x + 2.

Ввариантах № 21–25 использовать формулу Симпсона.

21.y = 0, y =5x x2 +14.

22.y = x2 + 2x + 2, y = x2 + 4x +5, y =1.

23. y = −x2 + 2x + 2, y = −x2 4x 1, y =3.

24.y =3x2 4x + 2, y = 20 x.

25.y = −2x2 +3x +6, y = x + 2.

26.Дано целое число N > 2 и две вещественные точки на числовой оси: A, B (A < B). Отрезок [A, B] разбит на равные отрезки длины H с концами в N точках вида A, A + H, A + 2H, A + 3H, ..., B. Вывести значение H и набор из N точек, образующий разбиение отрезка [A, B].

27.Дано целое число N > 2 и две вещественные точки на числовой оси:

A, B (A < B). Функция F(X) задана форм улой F(X) = 1 – sin(X). Вывести значения функции F в N равноотстоящих точках, образующих разбиение отрезка [A, B]: F(A), F(A + H), F(A + 2H), ..., F(B).

28. Дано число D > 0. Последовательность чисел AN определяется

следующим образом: A1 = 2, AN = 2 + 1/AN–1. Найти первый из номеров K, для которых выполняется условие |AK – AK–1| < D, и вывести этот номер, а также

числа AK–1 и AK.

29. Дано число D > 0. Последовательность чисел AN определяется сле-

дующим образом: A1 = 1, A2 = 2, AN = (AN–2 + AN–1)/2. Найти первый из номеров K, для которых выполняется условие |AK – AK–1| < D, и вывести этот

номер, а также числа AK–1 и AK.

Примеррешениявариантазадания

Вычислить приближенно на отрезке [a, b] площадь фигуры, ограниченной функциями f(x)=x 2 + 1 и f(x)=x+3.

Предварительно находим точки M1 (1,2) и M 2 (2, 5) пересечения гра-

фиков, решая систему двух уравнений. Отсюда следует, что на отрезке [1, 2] требуется определить площадь фигуры между прямой и параболой. Площадь данной фигуры S = S1 S 2 , где S1 площадь фигуры на отрезке [1, 2] огра-

ниченной прямой, а S 2 – площадь фигуры на отрезке [1, 2], ограниченной

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

Итак, требуется вычислить b f (x)dx, если f (x) непрерывна на [a,b].

a

Для вычисления разделим отрезок [a,b] точками a = x0 ,x1, x2 , , xn =b на n

Языки программирования. Метод. указания по лаб. работам

-22-

ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ

Пример решения варианта задания

равных частей, имеющих длину x = b n a . Найдем значение функции f (x)

в точках x0 , x1, , xn , обозначив их следующим образом: y0 = f (x0 ), y1 = f (x1 ), , yn = f (xn ).

n1

n

Составим суммы Sn1 = yix и Sn = yix .

i=0

i=1

Суммы Sn1 и Sn являются интегральными суммами для f (x) на [a,b]. Из рис. 4.1 видно, что Sn1 выражает площадь «вписанной ступенчатой фигуры», а Sn площадь «описывающей ступенчатой фигуры» относительно

«криволинейной трапеции», соответствующей b

f (x)dx. Следовательно,

можно считать, что

 

 

a

 

 

 

 

 

b

f (x)dx Sn1

= b a (y0 + y1 + + yn1 ),

a

 

 

n

 

 

b

f (x)dx Sn

= b a (y1 + y2 + + yn ).

 

a

 

n

 

Эти две формулы и есть формулы прямоугольников.

Для определения площади можно использовать значение функции, которая вычисляется в середине отрезка [xi , x i+1 ], где i = 0, 1, …, n.

y

yn1 yn

 

y2

 

 

 

y1

 

 

 

y0

 

 

 

x

 

 

0

a = x0 x1 x2

xn1 xn = b

x

Рис. 4.1

Языки программирования. Метод. указания по лаб. работам

-23-

ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ

Пример решения варианта задания

Кроме того, существуют формула трапеций для вычисления площади

b

b a y

0

+ y

n

 

 

f (x)dx

n

 

 

 

+ y1 + y2

+ + yn1

 

 

2

 

a

 

 

 

 

 

и формула Симпсона (формула парабол)

b

f (x)dx b a

(y0 + yn )+ 2(y1 + + yn1 )+ 4(y0,5 + y1,5 + + yn0,5 ) .

a

6n

 

Здесь y 0.5 , y1.5 , …, y n0.5 значения функции, которые вычисляются в середине

отрезов x .

Ниже дан код программы, которая решает поставленную задачу. Площадь S1 вычисляется при помощи формулы трапеции, а S 2 – по формуле Симпсона.

Анализ задачи.

1.Начальные данные:

а) переменные a и b для границ интервала;

б)переменные S, S1, S2 для значений площадей;

в) переменные w1, w2 для значений промежуточных сумм формулы Симпсона;

г) переменная n для числа точек интегрирования; д)переменная x для значения аргумента функции;

е) переменная h для длины интервала. void main()

{

float a = -1, b = 2, h, x;

float S, S1=0, S2=0, w1 = 0, w2 =0; float n;

clrscr();

cout << "Введи число точек на интервале n= "; cin >> n;

h = (b-a)/n;

// Вычисляем площадь по формуле трапеций. for (x=a+h;x<=b-h;x+=h)

S1+= x+3.;

S1 = S1 + (a+3. + b+3. )*0.5;

S1 = S1*h;

Языки программирования. Метод. указания по лаб. работам

-24-

ЛАБОРАТОРНАЯ РАБОТА № 4 ЦИКЛЫ

Пример решения варианта задания

// Вычисляем площадь по формуле Симпсона. for (x=a+h;x<=b-h;x+=h)

w1=w1+x*x+1.; // Вычисляется 1 сумма в формуле Симпсона. w1=w1*2.;

for (x=a+h*0.5; x<=b-h*0.5; x+=h)

w2= w2+x*x+1.; // Вычисляется 2 сумма в формуле Симпсона. w2 =w2*4.;

S2 = w1 + w2 + a*a + 1 +b*b + 1; S2 = h*S2/6.;

S = S1-S2;

cout << "Площадь фигуры S= " << S << "\n"; getch(); }

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

Языки программирования. Метод. указания по лаб. работам

-25-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]