Навчально-методичний посібник Частина 1


НазваНавчально-методичний посібник Частина 1
Сторінка4/9
Дата25.04.2013
Розмір0.98 Mb.
ТипНавчально-методичний посібник
obuch.com.ua > Математика > Навчально-методичний посібник
1   2   3   4   5   6   7   8   9
§3. Блок-схеми алгоритмів


Блок-схемаце графічний запис алгоритму, доповнений елементами словесного запису.


Кожний пункт алгоритму зображається на схемі деякою геометричною фігурою – блоком (блоковим символом), причому вигляд блоків залежить від типу виконуваних дій. Блоки зображають різними геометричними фігурами. Блоки на схемах з’єднуються лініями потоку інформації. Основний напрям потоку інформації йде зверху донизу і зліва направо.

Відповідно блоку лінії потоку можуть бути вхідними і вихідними:

  • кількість вхідних ліній для кожного блоку необмежена;

  • вихідна лінія може були лише одна;

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

Через велику кількість ліній перетину, їх значної довжини і багаторазових змін напряму схема наочно не сприймається, тому для наочнішого сприйняття людиною припустимо робити розрив лінії потоку інформації з розміщенням на обох кінцях розриву спеціального символу – з’єднувача. Всередині поля з’єднувачів, які позначають розрив однієї лінії, ставиться однакове маркування окремою літерою або літерно-цифровою координатою блоку, до якого підходить лінія потоку. Якщо схему алгоритмів розміщено на кількох аркушах, то перехід ліній потоку з одного аркуша на інший позначають за допомогою символа «міжстроковий з’єднувач». При цьому на аркуші з блоком-джерелом з’єднувач має номер аркуша й координати блока-приймача, а на аркуші з блоком-приймачем – з’єднувач з номером аркуша і координатами блока-джерела. Всередині блоків алгоритму і поруч з ними роблять записи і позначення (для уточнення виконуваних ними функцій) так, щоб їх можна було читати зліва направо і зверху вниз незалежно від напряму потоку. Порядкові номери блоків ставлять у їхній верхній частині (на розриві контуру). В таблиці 1 наведено умовні графічні позначення, що застосовуються під час складання блок-схем алгоритмів.

Використання блок-схем дає змогу наочніше бачити роботу алгоритму, що особливо зручно для написання складних алгоритмів.

Наведемо приклад блок-схеми алгоритму (схема 8) «Розв’язування квадратного рівняння».



Контрольні запитання

1.Що таке блок-схема?

2.Назвіть правила складання блок-схем.

3.Назвіть умовні графічні позначення, що застосовуються під час складання блок-схем алгоритмів.

4.З якою метою складається блок-схема?

5.Скільки входів і виходів має блок розгалуження?

6.У яких випадках припустимо виконувати розрив лінії потоку інформації і який спеціальний символ для цього використовують?

7.У якому місці ставлять порядкові номери блоків?
Вправи

Вправа 1. Складіть блок-схему алгоритму знаходження суми, різниці, добутку і частки двох чисел.

Вправа 2. Складіть блок-схему алгоритму: «Розв’язування лінійного рівняння ax=b».

Вправа 3. Складіть блок-схему алгоритму знаходження суми всіх тризначних чисел, використовуючи розглянуті команди організації циклу.

Вправа 4. Складіть блок-схему алгоритму знаходження кількості тризначних чисел, сума цифр яких дорівнює заданому числу.

Вправа 5. Складіть блок-схему алгоритму: «Розв’язування біквадратного рівняння».

Таблиця 1.



§4. Покрокове виконання алгоритму

Для того, щоб переконатися, що алгоритм працює правильно, необхідно виконати його покроково, за конкретних значень даних. Це можна виконати або «вручну», або за допомогою комп’ютера.

Розглянемо форму «ручного» виконання алгоритму. За такою формою контролю людина формально виконує команди алгоритму і результати заносить у таблицю, складену спеціальним чином. Покажемо на конкретному прикладі покрокове виконання алгоритму для визначення, чи є задане натуральне число простим.

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

Алгоритм визначення виду числа може мати вигляд:

АЛГ Просте число (ціл n , ціл p )

АРГ n

РЕЗ р

ПОЧ цілий і

р:=0

якщо n=1

