Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

инфа / Новый учебник информатики (3 поколение)

.pdf
Скачиваний:
89
Добавлен:
11.05.2015
Размер:
2.86 Mб
Скачать

111

y(x) 6km x3

Для удобства обозначим искомую приближенную функцию за z(x) и получим средствами mathCAD:

112

Нетрудно видеть, что график функции точного решения (пунктиром) и приближенного (красным) на отрезке от 0 до 10 совпадают, т.е. приближенное решение дает хороший результат.

В некоторых случаях диф.уравнение может быть записано так, что слева будет производная искомой функции, а справа – выражение, содержащее только независимую переменную (от которой зависит искомая функция). В этом случае для получения точного решения (в символьном виде) можно использовать такую мощную возможность

MathCAD как интегрирование.

Чтобы провести интегрирование, нужно выделить интегрируемое выражение и стать курсором мыши на переменную, по которой пойдет интегрирование и дать команду Symbolics/Variable/Integrate. При этом получим результат, естественно, с точностью до произвольной постоянной.

Пример 4-3. Решить диф.уравнение вида

d 2 z(x) 10 2x 12x2 dx2

с начальными условиями вида: z(0) 0, z / (0) 0

Численное решение приводим на рис. 4а (слева).

Для проверки проведем символьное интегрирование данного диф.уравнения с учетом начальных условий (так, как описано выше). Порядок действий приводим на рис 4.б (справа).

113

Given

d2

2

 

z(x)

 

10 2 x 12x

 

 

2

 

dx

 

 

 

 

 

 

z(0)

 

 

0

 

 

 

 

 

 

 

 

 

 

z'(0)

 

 

0

 

 

 

 

 

 

 

 

 

 

z Odesolve (x 1)

 

10

 

 

 

z(x)

5

 

 

 

 

0

0

0.5

1

 

 

 

x

 

Записали правую часть диф.уравнения, выделили его и стали курсором на переменную x

10 2 x 12x2

Даем команду Symbolics/Variable/Integrate и

получаем:

10 x x2 4 x3

Поскольку здесь уравнение 2-го порядка, то снова выделяем и интегрируем

5 x2 13 x3 x4

Присвоим это выражение некоторой y(x)

y(x) 5 x2 13 x3 x4

С учетом начальных условий, это и есть точное решение.

Построим на одном поле осей координат графики численного и символьного решения и получим:

z( x)

y ( x)

 

 

 

x

Рис 4а. Численное решение

Рис. 4б. Символьное решение

уравнения

d 2 z(x)

10 2x 12x2

этого же уравнения

dx2

 

 

 

114

Индивидуальные задания

Решить численно заданные диф.уравнения с указанными начальными условиями и сравнить (графически) с точным решением

Уравнение

 

Нач.значение

Точное решение

4.1

xydx (x 1)dy 0

y(0) 1

