Разработка программы вычисления корней нелинейных уравнений с помощью метода касательных
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
Таким образом, для определения корня уравнения (2.1) по методу Ньютона с точностью E итерационный процесс продолжаем до тех пор, пока не получим:
(2.7)
Если x0 - кратный корень уравнения (2.1), то метод Ньютона имеет линейную сходимость, т. е. сходится со скоростью геометрической прогрессии.
Заметим, что если производная f (х) мало изменяется на [а, b], и ее вычисление громоздко, то итерации можно проводить по формуле:
, n = 1, 2, 3, …(2.8)
Итерационную схему (2.8) называют модифицированным методом Ньютона.
3. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ
3.1 Описание алгоритма и структуры программы
Рассмотрим структуру программы в виде блок-схемы (рис.4.1):
Рис. 4.1 - Структурная схема программы
Описание структуры программы:
С начала работы программы, в блоке №1, вводятся коэффициенты уравнения и максимальное значение степени. После чего, в блоке №2, выводятся на экран уравнение, с помощью функции вывода уравнения, которая будут рассмотрены в подразделе 4.2. После этого, в блоке №3, вводится диапазон, в котором следует искать корень уравнения и задается точность, с которой нужно найти корень. Далее сначала проверяется условие сходимости метода касательных, в блоке №4, если условие не выполняется, то выводится, сообщение о неприменимости метода касательных (блоке №6), и программа завершает свою работу (блок №9), а если выполняется, то потом приближенный корень уточняется методом касательных (блок №5). После нахождения корня уравнения ответ выводится на экран (блок №7). После вывода корня программа предложит снова найти корень в заданном диапазоне (блок №8). В случае согласия весь цикл уточнения приближенного корня начинает свою работу с начала. В случае не согласия программа завершает свою работу (блок №9).
Рассмотрим более подробно некоторые блоки.
Рассмотрим блок № 4.
Этот блок служит для проверки сходимости метода касательных. В начале производятся подсчеты для значения функции f(a) и f(b), эти значения присваиваются соответственно переменным f_a и f_b. Затем производятся подсчеты для производной первого порядка, значения f(a) f(b) присваиваются переменным f_a_1 и f_b_1 соответственно. После этого производятся подсчеты для производной второго порядка, значения f(a) f(b) присваиваются переменным f_a_2 и f_b_2 соответственно. После произведенных действий проверяется условие 2.4, если это условие не выполняется, то программа выводит сообщение о неприменимости метода касательных и инициализирует выход.
Рассмотрим блок № 5.
Этот блок служит для уточнения корня уравнения методом касательных. Рассмотрим блок-схему алгоритма уточнения корня уравнения методом касательных(рис.4.3):
Рис. 4.3 - Блок-схема алгоритма уточнения корня уравнения методом касательных
3.2 Описание разработанных функций
Функция вывода набора символов:charline(char ch, int n) - c помощью данной функции выводится заданное количество определенных символов, где ch - задаваемый символ, а n - количество этих символов.
Функция вывода уравнения:cout_equation(int coef[256], int power) - c помощью данной функции на экран выводится уравнение, где coef - массив коэффициентов заданного уравнения, а power - максимальное значение степени.
Функция подсчёта значения функции:f(int array[256], int n, float x, float func[2]) - c помощью данной функции подсчитывается значение функции, где array - массив коэффициентов заданного уравнения, n - максимальное значение степени, x - значение которое нужно подсчитать, func - массив в который будет записано значение функции. Полученное значение записывается в массив func и присваивается значению func[0].
Функция подсчёта значения производной первого порядка:derivative_1(int array[256], int n, float x, float func[2]) - c помощью данной функции подсчитывается значение производной первого порядка, где array - массив коэффициентов заданного уравнения, n - максимальное значение степени, x - значение которое нужно подсчитать, func - массив в который будет записано значение функции. Полученное значение записывается в массив func и присваивается значению func[1].
Функция подсчёта значения производной второго порядка:derivative_2(int array[256], int n, float x, float func[2]) - c помощью данной функции подсчитывается значение производной второго порядка, где array - массив коэффициентов заданного уравнения, n - максимальное значение степени, x - значение которое нужно подсчитать, func - массив в который будет записано значение функции. Полученное значение записывается в массив func и присваивается значению func[2].
.3 Описание использованных программных средств
При написании программы часто использовались функции. Функция представляет собой именованное объединение группы операторов. Это объединение может быть вызвано из других частей программы.
Наиболее важной причиной использования функций служит необходимость концептуализировать структуру программы, то есть сократить размер программного кода. Любая последовательность операторов, встречающаяся в программе более одного раза, будучи вынесенной, в отдельную функцию, сокращает размер программы. Код функции хранится только в одной области памяти.
Для использования дополнительных функций обязательными являются три компонента: объявление функции, её определение и вызов. Не возможно использовать переменную, не сообщив компилятору информацию о ней, и не возможно обратится к функции, не указав в программе её необходимые атрибуты. Есть два способа описать функцию: объявить и определить функцию до первого её вызова. Объявление