то р:=1

інакше якщо n>2

то і:=2

поки

пц

якщо n=int (n/i)*i

то р=2

інакше і:=і+1

все

кц

все

все

якщо р=1

то ДРУКУВАТИ (“ Число дорівнює одиниці “)

інакше якщо р=0

то ДРУКУВАТИ (“ Число просте “, n)

інакше

ДРУКУВАТИ (“ Число складене “, n)

все

все

КІН
Пояснення до алгоритму

Найменше просте число – це двійка. Спочатку передбачається, що задане число – просте, тому р=0. Потім здійснюється низка перевірок, в результаті яких р може набути значення 1 (якщо це число 1) або 2 (якщо це число складене). Перевірку дільників числа достатньо робити до кореня квадратного з цього числа. Результат видається в комірці р у вигляді:



Потім аналізується вміст комірки р і залежно від її вмісту видається результат. Звичайно цей алгоритм записують у вигляді алгоритму-функції і використовують як допоміжний.

Алгоритм мовою Паскаль має вигляд:

Program Simple;

var n: longint; i: word;

begin

write (‘ Введіть натуральне число >‘);

readln (n);

if n=1

then writeln (‘ Число дорівнює 1 ‘);

else if n=2

then writeln (‘Число_’, n ‘_просте’)

else begin

i:=3;

while (i<=sqrt(n)) and (n mod i< >0)

do i:=i+2;

if n mod i=0

then writeln (‘Число_’, n, ‘_складене‘);

else writeln (‘Число_’, n, ‘_просте’);

end;

end.

У запропонованому варіанті враховано, що єдине парне просте число – це 2. Якщо введено саме це число, про це видається відповідне повідомлення. Решта простих чисел – непарні, а тому перевіряється подільність тільки на непарні числа (початкове значення і=3, а крок зміни 2). До того ж, умова у циклі while написана з урахуванням того, що всі непарні значення і перебираються, доки задане число n не поділиться на і та і не перевищить квадратного кореня з n.

Після виходу з циклу залишається з’ясувати, за якою умовою він припинив роботу. Якщо за першою (число поділилося націло) число складене, в протилежному випадку – просте.

Результати покрокового виконання алгоритму при n=25 подано в таблиці (розглядаємо розв’язування мовою НАМ).



Для закріплення попереднього матеріалу наводимо блок-схему алгоритму «Просте число»

(схема 9).



Висновок

Покрокове виконання алгоритму виконують, щоб переконатися в правильності його роботи. Звичайно це виконують для складних ділянок алгоритму. На перших кроках у програмуванні це рекомендується робити «вручну», а з набуттям досвіду роботи – за допомогою комп’ютера.
Контрольні запитання

1.З якою метою виконується покрокове виконання алгоритму?

2.Який вигляд має таблиця, у яку вміщують результати покрокового виконання алгоритму?
Вправа

Складіть алгоритм, для визначення того, чи є задумане число N досконалим. Натуральне число називають досконалим, якщо воно дорівнює сумі всіх своїх дільників, крім самого числа.

Наприклад, число 6=1+2+3 є досконалим.

Виконайте покрокове виконання алгоритму при N=28.
§5.Складання алгоритмів для розв’язування найпростіших завдань

5.1. Обчислення значень алгебраїчних виразів

Як відомо, об’єктом будь-якого алгоритму (програми) є вираз, і пистання його правильного запису є одним з найважливіших.

ПАМ’ЯТАЙТЕ, ЩО ВІД ПРАВИЛЬНОГО ЗАПИСУ ВИРАЗУ ЗАЛЕЖИТЬ РЕЗУЛЬТАТ РОБОТИ ПРОГРАМИ!

Розглянемо записи виразів, за допомогою мови програмування Турбо Паскаль. У мові Турбо Паскаль визначені арифметичні, логічні операції, а також операції порівняння (відношення).

Арифметичні операції: Логічні операції:

1) « – » - знак числа мінус; 1)andлогічне множення (І);

2) «*», «/» - множення, ділення; 2)orлогічне додавання (АБО);

3) «+», « - » - додавання, віднімання; 3)notлогічне заперечення (НІ);

4)div – цілочисельне ділення;

5)mod – остача від ділення.

