Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
osnovy_programmirovanija_v_srede_lazarus.pdf
Скачиваний:
185
Добавлен:
18.03.2015
Размер:
6.53 Mб
Скачать

1.3 Примеры разработки алгоритмов

____________________________________________________________________

1.3. Примеры разработки алгоритмов

1.3.1 Решение квадратного уравнения.

Найти корни квадратного уравнения AX2+BX+C=0, коэффициенты A, B, C за-

даны и вводятся с клавиатуры.

Из элементарной математики известна формула для нахождения корней этого уравнения:

X1,2

B B 2 4 AC

,

(1.8)

2 A

 

 

 

Однако эта формула применима только для случая действительных корней.

Но мы считаем, что коэффициенты A, B, C могут быть произвольными, поэтому необходимо произвести анализ задачи и определить возможные варианты вы-

числений. Анализ задачи и определение возможных ситуаций, возникающих в ходе вычислений, является одной из важнейших функций программиста. По-

пытка запрограммировать только формулу (1.8) может привести к неопреде-

ленной ситуации, если A=0, или B2-4AC<0. Именно программист должен преду-

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

Если A=0, это означает, что исходное уравнение выродилось в линейное

BX+C=0. В этом случае решением его будет

X

B

,

(1.9.)

C

 

 

 

Если дискриминант B2-4AC<0, уравнение будет иметь комплексные со-

пряженные корни. Каждое комплексное число можно представить парой дейст-

вительных чисел, одно из которых изображает действительную часть, другое -

мнимую часть комплексного числа.

Действительные части обоих корней равны.

Re X1 Re X 2

B

,

(1.10)

2A

 

 

 

32

Глава 1 Основы программирования

____________________________________________________________________

А мнимые будут иметь разные знаки, и вычисляться по формуле

Im X 1

(B 2

4 AC)

 

,

 

 

 

Im X

 

 

Im X1 ,

(1.11)

 

2 A

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Исходя из этих рассуждений, нетрудно составить блок-схему алгоритма

вычисления корней квадратного уравнения:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A, B, C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D=B2-4AC

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

D<0

 

 

 

 

X

 

 

 

 

 

 

B

 

 

нет

 

REX1

 

 

 

 

2 A

 

 

 

 

 

 

 

B

D

 

B

X1

REX 2

2 A

 

2 A

 

 

 

 

 

 

B

D

 

D

X

 

IMX1

2

2 A

 

2 A

 

 

 

 

 

 

 

 

IMX 2

D

 

 

 

 

2 A

X1, X2

 

 

 

 

 

 

 

 

ReX1, ReX2,

 

 

 

 

ImX1, ImX2

 

 

 

 

конец

Рис. 1.9. Алгоритм вычисления корней квадратного уравнения

33

1.3 Примеры разработки алгоритмов

____________________________________________________________________

1.3.2 Вычисление интегралов

b

Вычислить интеграл f (x)dx по формуле Симпсона с точностью 10 5 .

a

Формула Симпсона, как известно, имеет вид [1,2]:

b

b a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x)dx

( y

 

y

 

2( y

 

y

 

... y

 

) 4( y

y

 

... y

 

))

,

(1.12)

 

0

n

2

4

n 2

3

n 1

 

n 3

 

 

 

 

1

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для достижения требуемой точности применим метод двойного пересчета,

суть которого заключается в следующем. Пусть n=4 – число точек разбиения интервала (a, b).

Вычисляем интеграл I4. Затем увеличиваем n в два раза, (n=8) и вычисляем

I8.

Если |I4-I8|,то требуемая точность достигнута. В качестве результата бе-

рем I8. Если же |I4-I8|> , то снова увеличиваем n в два раза (n=16) вычисляем I16,

затем если |I8-I16|, то точность достигнута. Если нет, то повторяем вышеука-

занный процесс до достижения требуемой точности. Блок-схема алгоритма вы-

числения интеграла по формуле Симпсона методом двойного пересчета будет выглядеть следующим образом:

34

Глава 1 Основы программирования

____________________________________________________________________

K=1

S1=S

H=H/2

Начало

A, B, N,

K=0

H=(B-A)/N

X=A

X=X+H

S=0

S=S+f(x)+2f(X+H)

X=X+2H

да

X<B-H

нет

S=2S

S= H3 (f(A)+f(B)+S)

нет

K=1

да

|S1-S|≤

нет

да

S

Конец

Рис.1.10. Алгоритм вычисления определенного интеграла по формуле Симпсона

35

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]