y(x) e x (x 1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.2

(x 2 y) y/

1

y(0) 1

y(x)

x

1

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

4.3

(x 2y)dx xdy

y(1) 0

y(x)

 

1

 

 

1

x

 

 

 

 

 

 

 

 

 

 

 

3x2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

4.4

y // y 0

 

y(0) 0, y/ (0) 1

y(x) sin(x)

 

 

 

 

4.5

y // y 0

 

y(0) 1, y/ (0) 0

y(x) cos(x)

 

 

 

 

4.6

y/// y 0

 

y(0) 1, y/ (0) 0

y(x) cos(x)

 

 

 

 

 

 

 

 

 

 

 

y// (0) 1, y/// (0) 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.7

y/// y 0

 

y(0) 0, y/ (0) 1

y(x) sin(x)

 

 

 

 

 

 

 

 

 

 

 

y// (0) 0, y/// (0) 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.8

y/

2 y 0

 

y(0) 1

y(x) e2 x

 

 

 

 

 

 

 

 

4.9

y/

3y 6

 

y(0) 0

y(x) 2e3x 2

 

 

 

 

4.10

y//

k 2 y 0

y(0) 1, y/ (0) k

y(x) cos(kx) sin(kx)

4.11

y/

x y / x

y(1) 0

y(x) x2 x

 

 

 

 

4.12

(xy 1)dx

 

y(0) 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y(x) x

 

1 x2

 

(x2 1)dy 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.13

y

/

xy( y 2)

y(0) 1

y(x)

 

 

(2 / 3)e

x2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(1/ 3)ex

2

 

 

 

 

 

 

 

 

 

 

1

 

 

 

4.14

y/

y 2x 1

y(0) 0

y(x) 2x 1 e x

4.15

y

/

 

2 y / x

 

0

y(1) 1

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

y(x) | x |

 

 

 

 

 

 

 

 

 

 

4.16

(x 1) y/ y 0

y(2) 1

y(x) 1/(x 1)

 

 

 

 

115

4.17

 

dx

 

kx, k 2

x(0) 1

 

 

x(t) e kt

 

 

 

 

 

 

 

 

 

 

dt

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.18

 

dv

 

 

 

 

 

 

 

 

v(0) 0

 

 

 

m

 

 

 

 

 

t

 

 

 

 

 

 

 

 

v a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v(t)

 

 

a(1 e m

)

 

 

 

 

 

 

 

 

 

 

 

 

 

dt

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.19

 

 

 

 

 

 

 

 

 

 

 

s(0) 5

 

 

s(t)

 

 

 

 

 

 

 

 

 

 

 

 

ds

 

 

k

, k

2

 

 

 

25 2kt

 

 

 

 

dt

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.20

 

 

//

 

 

 

 

 

 

 

 

/

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4 y y

 

1

y(0)

 

1, y

(0)

1

y(x) (1

3

x) 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Численно решить диф.уравнение 2-го порядка с указанными начальными условиями, затем найти (символьным интегрированием) точное решение и сравнить результаты (графически).

Уравнение

Нач.условия

 

 

4.1

 

 

2

 

 

 

 

/

 

 

 

 

d

z(x)

12 10x2

z(0)

0, z (0)

0

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.2

 

d

2

z(x)

11 x 11x2

z(0) 0, z /

(0) 0

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.3

 

 

2

 

 

 

 

/

 

 

 

 

d

z(x)

10 2x 12x2

z(0)

0, z (0)

0

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.4

 

d

2

z(x)

9 3x 13x2

z(0) 0, z /

(0) 0

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.5

 

 

2

 

 

 

 

/

 

 

 

 

d

z(x)

8 4x 14x2

z(0)

0, z (0)

0

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.6

 

 

2

 

 

 

 

/

 

 

 

 

d

z(x)

7 5x 15x2

z(0)

0, z (0)

0

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.7

 

 

2

 

 

 

 

/

 

 

 

 

d

z(x)

6 6x 16x2

z(0)

0, z (0)

0

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.8

 

 

2

 

 

 

 

/

 

 

 

 

d

z(x)

4 8x 8x2

z(0)

0, z (0)

0

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.9

 

 

2

 

 

 

 

/

 

 

 

 

d

z(x)

3 9x 19x2

z(0)

0, z (0)

0

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.10

 

 

2

 

 

 

 

/

 

 

 

 

d

z(x)

12 10x2

z(0)

0, z (0)

0

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

116

4.11

 

d

2

z(x)

 

5 7x 17x2

z(0) 0, z /

(0)

0

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.12

 

d

2

z(x)

 

11 x 11x2

z(0)

 

0, z

/

(0)

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.13

 

d

2

z(x)

 

13 3x 13x2

z(0)

 

0, z

/

(0)

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.14

 

d

2

z(x)

 

14 4x 14x2

z(0) 0, z /

(0)

0

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.15

 

d

2

z(x)

 

15 5x 15x2

z(0)

 

0, z

/

(0)

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.16

 

d

2

z(x)

 

16 6x 16x2

z(0)

 

0, z

/

(0)

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.17

 

d

2

z(x)

 

17 7x 17x2

z(0)

 

0, z

/

(0)

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.18

 

d

2

z(x)

 

18 8x 18x2

z(0)

 

0, z

/

(0)

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.19

 

d

2

z(x)

 

19 9x 19x2

z(0) 0, z /

(0)

0

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.20

 

d

2

z(x)

 

20 2x 20x2

z(0)

 

0, z

/

(0)

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

117

ГЛАВА 3. ОСНОВЫ АЛГОРИТМИЗАЦИИ

1. ПОНЯТИЕ ОБ АЛГОРИТМЕ

Как известно, процесс решения задачи с помощью компьютера включает в себя следующие этапы:

1.Постановка задачи.

2.Построение математической модели.

3.Разработка алгоритма (алгоритмизация).

4.Составление программы.

5.Реализация программы на компьютере.

6.Анализ результатов.

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

надлежит алгоритмизации.

Понятие алгоритма относится к числу фундаментальных математических понятий. Здесь мы можем сформулировать определение алгоритма так:

Алгоритм это однозначное, точное и полное описание последовательности элементарных действий для решения данной задачи.

Слово алгоритм происходит от имени арабского математика Аль-Хорезми (точнее – латинизированной формы его имени – Аlgorithmi), который еще в IX в. сформулировал правила выполнения четырех арифметических действий. Эти правила называли правилами Аль-Хорезми (algorithmi), а позднее просто стали называть алгорит-

мом.

Рассмотрим примеры.

Пример 1-1. Составить алгоритм перехода улицы. Стандартным образом этот алгоритм звучит так:

1.Посмотреть налево.

2.Дойти до середины.

3.Посмотреть направо.

4.Переходить далее.

118

Пример 1-2. Составить алгоритм вычисления площади данного треугольника.

1.Опустить высоту на одну из сторон.

2.Измерить длину h этой высоты.

3.Измерить длину a основания, на которое опущена высота h.

4.Перемножить a на h и разделить пополам.

Рис. 3.1. Абу Джафар Мухаммад ибн Муса Аль-Хорезми, скульптурный портрет (790–840 гг.)

Для однозначного и точного исполнения алгоритма он должен удовлетворять ряду требований. Иначе говоря, обладать определенными свойствами. Приведем эти свойства алгоритма.

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

Понятность. Ясно, что, составляя алгоритм, нужно использовать те предписания, которые понятны предполагаемому исполни-

119

телю алгоритма. Бессмысленна, например, для нас инструкция к японскому принтеру Epson, написанная на японском языке.

Определенность. Это свойство означает: алгоритм не должен оставлять места для произвола исполнителя. После выполнения очередного предписания должно быть ясно, какое предписание является следующим. Алгоритм из примера 1.1 не является достаточно определенным, поскольку после «посмотреть налево» может быть и «переждать движущийся автомобиль» и, если его нет, то сразу «дойти до средины».

Массовость. Возможность применения алгоритма не к одной задаче, а к ряду однотипных задач и есть свойство массовости. Алгоритм примера 1.2 является массовым, поскольку применим к любому треугольнику, а пример 1.1 не содержит массового алгоритма (хотя бы потому, что не учитывает особенностей правил дорожного движения Японии и Англии).

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

Существует три основных способа написания алгоритма:

1)на естественном языке (русском, английском и т.д.);