Операції піднесення до степеня у мові Паскаль немає. Цю операцію виконують за допомогою функції ex і lnx за формулою: ax=elna, де х деяке число, відмінне від нуля.

Цю формулу легко одержати, використовуючи логарифмування і потенціювання обох частин рівняння.

Припустимо, що ax=y.

Виконаємо логарифмування обох частин рівняння, отримаємо:



візьмемо експоненту від обох частин рівняння, отримаємо:



і остаточно маємо: ax=y.

Відношення між величинами:

1) «=» - дорівнює;

2) «< >» - не дорівнює;

3) «<» - менше;

4) «>» - більше;

5) «<=» - менше або дорівнює (не більше);

6) «>=» - більше або дорівнює (не менше).

Пріоритет виконання операцій:

1) not;

2) *, /, div, mod, and;

3) +, –, or;

4) =, < >, >, <, <=, >=.
У мові Паскаль є набір стандартних математичних функцій:



При записі виразів слід дотримуватися таких правил:

1)Вирази записують одним рядком.

2)Аргумент функції обов’язково записують у круглих дужках.

3)Якщо у виразі присутні чисельник і знаменник, то не забувайте при потребі брати їх у дужки.

4)Кількість відкриваючих дужок повинна дорівнювати кількості закриваючих дужок.

5)Повторювані частини виразів краще обчислювати один раз та присвоювати одержані значення деяким змінним, і потім в останньому записі виразу використовувати ці змінні. Це спрощує запис виразів.

6)Якщо вираз дуже довгий, то його краще розбити на частини.
Наведемо кілька прикладів запису виразів мовою програмування:


Якщо треба обчислювати якийсь вираз неодноразово, використовуючи різні значення вихідних даних, то краще скласти алгоритм розв’язання такого виразу.
Алгоритми для обчислення значень виразів мають таку структуру:

1)Уведення вихідних даних.

2)Контроль вихідних даних.

3)Запис виразу.

4)Видача результату.
Приклад. Обчислити значення виразу:

Алгоритмічною мовою НАМ має вигляд:

АЛГ Обчислення виразу (дійсн X, Y, R, літ T)

АРГ X, Y

РЕЗ R, T

ПОЧ

якщо X= - Y

то T:=” Розв’язку немає! “

інакше



Т:=” Розв’язок є! “

ДРУКУВАТИ T, R

все

КІН

Алгоритм мовою Паскаль має такий вигляд:

Program Expression;

var x, y, r: real;

begin

write (‘ Введіть два числа ‘);

readln (x,y);

if x=-y

then writeln (‘Розв’язків не існує ‘);

else begin

r:=(3*sqr(x) – 4*y)/(x+y);

writeln(‘ Розв’язок , r’);

end;

end.

Ми навели запис виразів мовою програмування з метою ознайомлення, і якщо у вас установлений компілятор навчальної алгоритмічної мови, то ви зможете реалізувати ваші алгоритми на комп’ютері.

Надалі під час викладу матеріалу запис виразів ми будемо виконувати природною математичною формою.
5.2.Обчислення функцій

Наведемо приклади обчислення значень функцій.

Приклад 1. Обчислити значення кусочної функції при заданому значенні аргументу:



Алгоритм має вигляд:

АЛГ Значення функції (дійсн х, у)

АРГ х

РЕЗ у

ПОЧ

вибір

при : у:= - х

при x>0 і x<1: y:=x

при : у:=1

все

ДРУКУВАТИ у

КІН

Мовою Паскаль команду вибору використати не можна, оскільки ця команда не застосовується для роботи із змінними дійсних типів, тому наведемо розв’язання, з використанням команд умовного переходу:

Program znoch_fune;

var x, y, r : real;

begin

write (‘ введіть х: ‘);

readln (x);

if x<=0 then y:= - x;

if (x>0) and (x<1) then y:=x;

if x>=1 then y:=1;

writeln(‘ y= ‘, y);

end.

Зауважимо, що виведення дійсних чисел на екран відбувається у вигляді з плаваючою крапкою. Тому рекомендуємо формувати виведення наприклад так:

writeln (‘y=’, y:8:2);

Пропонуємо читачу спробувати поміняти числа і з’ясувати, що зміниться у виведенні.
Приклад 2. Обчислити значення кусочної функції, заданої на деякому проміжку з кроком h. Інакше кажучи, виконати табулювання функції.



