Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование.doc
Скачиваний:
40
Добавлен:
12.04.2015
Размер:
4.91 Mб
Скачать

Задание на лабораторную работу 7 создание программ с итерационными циклами Цель работы

  1. Научиться разрабатывать алгоритмы цикловых структур и их блок-схемы.

  2. Научиться писать программы с итерационными циклами.

  3. Научиться использовать простейшие средства отладки исходного кода.

  4. Закрепить навыки создания исходного кода, его компиляции и компоновки.

Задание

  1. Найти корни уравнения: a * x3 + b∙x2 + c∙x + d = 0 с точностью до 0.01.

  2. Вместо компонентов a, b, c и d записать заданные значения согласно вашему варианту.

  3. Изучить метод отделения корней, его сущность. Корни уравнения уточнить методом половинного деления.

  4. Разработать блок-схему задачи, составить исходный код на языке С++, откомпилировать, получить *.exe-программу, получить решение. При отладке использовать команду GO до курсора, открыть окно QuickWatch и проанализировать значения переменных.

  5. Выполнить проверку решения с помощью пакета MathCAD, используя функцию polyroots().

Варианты задания

Номер вари­анта

Коэффициенты полинома

Номер вари­анта

Коэффициенты полинома

а

b

c

d

a

b

c

d

1

1

-3

0

2

14

-3

-4

1.5

1

2

2

-5

0

1

15

-1.5

5

4

-10

3

3

-7

2

2

16

-4

10

0

-6

4

2

-6

1

2

17

-4

0

6

-1

5

-2

-3

2

2

18

-1

-1

5

0

6

-0.5

-3

5

1

19

5

-5

-3

1

7

1

-1

-1

0

20

4

-4

-6

1

8

2

-3

-3

3

21

3

-3

-8

5

9

2.5

-4

-2

2

22

-2

-7

-0.2

6

10

10

-10

-5

2

23

-3

-7

-0.5

3

11

2

3

-5

-5

24

-2

-6

2

10

12

2

1

-8

-2

25

-1

-2

2

2

13

1

2

-6

-3

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

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

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

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

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

f()f() < 0,

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

f(ξ) = 0.

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

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

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

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

Еслиf() и f(x) имеют одинаковые знаки, то интервал  х отбрасывается и х становится новой точкой , в противном случае отбрасывается интервал х  и х становится новой точкой . Новый интервал   делится пополам, и процесс повторяется до тех пор, пока не будет выполняться условие:

| f(x) |<.

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

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

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

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

Д

Рисунок 5.1 – Структуры, используемые при разработке программ:

а – «следование»; б – «развилка» на две ветви; в – «развилка» на n ветвей;

г – «повторение»

олжны быть выданы: число корней, значения корней, число итераций при поиске каждого корня. Выполнить проверку путем подстановки значения корня в уравнение и определения погрешности.

Рисунок 5.1 – Структуры, используемые при разработке программ:

а – «следование»; б – «развилка» на две ветви; в – «развилка» на n ветвей;

г – «повторение»