Вы находитесь на странице: 1из 11

Министерство образования и науки Кыргызской Республики

Кыргызский государственный технический университет


им. И. Раззакова

Факультет информационных технологий


Кафедра «Программное обеспечение компьютерных систем»

ОТЧЕТ

Дисциплина «Процесс проектирования и разработки ПО»


Лабораторная работа №3
Тема: «Метод простых итераций»

Выполнил: студент группы


ПИ(б)-3-18 Соронов Эрмек
Проверила: Мукашова Ж.С.

Бишкек – 2020
Содержание
Практическое
1. Постановка задачи..........................................................................................................................3
2. Спецификация требований............................................................................................................3
3. Входные данные и Выходные данные.........................................................................................3
1. Входные данные...........................................................................................................................3
2. Выходные данные........................................................................................................................3
4. График функции..............................................................................................................................3
5. Шаги решения (алгоритм).............................................................................................................4
6. Проектирование алгоритма (блок-схема)...................................................................................4
7. Реализация алгоритма....................................................................................................................5
Результат работы программы...........................................................................................................6
Индивидуальное
1. Постановка задачи..........................................................................................................................7
2. Спецификация требований............................................................................................................7
3. Входные данные и Выходные данные.........................................................................................7
1. Входные данные...........................................................................................................................7
2. Выходные данные........................................................................................................................7
4. График функции..............................................................................................................................7
5. Шаги решения (алгоритм).............................................................................................................8
6. Проектирование алгоритма (блок-схема)...................................................................................8
7. Реализация алгоритма....................................................................................................................9
Результат работы программы.........................................................................................................10
Вывод.......................................................................................................................................................10
Задание №1 (Практическое)
1. Постановка задачи
Решить уравнение методом простых итераций: x2-cosx=0, x <0 с точностью
e=0.01.

2. Спецификация требований
 Вычисление корней алгебраического уравнения методом простых итераций
 Вывод промежуточных данных нахождения решения
 Вывод корня(ей) уравнения
 Вывод φ(х)
 Сравнение xi-xi-1> e
3. Входные данные и Выходные данные
1. Входные данные
 Начальное значение- x0
 Погрешность e
2. Выходные данные
 n - номер итерации
 Начальное значения x0
 Промежуточные значения x
 φ(х) - при всех значениях x
 Разница xi-xi-1
4. График функции x0=1,5
Рис. 1.1 График функции x2-cosx=0
5. Шаги решения (алгоритм)

Рис. 1.2 Формула и итерации


 Определить по графику x0
 Вычислить φ(x0)
 Присвоить xn = xn-1
 Вычислить φ(xn)
 Сравнить xi-xi-1 с e=0.01
6. Проектирование алгоритма (блок-схема)

Рис. 1.3 Activity diagram


7. Реализация алгоритма

#include<iostream>//Стандартная библиотека потоков cin и cout и тд


#include<iomanip>//Библиотек для корректировки вывода в консоль

using namespace std;//пространство имен std

long double fid(long double x) {//функция вычисления производной fi от x^2 – cos(x)


return pow(x,2)-cos(x);
}

int main() {
setlocale(0, "");
long double x0 = 0, e = 0;
cout << "Введите x0 ->";
cin >> x0;//Ввод начального x0
cout << "Введите e ->";
cin >> e;//Ввод точности
long double x = x0, fxx = fid(x), raz = 1, y = x0;//Вспомогательные переменные
int n = 0;
cout << "=========================================";
cout << "=============================================\n";
cout << setw(5) << "n" << setw(15) << "X" << setw(17) << "ф(X)" << setw(20) <<
"Xi-Xi-1" << endl;
cout << "=========================================";
cout << "=============================================\n";
cout << setw(5) << n << setw(15) << x << setw(17) << fxx << setw(20) << endl;
n++;
do {//цикл для нахождения промежуточных значений x, f(x), fi(x) и разницы
(difference)
x = fxx;//Запоминаем предыдущую производную
fxx = fid(x);//Находим новую
raz = fabs(x - y);//Находим разницу
y = x;//Запоминаем x
cout << setw(5) << n << setw(15) << x << setw(17) << fxx << setw(20) << raz
<< endl;
n++;//Номер итерации +1
} while (raz > e);//Цикл идет до тех пор пока разница иксов больше точности
cout << "=========================================";
cout << "=============================================\n";
cout << "Корень уравнения -> (x^2)-cos(x)=0, где x<0: " << x << endl;//Вывод корня
(точка остановы)
cout << "=========================================";
cout << "=============================================\n";
system("pause>null");
return 0;
}
Результат работы программы