Алгоритм має вигляд:

АЛГ Значення функції (дійсн a, b, h, y)

АРГ a, b, h

РЕЗ у

ПОЧ дійсн х

для х від a до b крок h

пц

якщо x<3

то у:=2х+2

інакше якщо і

то у:=х – 5

інакше у:=х – 7

все

все

ДРУКУВАТИ х, у

кц

КІН

Алгоритм мовою Паскаль:

Program znoch_fune;

var a, b, h, x, y: real;

begin

write (‘ Введіть проміжок для табуляції ‘);

readln (a,b);

write (‘ Введідь крок табулювання ‘);

readln(h);

x:=a; { Надання х початкового значення }

while x<=b do

begin

if x<3 then y:=2*x+2;

if (3<=x) and (x<4) then y:=x – 5;

if x>=4 then y:=x – 7;

writeln(‘x?’ , x:8:2, ‘y?’ , y:8:2);

x:=x+h;

end;

end.

Зверніть увагу, що це розв’язання містить цикл з передумовою (while) *замість циклу для у розв’язанні мовою НАМ. Це зумовлено тим, що у мові Паскаль не можна у циклі for застосувати крок, який дорівнює 1.

Приклад 3. Обчислити значення tgx за формулою:



Алгоритм має вигляд:

АЛГ tgx ( цілий N, дійсн X,Y)

АРГ X, N

РЕЗ Y

ПОЧ цілий m, дійсн U

m=n – 2; U:=N

поки m?1

пц



m:=m – 2

кц



ДРУКУВАТИ Y

КІН
Пояснення до алгоритму

Кожний елемент вкладення обчислюється за рекурентною формулою:

а потім обчислюється остаточне значення:

Рекурентною називають таку формулу, яка дає змогу за попереднім значенням функції одержати поточне.

Як і в попередньому прикладі, розв’язання мовою Паскаль здійснюється на основі циклу з передумовою while:

Program tgx;

var n:integer; u, x, y:real;

begin

write(‘ Введіть х ‘);

readln(x);

n:=51; y:=n;

while n>0 do

begin

n:=n – 2;

y:=n – x*x/u;

end;

y:=x/u;

writeln(‘x=’, x:8:2, ‘tg=’, y:8:2);

end.

ПОЧАТКОВЕ ЗНАЧЕННЯ n ФАКТИЧНО ЗАДАЄ КІЛЬКІСТЬ ПОВТОРЕНЬ У ЦИКЛІ, ТОБТО ВПЛИВАЄ НА ТОЧНІСТЬ ОТРИМАНОГО РЕЗУЛЬТАТУ. РЕКОМЕНДУЄМО СПРОБУВАТИ РОБОТУ ПРОГРАМИ ПРИ РІЗНИХ ЗНАЧЕННЯХ n І ПОРІВНЯТИ ОТРИМАНІ РЕЗУЛЬТАТИ З РЕЗУЛЬТАТАМИ, ОБЧИСЛЕНИМИ ЗА ДОПОМОГОЮ КАЛЬКУЛЯТОРА!
Приклад 4. Обчислити значення функції за формулою:

Алгоритм має вигляд:

АЛГ Значення функції (цілий N , дійсн X, Z)

АРГ N, X

РЕЗ Z

ПОЧ цілий і

Z:=0

для і від 1 до N

пц



кц

ДРУКУВАТИ Z

КІН
Пояснення до алгоритму

Значення функції обчислюється, починаючи з внутрішнього елемента (тобто спочатку обчислюється , потім тощо).

Кожний член вкладення обчислюється за рекурентною формулою:
Для розв’язання цієї задачі можна застосувати цикл для (for), оскільки за його допомогою можна обчислити кількість повторень (від 1 до N з кроком N).

Алгоритм мовою Паскаль:

Program znoch_fune2;

var N, i: integer; x, y: real;

begin

write(‘ Введіть х: ‘);

readln(x);

write(‘ Введіть кількість повторень ‘);

readln(N);

y:=0;

for i:=1 to N do

begin

y:=sqrt(y+x);

end;

writeln(‘y=’, y:8:2);

end.
5.3. Обчислення суми членів числової послідовності

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

