Пояснения к выполнению лабораторной работы 7

Корни найти в два этапа – отделение корней и уточнения корней методом половинного деления. Разработать блок-схему задачи, составить исходный код на языке С++, откомпилировать, получить *.exe-программу, получить решение. Выполнить проверку решения, используя пакет MathCAD.

Этап 1 – метод отделения корней. Функция

f(x) = a * x3 + b∙x2 + c∙x + d

определена на интервале [a,b] (рис. 5.2). Её график можно построить в системе MathCAD. Разобьем интервал [a,b] на N равных частей, каждую из которых обозначим через [a, b]. Если функция f(x) принимает разные знаки на концах интервала, т.е.

f(a)×f(b) < 0,

то внутри этого интервала есть, по крайней мере, один корень уравнения f(x) = 0, т.е. найдется хотя бы одно число ξ, такое, что

f(ξ) = 0.

Алгоритм поиска интервалов [a,b], на которых функция f(x) принимает разные знаки, т.е. имеет один действительный корень, записан для программирования в среде MathCAD и представлен на рисунке 5.3, а. Все интервалы, содержащие корни уравнения, записываются последовательно в массив v. В качестве исходных данных для отделения корней примем функцию f(x), интервал поиска [a,b], число разбиений интервала – N.

Если корень совпал с начальной точкой интервала (f(a) = 0), то он включается в интервал, который увеличивается на величину e. Следующий условный блок (f(a)×f(b) < 0) проверяет знаки на текущем интервале. Если знаки совпадают, то готовится к выборке следующий интервал, в противном случае в массив v заносятся координаты границ интервала, содержащего корень x.


Массив v передается на второй этап – уточнение корней, который может выполняться различными методами – половинного деления, хорд, касательных и др.

Этап 2 – метод уточнения корней.В качестве метода уточнения корней предлагается использовать метод половинного деления. Сущность его следующая: интервал[a, b], содержащий корень (рис. 5.4), делится пополам, и в полученной новой точке х определяется значение функции f(x).

Если f(a) и f(x) имеют одинаковые знаки, то интервал [a, х] отбрасывается и х становится новой точкой a, в противном случае отбрасывается интервал [х, b] и х становится новой точкой b. Новый интервал [a, b] делится пополам, и процесс повторяется до тех пор, пока не будет выполняться условие:

| f(x) |<e.

Алгоритм программы уточнения корней записан для программирования в среде MathCAD и представлен на рисунке 5.3,б.

Программа должна иметь два вложенных цикла:

1) внешний – с фиксированным числом циклов (цикл for), по числу найденных корней программой отделения;

2) внутренний – итерационный (do while) уточнения корней, число циклов подсчитывается счетчиком sh.

Рисунок 5.1 – Структуры, используемые при разработке программ: а – «следование»; б – «развилка» на две ветви; в – «развилка» на n ветвей; г – «повторение»
Должны быть выданы: число корней, значения корней, число итераций при поиске каждого корня. Выполнить проверку путем подстановки значения корня в уравнение и определения погрешности.
Рисунок 5.1 – Структуры, используемые при разработке программ: а – «следование»; б – «развилка» на две ветви; в – «развилка» на n ветвей; г – «повторение»