Рис. 1.4 Вывод программы


Задание №2 (Индивидуальное – 7 вариант)
1. Постановка задачи
Решить уравнение методом простых итераций: x-sinx=0, x <0 с точностью
e=0.01.
2. Спецификация требований
 Вычисление корней алгебраического уравнения методом простых итераций
 Вывод промежуточных данных нахождения решения
 Вывод корня(ей) уравнения
 Вывод φ(х)
 Сравнение xi-xi-1> e
3. Входные данные и Выходные данные
1. Входные данные
 Начальное значение- x0
 Погрешность e
2. Выходные данные
 n - номер итерации
 Начальное значения x0
 Промежуточные значения x
 φ(х) - при всех значениях x
 Разница xi-xi-1
4. График функции x0=10

Рис. 2.1 График функции x-sinx=0


5. Шаги решения (алгоритм)

Рис. 2.2 Формула и итерации


 Определить по графику x0
 Вычислить φ(x0)
 Присвоить xn = xn-1
 Вычислить φ(xn)
 Сравнить xi-xi-1 с e=0.01
6. Проектирование алгоритма (блок-схема)

Рис. 2.3 Activity diagram


7. Реализация алгоритма

#include<iostream>//Стандартная библиотека потоков cin и cout и тд


#include<iomanip>//Библиотек для корректировки вывода в консоль
using namespace std;//пространство имен std

long double fid(long double x) {//функция вычисления производной fi от x – sin(x)


return x-sin(x);
}

int main() {
setlocale(0, "");
long double x0 = 0, e = 0;
cout << "Введите x0 ->";
cin >> x0;//Ввод начального x0
cout << "Введите e ->";
cin >> e;//Ввод точности
long double x = x0, fxx = fid(x), raz = 1, y = x0;//Вспомогательные переменные
int n = 0;
cout << "=========================================";
cout << "=============================================\n";
cout << setw(5) << "n" << setw(15) << "X" << setw(17) << "ф(X)" << setw(20) <<
"Xi-Xi-1" << endl;
cout << "=========================================";
cout << "=============================================\n";
cout << setw(5) << n << setw(15) << x << setw(17) << fxx << setw(20) << endl;
n++;
do {//цикл для нахождения промежуточных значений x, f(x), fi(x) и разницы
(difference)
x = fxx;//Запоминаем предыдущую производную
fxx = fid(x);//Находим новую
raz = fabs(x - y);//Находим разницу
y = x;//Запоминаем x
cout << setw(5) << n << setw(15) << x << setw(17) << fxx << setw(20) << raz
<< endl;
n++;//Номер итерации +1
} while (raz > e);//Цикл идет до тех пор пока разница иксов больше точности
cout << "=========================================";
cout << "=============================================\n";
cout << "Корень уравнения -> x-sin(x)=0, где x<0: " << x << endl;//Вывод корня
(точка остановы)
cout << "=========================================";
cout << "=============================================\n";
system("pause>null");
return 0;
}

Результат работы программы


Рис. 2.4 Вывод программы

Вывод
Метод простых итерации так же позволяет найти корень уравнения, так же, как
и в методе касательных задается один начальный параметр x0. Прост в
реализации и удобен в использовании.

Вам также может понравиться