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

Алгоритмизация

.pdf
Скачиваний:
6
Добавлен:
27.02.2016
Размер:
246.69 Кб
Скачать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sin(π / 2 +

 

 

 

 

 

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

k=1

x

 

+ ak

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

bk

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ln(1+

 

 

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k=1

 

 

 

 

 

x

 

 

+1

 

 

 

 

 

 

 

 

 

 

 

де ak

і bk

- упорядковані сукупності із 10 чисел кожний, на інтервалі 1 ≤ x ≤ 3 з кроком x = 0,25.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

У визначення функції у входить новий об’єкт – сума, яка позначається як .

Вираз

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k=1

 

10

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

x

 

 

 

 

 

 

x

 

 

 

 

 

означає лише короткий запис суми

 

 

 

 

 

+

 

 

 

 

 

+ ...+

 

. Змінна k - індекс

 

2

+ a

 

 

 

 

 

2

+ a

 

 

2

+ a

 

 

 

2

k=1

x

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

x

 

2

 

 

 

x

+ a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

сумування – у записі суми змінюється від 1 до 10 з кроком 1. Аналогічно,

 

 

10

 

 

 

 

 

 

bk

 

 

 

 

b1

 

 

 

 

 

 

b2

 

 

 

 

 

 

 

 

 

 

 

b10

 

 

 

 

 

 

ln(1+

 

 

) = ln(1+

 

) + ln(1+

 

) + ...+ ln(1+

 

).

 

 

 

x

2

x

2

x

2

2

 

 

 

 

k=1

 

 

 

 

+1

 

 

 

+1

 

 

 

 

 

+1

 

 

 

 

 

 

 

 

 

 

 

x +

1

 

 

 

Введемо означення

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

x

 

 

10

 

 

 

 

bk

 

 

 

 

 

 

sin(π / 2

+ S1 )

 

 

 

 

 

 

 

 

 

S1 =

 

 

 

 

,S2

= ln(1+

 

 

).Тоді у =

.

 

 

 

 

 

 

 

 

 

2

 

 

 

 

x

2

 

 

 

 

 

 

 

 

 

 

 

 

k=1 x

 

 

+ ak

k=1

 

 

+1

 

 

 

 

 

 

 

 

S2

 

 

 

 

 

 

 

 

 

 

 

 

 

N

І основна наша задача тепер – обчислення сум S1 і S2 . Алгоритм обчислення суми S = fk (x) такий:

k=1

1.Віз мимо початкове значення суми рівне 0: S = 0,

2.Присвоемо індексу сумування початкове значення: k = 1

3.Додамо до S перше доданок і нове значення знову присвоемо S : S = S + fk (x).

4.Збільшемо індекс на 1: k = k +1

5.Якщо k ≤ 10,то переходимо до п.3, інакше закінчити обчислення.

Поступаючи далі аналогічно прикладу 3 і об’єднуючи розглянутий вище алгоритм за алгоритмом побудови таблиці функції, запише одразу блок схеми розв’язування всієї задачи (рис.7).

Рис.7 Блок-схема алгоритму приклада

Початок

Введення

 

x1 , x2 .∆x,{ak }{bk }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x = x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S1

= 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S2

= 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

x

 

 

 

 

 

S1

= S1 +

 

 

 

 

 

 

 

2

+ ak

 

 

 

 

 

 

k=1 x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

bk

 

 

 

S2

= S2 +ln(1+

 

 

)

x

2

 

 

 

k=1

 

 

+1

 

 

 

 

 

 

 

 

 

 

 

 

k = k +1

так

k ≤ 10

ні

y = sin(π / 2 + S1 ) / S2

Вивід x, y

x = x + ∆x

так

ні

 

x x2 кінець

5. ЗАПИС АЛГОРИТМУ НА АЛГОРИТМІЧНІЙ МОВІ.

Алгоритмічні мови близькі до природної мови запису алгоритмів. Однак правила побудови конструкцій в алгоритмічній мові більш жорсткі. Це означає, що алгоритмічні мови допускають меншої різноманітності для описання дій алгоритму, ніж природна мова і звичайна математична символіка, і машина однозначно розуміє конструкцію мови.

Програма , яка створена на алгоритмічній мові, не може бути безпосередньо виконана на EOM, оскільки EOM зрозумілі лише елементарні операції, записані на машинній мові. Переклад програми з алгоритмічної мови на машину здійснюється самою EOM за допомогою спеціальної програми-трансляторі, написаній добре обізнаними з структурою машини програмістами, «закладені» всі правила алгоритмічної мови і способи перетворення різних її конструкцій на машинну мову. Тому при створенні програми на алгоритмічній мові потрібно точно слідувати правилам мови, інакше транслятор не зможе утворити програму на машинній мові або утворить її неправильно.

Найбільше розповсюдженими в теперішній час алгоритмічними мовами (або мовами програмування) є Бейсік, Паскаль,Фортран, Си.

6. ОСНОВНІ ЕТАПИ РОЗВЯЗУВАННЯ ЗАДАЧ НА EOM

Розвязуваня на EOM найрізноманітніших задач: інженерних, економічних, наукових, обробки інформації – має свою специфіку. Але процес розв’язування можна поділити на декілька етапів, властивих для більшості задач.

1.Постановки задачі і побудови математичної моделі. На цьому етапі для опису реального об’єкта або процесу необхідно побудувати його математичну модель, тобто записати системи рівнянь, диференційних рівнянь і т.п., які відображають найважливіші риси об’єкта або процесу. Математична модель дозволяє звести рішення реальної задачі до рішення математичної задачі. Математичні моделі застосовуються не лише в рамках природних наук, але і в економіці, плануванні і прогнозовані.

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

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

3.Розробка програми для EOM. На цьому етапі алгоритм записується на одній із алгоритмічних мов – складається програма. Слід підкреслити, що складання програми не є механічним процесом та інколи вимагає дуже значних зусиль.

4.Налагодження програми. Тут виконується перевірка готової програми шляхом прогонки її на EOM та перевіряється правильність програми.

5.Розвязування задачі на EOM. Виконується рахування за налагодженою програмою з отриманням результатів розв’язування.

Розглянемо приклад розв’язування простої задачі від постановки до отримання результату.

Задача 3. З якою максимальною швидкістю трактор, що розвиває силу тяги Ft = 18кН, може вести оранку плугом массою 0,5 т. Сила опору грунту, що діє на плуг, визначається як Fc = Av + Bv3 , де А = 1270 Нс/м, В = 317 Нс3 / м3

Побудова математичної моделі. Відповідно до другого закону Ньютона запишемо рівняння руху агрегату: ma = F , де m - маса агрегату, a - прискорення, F - сумарна сила, що діє на агрегат. При максимальній швидкості руху прискорення a = 0 . Сумарна дія, що діє на агрегат, являє собою різницю сили тяги трактора(спрямованої вперед) і сили опору грунту (спрямованої

назад): F = F F

= F Av Bv3

.Отримуємо рівняння:

F Fv Bv3

= 0

t

c

t

 

t

 

(1)

 

 

 

 

 

з якого можна визначити максимальну швидкість руху vmax .

Вибір алгоритму. Рівняння (1) – кубічне рівняння відносно v . Його можна розв’язати точно, скориставшись формулами Кардано, але таке розв’язування буде досить громіздке. Простіше розв’язати рівняння наближено, скориставшись простим методом половинного поділу якій детально викладається в багатьох підручниках з численних методів.

Ось у чому полягає його суть. Припустимо, що вдалось знайти відрізок [a,b], в якому розміщене шукане значення кореня x = c рівняння f (x) = 0, тобто a < c < b. Критерієм знаходження кореня у межах відрізку [a,b] є значення функції різних знаків на кінцях відрізка f (a) f (b) < 0. У вигляді початкового наближення кореня приймається середина відрізка с0 = (a + b)/ 2. Далі досліджується значення функції в точках a, b,c0 , тобто на кінцях відрізків [a;c0 ] і [c0;b]. Той відрізок, на кінці якого f (x) приймає значення різних знаків, містить шуканий корень, тому він приймається у вигляді нового відрізка. Другу половину відрізка [a,b], на кінцях якого функція приймає значення однакових знаків, необхідно виключити із подальшого розгляду. У вигляді наступного наближення приймається середина нового ще коротшого відрізка і.т.д.

Процес ділення відрізка навпіл триває доки його довжина набуде менш найнеобхіднішої точності у визначенні кореня. На рис8. представлена блок схема процесу знаходження кореня f (x) = 0 методом ділення відрізка навпіл. У вигляді вхідних данних використовується границі відрізка [a,b] і необхідна точність обчислення корення ε . Звуження відрізка відбувається шляхом зміни межи a або b на тотожне значення середини відрізка (приближення кореня) с.

початок

Введення a,b,ε

 

ya = f (a)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c = (a + b)/ 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yc = f (c)

 

 

b = c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

так

 

 

 

 

 

 

 

ні

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ya yc < 0

 

a c

 

< ε

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

так

 

 

 

 

 

 

 

 

 

 

 

ні

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вивід с

 

 

a = c

 

 

 

 

 

 

кінець

 

 

 

 

Рис .8. Блок-схема методом ділення відрізка навпіл.

Програма на мові Бейсік за використанням стандартної програми методом половинного ділення тепер може бути записана так:

10 DEF FNF(V)=14000-1270*V-317*V^3

20 LET A=0 : LET B=10

30 LET Y1=FNF(A)

40 LET X0=(A+B)/2

50 LEY Y=FNF(X0)

60 IF (ABS(X0-A)<0.001) THEN GOTO 100

70 IF (Y1*Y>0) THEN GOTO 90

80 LET B=X0:GOTO 40

90 LET A=X0:LET Y1=Y:GOTO 40

100 PRINT «V=»;XO

110 STOP

120 END

Увывши программу в EOM і запустивши її на виконання отримаємо результат: vmax = 3,1585 м/сек.11,4 км/год.

Слід відзначити на закінчення, що використання EOM важливе і ефективне для розв’язування тих задач, для яких розроблені адекватні математичні метелі, а також алгоритми дослідження цих моделей. Розробка математичних моделей і алгоритмів здійснюється поки що тільки людиною (можливо з деякою допомогою EOM), а EOM використовуються лише не етапі обчислювань по програмі. Таким чином людина, що хоче розв’язати задачу на EOM повинна не тільки читко сформулювати, її але й детально представити весь хід її розв’язування.

ЗМІСТ

Загальні вказівки

1.Алгоритм та його загальні властивості

2.Запис алгоритму на природній мові

3.Зображення алгоритму у вигляді блок-схем

4.Основні структури алгоритмів

5.Запис алгоритму на алгоритмічній мові

6.Основні етапи розв’язування задач на EOM

В.О. Романов, І.В. Сергєєва

Алгоритми та алгоритмізація

Методичні вказівки для вивчення курсів «Компютерна техніка та програмування» та «Основи інформатики та обчислювальної техніки» очної та заочної форм навчання

Відповідальний за випуск: С.І. Васильєв

Формат паперу 60х84 1/16 Обл. – вид.ар. Тираж – 1000

Різограф TR 1510 N 80654645

Навчально методичний центр по заочній формі навчання у закладах освіти 3 – 4 рівнів акредитації аграрного профілю

Адреса: 310002, м. Харків, вул. Артема 44, кім. 101.