Загальний член послідовності (ЗЧП) – це формула, за якою за номером члена послідовності можна знаходити сам член послідовності.


З математики нам відомі арифметична і геометрична прогресії.

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


Формули будь-якого члена арифметичної прогресії і суми перших її n членів:

an=a1+nd, (1)


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

Формули будь-якого члена геометричної прогресії і суми перших n членів:

(2)

Формули (1) і (2), звичайно ж, можна використовувати у роботі з цими прогресіями.
Ми розглянемо інший підхід до обчислення суми членів числової послідовності.

Наведемо кілька прийомів знаходження загального члена послідовності:

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

1, 5, 9, 13, … - загальний член дорівнює:

2, 8, 14, 20, … - загальний член дорівнює:

2.Послідовність є геометричною прогресією. У цьому випадку знаходимо знаменник прогресії (q) і записуємо формулу у вигляді: qi. Наприклад: 2, 4, 8, 16, … - загальний член дорівнює: 2і.

3.Послідовність не є арифметичною або геометричною прогресією, але різниці між сусідніми членами утворюють геометричну прогресію. У цьому випадку записуємо формулу загального члена для послідовності, отриманої з різниць, а потім для одержання остаточної формули додаємо або віднімаємо таке число, щоб одержати перший член вихідної послідовності. Наприклад: 1, 3, 7, 15 … Послідовність, складена з різниць сусідніх членів, має вигляд: 2, 4, 8, 16, … Її загальний член 2і, а формула загального члена вихідної послідовності: 2і – 1.

4.Елементи послідовності, що знаходяться на непарних місцях, утворюють арифметичну прогресію, аналогічно елементи, що містяться на парних місцях, теж утворюють арифметичну прогресію. Наприклад: 4+1+5+2+6+3+7+4+8+… Формулу загального члена послідовності будемо шукати в такий спосіб:

Спочатку знайдемо формулу загального члена для елементів, що стоять на непарних місцях у послідовності (для непарних індексів): 4+5+6+7+8+…

Для цього складемо систему рівнянь:

Множники 1 і 3 – порядкові номери членів послідовності, а х та у – деякі числа. Розв’язуючи систему, знаходимо, що а

Отже, формула загального члена для елементів, що містяться на непарних місцях у послідовності, має вигляд:

Міркуючи аналогічно, знайдемо формулу загального члена для елементів послідовності, що знаходяться на парних місцях у послідовності: 1+2+3+4+5+…

Знаходимо: Формула загального члена -

Отримані формули повинні працювати по черзі. Цього легко досягти за допомогою виразу:

Перетворивши його, одержимо остаточну формулу загального члена числової послідовності:

Алгоритми для обчислення суми членів числової послідовності мають той самий вигляд:

1.Уведення кількості членів послідовності.

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

3.Організація циклу, всередині якого буде команда присвоювання, що має структуру:

s:=s+зчп,

де S – комірка для підсумовування.

4.Виведення результату.
Наведемо кілька прикладів з обчислення суми членів числової послідовності.

Приклад 1. Обчислити суму N членів послідовності:

Алгоритм має вигляд:

АЛГ Сума членів послідовності (ціл N, дійсн S)

АРГ N

РЕЗ S

ПОЧ ціл і

і:=1; S:=0

поки i<=N

пц

S:=S+i/(i+1)

і:=i+1

кц

ДРУКУВАТИ S

КІН
Пояснення до алгоритму

Загальний член послідовності має вигляд: Керуюча змінна входить до ЗЧП

Алгоритм мовою Паскаль має вигляд:

Program Suma1;

var I, N:integer; S:real;

begin

write (‘ введіть кількість доданків: ‘);

readln(N);

S:=0;

for i:=1 to N do

S:=S+i/(i+1);

writeln (‘S=’, S:8:2);

end.

У цьому розв’язанні запропоновано використання циклу for, бо він підраховує кількість доданків у сумі. Однак можна замінити цей цикл на цикл з передумовою while, наприклад, так:

i:=1;

while i<=N do

begin

S:=S+i/(i+1);

i:=i+1;

end;
Приклад 2. Обчислити суму N членів послідовності: 7+12+17+22+…

Алгоритм має вигляд:

АЛГ Сума членів послідовності (ціл N, S)

АРГ N