2)на алгоритмическом языке (или языке программирования: Бейсик, Паскаль, C и т.д.);

3)на языке блок-схем.

Рассмотренные выше примеры содержали алгоритмы, написанные на естественном языке. Он служит основным средством общения в человеческом обществе. Разного рода правила, инструкции, рецепты – не что иное, как алгоритмы, записанные на естественном языке. Записью алгоритмов на языке программирования мы пока заниматься не будем (это делается при изучении конкретного языка программирования), а будет рассматривать подробно в следующих параграфах язык блок-схем, который активно используется при записи вычислительных алгоритмов.

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

Элементы блок-схемы располагаются сверху вниз, линии соединения отдельных блоков показывают направление процесса обработки схемы. Каждое такое направление называют ветвью.

Перечислим типы блоков:

120

1. «Начало» и «конец» алгоритма изображаются овалом (рис. 3.2,

а, б):

а б в

Рис. 3.2. Блоки обозначения начала, конца алгоритма и действия

2.Блок «действия» изображается прямоугольником. Внутри его указываются необходимые вычисления и присваивания результата

(рис. 3.2. в).

3.Блок «условия» изображается ромбом. Внутри блока записываются условия выбора направления действия алгоритма (рис. 3.3).

4.Блоки «ввода» и «вывода» информации изображаются параллелограммами. С их помощью вводят исходные данные задачи, выводят результат решения (рис. 3.4).

Рис. 3.3. Блок «условия» Рис. 3.4. Блоки «ввода» и «вывода»

2. ОСНОВНЫЕ СТРУКТУРЫ

Из перечисленных блоков составляют структуры алгоритмов.

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

Алгоритмы «собирают» из трех основных (базовых) структур:

следование, развилка, цикл.