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

Министерство науки и высшего образования Российской Федерации

ФГАОУ ВО «Севастопольский государственный университет»


Институт радиоэлектроники и информационной безопасности

Кафедра «Радиоэлектроника и телекоммуникации»

ОТЧЁТ
по контрольной работе №2
«Программная реализация алгоритмов решения
нелинейных уравнений»
по дисциплине
«Программирование»

Выполнил: студент гр. РС/с-19-1-о


Зуев О. Д.
Вариант: M6N8
Защитил с оценкой: ______
Принял: ст. пр. Дурманов М.А.

Севастополь
2020
СОДЕРЖАНИЕ

1. Описание контрольной работы 3


1.1. Цель работы 3
1.2. Текст индивидуального задания 3
1.3. Теоретические сведения 4
2. Выполнение контрольной работы 7
2.3. Математическое обоснование задачи 7
2.2. Графическое решение задачи 7
2.3. Структурная схема алгоритма работы программы 8
2.4. Текст программы 9
2.5. Таблица переменных 10
2.6. Результаты выполнения программы 10
Выводы 12

2
1.ОПИСАНИЕ КОНТРОЛЬНОЙ РАБОТЫ
1.1. Цель работы
Изучить численные методы решения нелинейных уравнений и
исследовать эффективность их применения.
Получить практические навыки составления программ на языке
программирования C/C++, реализующих алгоритмы решения нелинейных
уравнений.
1.2. Текст индивидуального задания
Составить структурную схему алгоритма и написать на языке C/C++
программу нахождения корня нелинейного уравнения f1 x  f 2 x
заданным методом на заданном интервале аргумента x (т.е. приxн  x xк).
Программа должна производить подсчет количества итераций и выводить на
экран промежуточные значения номера итерации и корня нелинейного
уравнения на каждой итерации. Результаты вычисления корня следует
выводить на дисплей в формате с плавающей точкой.
Исходные данные для выполнения задания выбираются из таблиц 1.1 и
1.2.
Таблица 1.1 — Исходные данные для выполнения задания (M)

Таблица 1.2 — Исходные данные для выполнения задания (N)

3
1.3. Теоретические сведения
1.3.1. Общие положения
Решение нелинейных (в частности, трансцендентных) уравнений вида

f(x)=0 (1.1)

или

f1(x)=f2(x) (1.2)

заключается в нахождении одного или всех корней на заданном отрезке


[xн,xк], на котором, имеются корни уравнения.

Графическая интерпретация решения уравнений вида (1.1) сводится к


поиску аргумента x0 , при котором функция fx пересекает ось абсцисс
(рисунок 1.1, а). Решение уравнений вида (1.2) интерпретируется как поиск
точки пересечения функций f1(x) и f2(x) (рисунок 1.1, б).

Рисунок 1.1 – Графическая интерпретация решений

1.3.2. Метод хорд


Метод предполагает выполнение следующих действий (рисунок 1.2):
1) На оси абсцисс выбирать точки a и b таким образом, чтобы значения
функции F(a) и F(b) имели разные знаки, т.е.
F(a) F(b) < 0 (1.3)
Корень уравнения лежит между этими точками (рисунок 1.3).
2) Точки F(a) и F(b) соединить хордой и вычислить точку пересечения
хорды с осью абсцисс по формуле
F ( a ) b−F ( b ) a
x n= 0 (1.4)
F ( a )−F ( b )

4
3) Вычислить значение F(xn).
4) Определить часть отрезка на оси абсцисс, содержащую корень
уравнения (точку пересечения с осью абсцисс):
— Если F(a) F(xn) > 0, то корень лежит между точками xn и b, и левую
границу a следует перенести в точку xn (рисунок 1.3,а)
a = xn (1.5)
и вычислить новое значение точки пересечения следующей хорды с осью
абсцисс по формуле
F ( xn )
x n+1=x n − ( b−xn ) ; (1.6)
F ( b )−F ( x n )
— Если F(a) F( x n) < 0 и F(xn) F(b) > 0, то корень лежит между точками a
и xn, и правую границу b необходимо перенести в точку xn (рисунок 2.7,б)
b = xn (1.7)
и вычислить новое значение точки пересечения следующей хорды с осью
абсцисс по формуле
F ( xn )
x n+1=x n − ( x −a ) . (1.8)
F ( x n ) −F ( a ) n
5) Проверить условие
|x n+1 −xn|≥ ε , (1.9)
где ε — заданная точность вычисления корня нелинейного уравнения.

Если условие (1.9) выполняется, то перейти к пункту 3 и повторить


вычисления, подставляя в F(x) последнее вычисленное значение аргумента
xn+1, в противном случае, т.е. когда условие (1.9) не выполняется,
заканчиваем вычисления и считаем, что найденное значение xn+1 является
корнем уравнения с точностью ε :

x 0 ≈ x n +1 ± ε .

5
Рисунок 1.2 – Алгоритм метода хорд

Рисунок 1.3 – Графическая интерпретация метода хорд

6
2.ВЫПОЛНЕНИЕ КОНТРОЛЬНОЙ РАБОТЫ
2.1. Математическое обоснование задачи
f1(x) = e-0.1x + x
f2(x) = 4 – 5.7x
Интервал: [-2;2.2]
Необходимые математические преобразования находятся в
теоретической части.
2.2. Графическое решение задачи

Рисунок 2.1 — Графическое решение задачи в Mathcad

7
2.3. Структурная схема алгоритма работы программы
Структурная схема алгоритма решения задачи представлена на рис. 2.2.

Рисунок 2.2 —Схема алгоритма решения задачи

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

#include <iostream>
#include <cmath>
#include <locale>
using namespace std;
double f(double x)
{
return exp(-0.1*x)+x-4+5.7*x;
}

int main()
{
setlocale(LC_ALL,"Russian");
double a, b, x, eps; int n = 0;
system("cls");// очистка экрана
cout << "Введите начальное значение: ", cin >> a;
cout << "Введите конечное значение: ", cin >> b;
cout << "Введите значениe точности расчета: ", cin >> eps;
cout << endl;
while(fabs(f(b)) > eps)
{
x = (f(a)*b-f(b)*a)/(f(a)-f(b));
if (f(a)*f(x) > 0 && f(x)*f(b) < 0){
a = x;
x = x - f(x)/(f(b)-f(x))*(b-x);
} else
if (f(a)*f(x) < 0 && f(x)*f(b) > 0){
b = x;
x = x - f(x)/(f(x)-f(a))*(x-a);
} else break;
n++;
cout << "Номер итерации: " << n << endl;
cout << "Корень уравнения x = " << x << endl << endl;
}
system ("pause");
}

9
2.5. Таблица переменных
В программе использованы переменные, представленные в таблице 2.3.
Таблица 2.1 — Используемые переменные
Переменная Тип Значение
a double Начальное значение функции
b double Конечное значение функции
eps double Точность расчёта

2.6. Результаты выполнения программы


Результаты выполнения программы представлены на рисунке 2.3.

10
Рисунок 2.3 —Результат выполнения программы

11
ВЫВОДЫ
В ходе выполнения задания контрольной работы были изучены
численные методы решения нелинейных уравнений, в частности метод хорд,
а также исследована эффективность их применения. Значение корня
уравнения становится точнее, если задавать большую точность вычислений.
При работе программы ошибок не обнаружено, примерное значение,
полученное графически с помощью программы Mathcad, совпало со
значением, полученным с помощью написанной программы.

12