- •1. Краткие теоретические сведения
- •1.1. Понятие ицвп
- •1.2. Алгоритмы вычисления сумм и произведений в цикле
- •А) суммы; б) произведения
- •1.3. Выбор типа общего члена суммы (произведения) при вычислении сумм и произведений в цикле
- •1.4. Вывод рекуррентных формул
- •А) вариант 1; б) вариант 2
- •1.4. Оператор цикла со спецификацией итерационного типа (типа условия)
- •А) выполнения оператора while ; б) функции примера 8.6
- •1.5. Уточнение корней уравнений
- •1.6. Использование оператора цикла do … while в ицвп
- •1.7. Использование операторов break и continue в ицвп
- •2. Задание
- •2.4.1.2. Пример
- •2.4.1.3. Программа
- •2.4.2.4. Тестирование
- •2.4.3. Задание 3. Использование рекуррентных формул в цикле
- •2.4.3.1. Условие задания
- •Варианты заданий
- •Варианты заданий
- •2.4.3.2. Пример
- •2.4.3.3. Программа
- •Варианты заданий
- •2.4.4.2. Пример
- •2.4.4.3. Программа
- •2.5.1.2. Пример программы
- •2.5.1.3. Программа
- •2.5.1.4. Тестирование
- •2.5.1.5. Типичные ошибки при выполнении работы
- •2.5.2. Задание 2. Накопление произведений в цикле
- •2.5.2.2. Пример 8.4
- •2.5.2.3. Программа
- •2.5.3.2. Пример для варианта 30
- •2.5.3.3. Программа
- •2.5.3.4. Тестирование
- •2.5.4. Задание 4. Вычисление значения функции с помощью разложения в ряд
- •2.5.4.1. Условие задания
- •Варианты заданий
- •2.5.4.2. Пример для варианта 30
- •2.5.4.3. Программа
- •2.5.4.4. Тестирование
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Понятие ицвп 2
2.4.4.2. Пример
Рекомендация: предварительно прочтите раздел ?????
Методом итераций найти корень уравнения
f(x) = arcsin (2x + 1) - х2=0, (8.25)
расположенный на отрезке [-0,5; 0], с абсолютной погрешностью е = 10-4. Определить также число итераций, необходимое для нахождения корня.
Уравнение (8.25) преобразуем, выразив переменную х в явном виде, следующим образом:
arcsin (2x + l) = x2
sin (arcsin (2x +1)) = sin x2
2x + l = sin x2
х = 0,5(sin x2 -1) (8.26)
На основании уравнения (8.26) составляем рекуррентную формулу для уточнения корней методом итераций
(8.27)
Обратите внимание, что процесс преобразования уравнения (8.26) в рекуррентную формулу (8.27) носит формальный характер: переменной х в левой части добавили индекс n+1, а переменной х правой добавили индекс n.
За начальное приближение можно принять любую точку отрезка [-0,5; 0], например, x0 = -0,4.
Алгоритм нахождения корня уравнения (8.25) представляет следующую последовательность действий:
1. Полагаем х0 = - 0,4; еps=0,0001 и n=0.
2. Вычисляем следующее приближение xn+1 , по формуле (8.27).
3. Вычисляем разность d = xn+1 - xn и увеличиваем величину n на единицу.
4. Проверяем условие | d | > еps. Если это условие выполняется, то возвращаемся к вычислению следующего приближения хn+1 по формуле (8.27), т. е. к п. 2. Если условие не выполняется, т. е. | d | ≤ еps, то результатом считаем величину хn+1 и заканчиваем вычисления. При этом значение n будет равно числу выполненных итераций.
В программы вводить переменную с индексом хn нет необходимости, поскольку результатом будет одно число (корень уравнения), а все последовательные приближения в конечном счете не нужны. Кроме того, для каждого значения индекса n хn отводится свое место в памяти вычислительной машины, а это приводит к неразумному использованию памяти. На каждом этапе вычислений необходимо помнить лишь два соседних приближения, поэтому приближение хn обозначим через хn, а приближение хn+1 через хn1. По окончании каждой итерации будем полагать d = хn1 - хn.
Далее приводится программа для решения уравнения (8.25) и результат ее выполнения.
2.4.4.3. Программа
//Лабораторная работа № 8.
// Задание 8-4k
//Уточнение корней уравнений методом итерации
//Вариант 30
//Автор Петрова Мария гр. ИНФО-101
// 10.04.2012
//= = = = = = = = = = = = == = = = == = = = ==
# include <stdio.h>
# include <conio.h>
#include <iostream.h>
# include <math.h>
int main ()
{
int n = 0;
float x, xn, xn1, eps;
// n - счетчик числа итераций;
// xn - значение корня на n-й итерации;
// xn1 - значение корня на n+1-й итерации;
// eps - заданная погрешность
//x - первое приближение корня
cout << " Введите погрешность вычислений для eps: "; cin >> eps;
cout << " Введите первое приближение корня x: "; cin >> x;
xn1=x;
xn = 0;
while(fabs(xn1 - xn)> eps)
{
xn = xn1;
xn1 = 0.5*(sin(xn*xn) -1);
n = n + 1;
}
/* Вывод результата */
cout << "\n Результаты решения:" << endl;
cout << " Погрешность вычислений eps = " << eps << endl;
cout << " Первое приближение корня x = " << x << endl;
cout << " Количество итераций n = " << n << endl;
cout << " Искомый корень = " << xn1 << endl;
getch();
return 0;
}
2.4.4.4. Тестирование
2.5. Задания для выполнения дома
2.5.1. Задание 1. Накопление сумм в цикле
2.5.1.1. Условие задания
Составить программу для вычисления суммы (табл. 8.12) .
В качестве значения для х выбрать любое число, лежащее в диапазоне от 0,1 до 1,2.
Результаты и исходные данные вывести на экран дисплея.
Таблица 8.12
Варианты заданий
№ |
Сумма |
Произведение |
1 |
|
|
2 |
|
|
3 |
|
|
4 |
|
|
5 |
|
|
6 |
|
|
7 |
|
|
8 |
|
|
9 |
|
|
10 |
|
|
11 |
|
|
12 |
|
|
13 |
|
|
14 |
|
|
15 |
|
|
16 |
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
|
|
21 |
|
|
22 |
|
|
23 |
|
|
24 |
|
|
25 |
|
|
26 |
|
|
27 |
|
|
28 |
|
|
29 |
|
|
30 |
|
, k = 20 |