РЕЗ S

ПОЧ ціл i, d, r

i:=1; S:=0; d:=2; r:=5

поки i<=N

пц

d:=d+r

S:=S+d

і:=i+1

кц

ДРУКУВАТИ S

КІН
Пояснення до алгоритму

Тут поточний член послідовності обчислюється на підставі попереднього шляхом додавання заданого числа. У формулі загального члена послідовності, що подається рекурентною формулою d:=d+r, немає керуючої змінної.
Алгоритм мовою Паскаль:

Program Suma2;

var i, N: word; d, r, S: longint;

begin

write (‘ Введіть кількість доданків ‘);

readln (N);

S:=0;

r:=7;

d:=5;

for i:=1 to N do

begin

S:=S+r;

r:=r+d;

end;

writeln(‘S=’, S);

end.
Однак далеко не завжди вдається записати одним виразом формулу загального члена послідовності. У цьому випадку формула загального члена може складатися з кількох частин.

Послідовність може бути і знакозмінною. Її алгоритмізація нескладна. Робота з нею виконується так само, як і із звичайною послідовністю, а чергування знака покладається на робочу комірку.

Чергування знака можна отримати і піднесенням мінус одиниці до відповідного степеня, як це робиться в математиці, але перший варіант кращий.
Приклад 3. Обчислити суму N членів знакозмінної послідовності:

Алгоритм має вигляд:

АЛГ Сума членів послідовності (ціл N, дійсн S)

АРГ N

РЕЗ S

ПОЧ ціл і, z; дійсн р

і:=1; S:=0; p:=1; z:=1

поки i<=N

пц





z:= - z

і:=i+1

кц

ДРУКУВАТИ S

КІН
Пояснення до алгоритму

Тут чергування знака членів послідовності покладено на комірку z. Якщо перший член послідовності додатний, то z:=1, і якщо від’ємний, то z:= - 1. Кожний наступний член виходить із рекурентної формули:

, де - коефіцієнт.

Алгоритм мовою Паскаль:

Program Suma3;

var I, N: word; p, S: real; z: shortint;

begin

write(‘ Введіть кількість доданків ‘);

readln(N);

S:=0;

i:=1;

p:=1;

z:=1:

while i<=N do

begin

p:=p*(4*i-3)/(6*i-4);

S:=S+z*p;

z:= - z;

i:=i+1;

end;

writeln (‘S=’, S:8:2);

end.
Посилаючись на розглянуті приклади, можна визначити 3 способи обчислення суми членів послідовності:

  1. керуюча змінна присутня у загальному члені послідовності;

  2. шляхом використання рекурентної формули керуюча змінна відсутня у загальному члені послідовності;

  3. шляхом використання рекурентної формули керуюча змінна присутня у загальному члені послідовності.


5.4.Обчислення добутку членів послідовності

Розглянемо цей вид алгоритмів на прикладі обчислення значення функції n! (факторіал).

Факторіал це функція натурального аргументу, значенням якої є добуток чисел від 1 до n.

1!=1; 2!=1*2; 3!=1*2*3; …, n!=1*2*3*4*…*(n – 1)*n.


За означенням прийнято, що 0!=1. Хоча, як відомо, нуль не належить до натуральних чисел. Ця рівність була отримана в розділі математики комбінаторика. Відома формула знаходження кількості сполучень: При n=m одержимо звідси виходить, що 0!=1.

Справедлива рекурентна формула: n!=(n – 1)!*n.

Рекурентною називають формулу, що дозволяє на підставі попереднього значення функції одержати поточне значення. Наприклад, 5!=4!*5.


Структура алгоритму для обчислення добутку членів послідовності загалом ідентична структурі алгоритму накопичення суми, за винятком того, що:

1.У комірку результату на початку вміщується одиниця.

2.У циклі повинна бути команда присвоювання: р:=р*ЗЧП, де р – комірка для накопичення добутку.



Алгоритм має вигляд:

Алгоритм мовою Паскаль

АЛГ Факторіал (ціл N, P)

АРГ N

РЕЗ P

ПОЧ цілий і

і:=1; Р:=1

поки i<=N

пц

Р:=Р*і

і:=і+1

кц

ДРУКУВАТИ Р

КІН



Program Factorial;

