
- •Часть 2. Основы программирования
- •Часть 2. Основы программирования
- •Содержание
- •Предисловие
- •Лабораторная работа 21 Подставляемые (встраиваемые) функции. Перегрузка функций
- •Лабораторная работа 22 Производные типы. Тип указатель: указатели на объекты
- •Лабораторная работа 23 Тип указатель: указатели на функции
- •Лабораторная работа 24 Решение задач с использованием указателей
- •Лабораторная работа 25 Символьные данные и строки
- •Лабораторная работа 26 Функции для работы со строками
- •Лабораторная работа 27 Решение задач на строки
- •Лабораторная работа 28 Массивы: одномерные массивы
- •Лабораторная работа 29 Одномерные массивы: задачи поиска, замены и перестановок элементов массива
- •Лабораторная работа 30 Одномерные массивы: задачи сортировок элементов массива
- •Лабораторная работа 31 Двумерные массивы. Задачи поиска, замены и суммирования элементов двумерного массива
- •Лабораторная работа 32 Двумерные массивы. Задачи сортировок и перестановок в двумерных массивах
- •Индивидуальные задания Требования к оформлению индивидуальных заданий
- •Задание 1. Указатели
- •Задание 2. Перегрузка функций
- •Задание 3. Строки
- •Задание 4. Одномерный массив: преобразование массива
- •Задание 5. Одномерный массив: сортировка массива
- •Задание 6. Двумерный массив
- •Литература
- •Часть 2. Основы программирования
Индивидуальные задания Требования к оформлению индивидуальных заданий
ФИО автора, номер варианта (определяется по журналу) и условие задачи должны выводится на экран при выполнении программы.
/*Назначение: Программа вычисляет длину окружности
и площадь круга по радиусу
Входные данные:
имя переменной: Radius
назначение: хранит введенный радиус
тип данных: float - действительное число
Выходные данные:
имя переменной: len
назначение: содержит длину окружности
тип данных: float - действительное число
имя переменной: Skruga
назначение: содержит площадь круга
тип данных: float - действительное число
Вызываемые модули: stdio.h - для работы с экраном при
форматированном вводе-выводе
Автор: Иванов И.И.*/
Файлы с программами должны называться следующим образом: V*N*.cpp,
где V* – Ваш вариант (V01...V26),
N* – номер задачи (N1...N8).
(Например, V03N5.cpp – вариант номер 3, задание номер 5).
Задачи сдаются индивидуально преподавателю.
Задачи, оформленные не по правилам, рассматриваться не будут.
Задание 1. Указатели
Решите уравнение указанным в варианте методом. Функцию передать как параметр с помощью указателя.
Численные методы решения уравнений
Довольно часто на практике приходится решать уравнения вида:
(1)
где
функция
определена и непрерывна на некотором
конечном или бесконечном интервале
< x < .
Всякое значение
такое, что
,
называется корнем уравнения, а нахождение
этого значения и есть решение уравнения.
На практике в большинстве случаев найти точное решение возникшей математической задачи не удается. Поэтому важное значение приобрели численные методы, позволяющие найти приближенное значение корня. Под численными методами подразумеваются методы решения задач, сводящиеся к арифметическим и некоторым логическим действиям над числами, т.е. к тем действиям, которые выполняет компьютер.
Существует множество численных методов решения уравнений вида (1). Рассмотрим только три из них:
метод итераций;
метод Ньютона;
метод половинного деления.
Метод итераций
Представим уравнение в виде:
(2)
Это уравнение
получается выделением x
из уравнения
и переносом того, что осталось, т.е.
,
в левую часть уравнения. Иначе можно
получить уравнение (2) следующим способом:
левую и правую часть уравнения (1)
умножить на произвольную константу
и прибавить к левой и правой части х,
т.е. получаем уравнение вида:
(3)
где
.
На заданном отрезке [a; b] выберем точку х0 – нулевое приближение – и найдем
,
потом найдем:
,
и т.д.
Таким образом, процесс нахождения корня уравнения сводится к последовательному вычислению чисел:
n =
1, 2, 3..... .
Этот процесс называется методом итераций.
Если на отрезке [a; b] выполнено условие:
,
то процесс итераций сходится, т.е.
Процесс итераций продолжается до тех пор, пока
,
где
–
заданная абсолютная погрешность корня
х.
При этом будет выполняться:
.
Метод Ньютона
Пусть уравнение
имеет один корень на отрезке [a;
b],
причем
и
определены, непрерывны и сохраняют
постоянные знаки на отрезке [a;
b].
Выберем на отрезке[a; b] произвольную точку х0 – нулевое приближение. Затем найдем:
,
потом
Таким образом, процесс нахождения корня уравнения сводится к вычислению чисел xn по формуле:
n =
1, 2, 3.....
Этот процесс называется методом Ньютона.
Процесс вычисления продолжается до тех пор, пока не будет выполнено условие:
,
где – заданная абсолютная погрешность корня х.
Точку х0 необходимо выбирать так, чтобы выполнялось условие:
,
иначе метод не будет сходиться.
Метод половинного деления
Пусть уравнение имеет один корень на отрезке [a, b]. Функция непрерывна на отрезке [a, b].
Метод половинного деления заключается в следующем:
Сначала выбираем начальное приближение, деля отрезок пополам, т.е.
.
Если
,
то x0
является корнем уравнения. Если
,
то выбираем тот из отрезков, на концах
которого функция имеет противоположные
знаки. Полученный отрезок снова делим
пополам и выполняем действия сначала
и т.д.
Процесс деления отрезка продолжаем до тех пор, пока длина отрезка, на концах которого функция имеет противоположные знаки, не будет меньше заданной точности , т.е. пока не будет выполняться условие:
.
Варианты задания
№ |
Уравнение |
Отрезок, содержащий корень |
Метод |
Значение корня с точностью 10-4 |
1 |
|
[2;3] |
Итераций |
2,2985 |
2 |
|
[0;2] |
Ньютона |
1,0001 |
3 |
|
[0;0,85] |
Итераций |
0,2624 |
4 |
|
[1;2] |
Ньютона |
1,1183 |
5 |
|
[0;8] |
Половинного деления |
0,3333 |
6 |
|
[0;1] |
Итераций |
0,5629 |
7 |
|
[2;4] |
Ньютона |
3,2300 |
8 |
|
[1;2] |
Половинного деления |
1,8756 |
9 |
|
[0;1] |
Итераций |
0,7672 |
10 |
|
[0;1] |
Ньютона |
0,8814 |
11 |
|
[1;3] |
Половинного деления |
1,3749 |
12 |
|
[1,2;2] |
Итераций |
1,3077 |
13 |
|
[3;4] |
Ньютона |
3,5265 |
14 |
|
[1;2] |
Половинного деления |
1,0804 |
15 |
|
[0;1,5] |
Итераций |
1,1474 |
16 |
|
[1;3] |
Ньютона |
2,0692 |
17 |
|
[0;1] |
Половинного деления |
0,5768 |
18 |
|
[0,5;1] |
Итераций |
0,9892 |
19 |
|
[1;3] |
Ньютона |
1,8832 |
20 |
|
[0;1] |
Половинного деления |
0,1010 |
21 |
|
[2;3] |
Итераций |
2,0267 |
22 |
|
[0,4;1] |
Ньютона |
0,6533 |
23 |
|
[-1;0] |
Половинного деления |
-0,2877 |
24 |
|
[2;3] |
Итераций |
2,8459 |
25 |
|
[4;6] |
Ньютона |
4,0002 |
26 |
|
[0;2] |
Половинного деления |
0,5398 |
27 |
|
[4;7] |
Итераций |
6,0000 |
28 |
|
[1;2] |
Ньютона |
1,5708 |