var I, N: byte; p:longint;

begin

write (‘ Введіть число, факторіал якого треба знайти ‘);

readln(N);

p:=1;

for i:=1 to N do

p:=p*i

writeln(‘p=’, p);

end.




5.5. Обчислення суми функціональної послідовності

Функціональна послідовністьце відображення множини натуральних чисел N у множину дійсних функцій однієї змінної х, дійсної на деякому інтервалі.


З курсу вищої математики відомо, що всі елементарні функції можуть бути подані функціональною нескінченною послідовністю або, як кажуть, розкладені у функціональний ряд.

Наведемо кілька прикладів розкладань функцій у ряд:

1)
2)
3)
4)

При всіх значеннях х ряди (1 – 3) сходяться і дають відповідну функцію. Ряд (4) сходиться в інтервалі ( - 1, 1). Цими рядами користуються для обчислення значень функцій. Відомі вам таблиці Брадіса створювалися саме в такий спосіб.

Обчислимо, наприклад, sin100 з точністю до 10-5. Переведемо 100 в радіани за формулою: одержимо

Обмежимося першими двома членами: Одержимо:

Знаходження суми членів функціональною послідовністю або рядом простіше виконувати, використовуючи рекурентну формулу. Це дає можливість уникнути обчислення факторіала при одержанні чергового члена послідовності.

Розглянемо приклад обчислення значення cosx, використовуючи її розкладання в ряд за степенями х для N членів та із заданим степенем точності

Загальний член послідовності має вигляд рекурентної формули: де k – коефіцієнт , що обчислюється за формулою: Він знаходиться шляхом ділення поточного члена послідовності на попередній, причому вони повинні бути записані у загальному вигляді. Поточний член має вигляд: а попередній – , оскільки ми працюємо з парними числами, то:

Для виконання скорочень використовували рівність: (2і)!=(2і – 2)!(2і – 1)2і.
Алгоритм обчислення значення функції cosx має вигляд:

Обчислення заданої кількості доданків:

Обчислення до досягнення заданої точності:

АЛГ Cosx (цілий N, дійсн X, S)

АРГ X, N

РЕЗ S

ПОЧ дійсн K, U; ціл і

S:=0; U:=1; i:=1

поки i<=n

пц

S:=S+U



U:=U*K

і:=i+1

кц
ДРУКУВАТИ S

КІН

АЛГ Cosx (дійсн X, E, S)

АРГ X, E

РЕЗ S

ПОЧ дійсн K, U; ціл і

S:=0; U:=1; i:=1

поки

пц

S:=S+U



U:=U*K

і:=i+1

кц
ДРУКУВАТИ S

КІН



Алгоритм мовою Паскаль:




Program Cosx1;

var i, N: word; x, s, u, k: real;

begin

write(‘ Введіть кількість доданків ‘);

readln(n);

s:=0;

u:=1;

for i:=1 to N do

begin

s:=s+u;

k:= - x*x/((2*i – 1)*2*i);

u:=u*k;

end;

writeln(‘s=’, s:8:2);

end.

Program Cosx2;

var i: word; x, s, Eps, k, u: real;

begin

write(‘ Введіть точність результату ‘);

readln(Eps);

s:=0;

u:=1; i:=1;

while abs(u)>Eps do

begin

s:=s+u;

k:= - x*x/((2*I – 1)*2*i);

u:=u*k; i:=i+1;

end;

writeln(‘s=’, s:8:2);

end.



Підсумки

1.Розглянули запис виразів мовою програмування Turbo Pascal:

1)вивчили операції, що використовуються при записі виразів;

2)розглянули відношення між величинами;

3)ознайомилися з набором стандартних математичних функцій;

4)засвоїли правила запису виразів.

2.Вивчили структуру алгоритму обчислення значень виразів.

3.Навчилися складати алгоритми обчислення значення кусочної функції, заданої на деякому проміжку.

4.Навчилися складати алгоритми обчислення значення кусочної функції, заданої на деякому проміжку з кроком h.

5.Навчилися складати алгоритми обчислення значення функції, використовуючи рекурентні формули.

6.Ввели визначення:

1)числової послідовності;

2)загального члена числової послідовності.

7.Розглянули кілька прийомів знаходження загального члена послідовності.

8.Вивчили структуру алгоритму обчислення суми членів числової послідовності.

9.Розглянули 3 способи обчислення суми членів числової послідовності:

1)керуюча змінна присутня у загальному члені послідовності;

2)шляхом використання рекурентної формули, керуюча змінна відсутня у загальному члені послідовності;

3)шляхом використання рекурентної формули керуюча змінна присутня у загальному члені послідовності.

10.Ввели визначення функції n!

11.Вивчили структуру алгоритму обчислення добутку членів числової послідовності.

12.Вивчили структуру алгоритму обчислення суми n членів функціональної послідовності.

13.Вивчили структуру алгоритму обчислення суми ряду членів функціональної послідовності.
Висновок

Ми навчилися складати алгоритми для обчислення виразів, кусочних і рекурентних функцій, а також суми і добутку членів числової і функціональної послідовностей. Закріпили роботу з командами розгалуження і повторення.
Контрольні запитання

1.Яку структуру мають алгоритми обчислення значень виразів?

2.Як записати алгоритм обчислення значення кусочної функції?

3.Як записати алгоритм обчислення значень функції на заданому проміжку [a, b] з кроком h?

4.Дайте визначення числової послідовності. Що таке загальний член послідовності?

5.Яку структуру мають алгоритми для обчислення суми членів числової послідовності?

6.Які вам відомі прийоми знаходження загального члена послідовності?

7.Які вам відомі способи обчислення суми членів числової послідовності?

8.Назвіть основні моменти в алгоритмі знаходження добутку членів послідовності.

9.Дайте визначення функціональної послідовності. Як скласти алгоритм знаходження її суми?
Вправи

Вправа 1. Складіть алгоритм знаходження значення виразу: , якщо , а значення х подвоюється.

Вправа 2. Складіть алгоритм обчислення кусочної функції:



Вправа 3. Складіть алгоритм обчислення кусочної функції на проміжку [a, b] з кроком h:
де a= - 5, b=5, h=0,5.

Вправа 4. Складіть алгоритм обчислення суми знакозмінної числової послідовності:



Вправа 5. Складіть алгоритм обчислення добутку числової послідовності:



Вправа 6. Складіть алгоритми обчислення суми функціональної послідовності:

а)

б)

Вправа 7. Складіть алгоритм обчислення числа використовуючи формулу:




1   2   3   4   5   6   7   8   9

Схожі:

Навчально-методичний посібник Частина 2
Організація циклів для доступу до елементів, розташованих у визначених частинах масиву

Навчально-методичний посібник для самостійного вивчення дисципліни...
Навчально-методичний посібник для самостійного вивчення дисципліни «Бухгалтерський облік у галузях народного господарства» написаний...

Н. І. Біденко Методичний посібник для слухачів МАН учнівської молоді
Методичний посібник для слухачів МАН учнівської молоді (секція історії). – Кіровоград, Кіровоградський обласний загальноосвітній...

Кафедра радіокомп’ютерних систем методичний посібник
Методичний посібник для виконання лабораторних робіт з курсу «Фізична електроніка та мікроелектроніка» / Уклад. Осухівська Г. М....

Навчально-методичний центр Федерації професійних бухгалтерів і аудиторів України
Теоретична частина: П(с)БО 17 ‘Податок на прибуток’- співвідношення теорії з практикою

Навчально-методичний центр Федерації професійних бухгалтерів і аудиторів України
Теоретична частина: П(с)БО 17 ‘Податок на прибуток’- співвідношення теорії з практикою

Навчально-методичний центр Федерації професійних бухгалтерів і аудиторів України
Теоретична частина: П(с)БО 17 ‘Податок на прибуток’- співвідношення теорії з практикою

Навчально-методичний центр Федерації професійних бухгалтерів і аудиторів України
Теоретична частина: П(с)БО 17 ‘Податок на прибуток’- співвідношення теорії з практикою

Навчально-методичний центр Федерації професійних бухгалтерів і аудиторів України
Теоретична частина: П(с)БО 17 ‘Податок на прибуток’- співвідношення теорії з практикою

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

Додайте кнопку на своєму сайті:
Портал навчання


При копіюванні матеріалу обов'язкове зазначення активного посилання © 2013
звернутися до адміністрації
obuch.com.ua
Головна сторінка