- •Етапи підготовки і рішення задач на еом
- •Програма, що не має помилок часу трансляції і виконання, може і не дати вірних результатів через так звані логічні помилки в обраному алгоритмі, тобто алгоритмічних помилок.
- •Запис алгоритмів у виді блок – схем
- •Мови програмування
- •1. Основні поняття алгоритмічної мови Бейсік.
- •3. Сталі та змінні.
- •4. Функції. Вирази.Оператор присвоєння
- •Вправи та запитання
- •5. Надання значень змінним
- •Оператор read.
- •6. Виведення результатів
- •Оператор Результат
- •Оператор Результат
- •7.Лінійні програми
- •Розгалуження
- •1.Логічний вираз
- •3. Команда розгалуження if. Повна форма умовної команди.
- •10.Цикли
- •11.Оператори циклу
- •12. Обчислення суми, добутку
- •13. Ітераційні цикли
- •14. Вкладені цикли
- •Мал.12 Схеми вкладених циклів.
- •15. Використання масивів
- •Вправи та запитання
- •16. Нестандартні функції та підпрограми
- •17. Робота з текстовими даними
- •18. Оператори роботи з графічною інформацією.
- •19. Робота з файлами даних
- •20 Основи роботи в пакеті MathCad
- •Визначення основних понять та позначень, безпосередньо зв'язаних з процесом обчислень у середовиіщі пакету Вхідний алфавіт
- •Типи констант і змінних
- •Розмірність, одиниці вимірів та одиниці маштабування
- •Базові обчислювальні конструкції пакета
- •Реалізація ітеративних обчислень.
- •Функції керування обчисленнями
- •Побудова декартових графіків
- •Методи доступу і роботи з файлами даних
- •Вбудовані функції та функції користувача
- •Розділ 21Алгоритми та програми реалізації загальних чисельних методів.
- •21.1. Розв’язання систем лінійних рівнянь.
- •21.2 Інтерполяція та екстраполяція.
- •21.3. Розв’язання нелінійних та трансцендентних рівнянь.
- •21.4 Розв’язування систем нелінійних рівнянь.
- •Програма 14
- •21.5. Пошук екстремумів функцій одної та багатьох змінних.
- •Програма 15
- •Програма 16
- •Програма 17
12. Обчислення суми, добутку
Обчислення кінцевої суми зводиться до знаходження суми заданої кількості доданків.
S=f(1)+f(2)+…+f(n)=Σ f(і), де і - номер додатку; f(i) -додаток з номером “і”.
Обчислення суми організовується у вигляді циклічного алгоритму, коли при кожному проходженні циклу номер додaнку “і” збільшується на одиницю, а сума змінюється на величину цього доданку, тобто:
Si=Si-1+f(i),
Де Si, Si-1 – суми доданків "i", "i-1" кроках. Відповідно цикл повторюється до тих пір поки не будуть просумовані всі n доданків.
Зауваження 1. Для того щоб початковий вміст комірки де буде накоплюватися сума не спотворило результат, сума попередньо повинна бути обнулена (S0=Ø).
Зауваження 2. Вивід результату, оскільки він є, як правило, єдиним, здійснюється після закінчення роботи циклу.
Обчислення добутку
Обчислення кінцевого добутку являє собою процес знаходження добутку заданої кількості співмножників по формулі:
P = f(1) * f(2) *…*f(i) = П (f(i)).
Як і сумування обчислення добутку організовується за допомогою циклічного процесу по рекурентним співвідношенням:
P = Pi-1 f(i)
Де Pi, Pi-1 - добуток співмножників i, i - 1 відповідно, причому і змінюється від 1 до n.
Зауваження 3. На відміну від сумування початкове значення добутку P0 повинно дорівнювати одиниці(P0=1).
Приклад 1. Розглянемо програму наближеного обчислення значення числа π.
Приклад 2. Скласти програму обчислення добутку
Програма рішення задачі має наступний вигляд
10 REM Приклад 2.
20 P = 1
30 FOR i=1 TO 10
40 P=P * (1 - 1/(i + 1) ^ 2)
50 NEXT I
60 PRINT "добуток P ="; P
70 END∆
13. Ітераційні цикли
В усіх вищерозглянутих програмах число поторень циклу було задано, або його легко можна обчислити за формулою: N= . Проте існують обчислювальні процеси, які вміщують цикл із невідомим наперед числом повторень. Такі цикли, які харектерезуються послідовним наближенням обчислювальних величин до шуканого значення, називається інтеграційним. Закинчення циклу в цьому випадку, за звичай здійснюється при досягненні заданої точності обчислення результату. До ітераційних циклів приводять задачі обчислення сум нескінченів рядів, рішення алгебраїчних і трансцедентних рівнянь, реалізації числових методів інтегрування і дифуренціювання, рішення систем лінійних і не лінійних рівнянь, задачі оптимізації. В ітераційних процесах результати, отримані на поточноиу кроці, використовується в якості вхідних даних для розрахунку наступонго кроку циклу. При реалізації необхідно задавати початкове значення (x0) і критерій (точність -"Е") у відповідності з яким буде закінчено обчислювальний процес.
Обчислення суми нескінченних рядів зводиться до знаходження суми
S=U(1)+U(2)+…+U(n)…= U(n). (1)
Кожний доданок якого є функцією від номера "n", який визначає місце цього доданку в сумі, а також може бути функцією одного, або декількох додаткових параметрів.
Приклад 1.
Приклад 2.
Обчислення суми ряду полягає в отримані результатів циклічного процесу послідовності s(1), s(2), …, s(n), …, які сходяться до свого граничного значення, тобто границі . Тут s(n) - сума n членів нескінченного ряду.
Для обчислення суми ряду використовується метод накопичення суми: сумування вважається закінченим при виконання умови досягнення заданої похибки, тобто . Задача знаходження суми ряду є типовим прикладом інтеграційного процесу, так як наперед невідомо, при якому числу членів ряду досягатиметься необхідна точність.
Процес обчислень визначається реконкурентним співвідношенням s(n)=s(n-1)+u(n). В загальному випадку початкове значення номера члена ряду n може бути відмінне від 1 (наприклад, рівним 0). Для знаходження початкового значення суми перепишемо формулу (1) у вигляді:
Елемент u(v) дозволяється приймати в якості початкового значення суми, а параметр n в ітераційному процесі прийматиме значення v+1, v+2,…
Загальна схема алгоритму обчислення суми членів нескінченного ряду приведена на мал. 8. Так у обчисленнях за рекурентною формулою одночасно приймають участь тільки двазначення s(n) i s(n-1), в схемі алгоритма замість цих змінних використовується змінна S (блок 3). Значення S буде змінюватися кожний раз при додаванні чергового члена суми. Справа від знаку присвоєння значення змінної відповідає попередньому значенню суми s(n-1), зліва - поточному s(n).
Переважно формула загального члена суми належить одному з наступних типів:
а) ;
б) ;
в) ;
У випадку (а) обчислення будуть найбільш ефективними, якщо кожен член суми u(n) (мал. 8)обраховується за загальною формулою.
У випадку (б) у формулу члена суми u(n) входять цілі степені і факторіали, для обрахунку u(n) доцільно використовувати реконкурентні сіввідношення, тобто виражати наступний член суми через попередній. Це дозволить істотно скоротити об'єм обрахунків. Крім того, безпосереднє обчислення суми за загальною формулою в ряді випадків, неможливе, наприклад, через наявність n! або при x<=0. Черговий член ряду u(n) можна визначити через попередній наступним чином:
u(n)=u(n-1)φ(n)
де φ(т) - перехідний коефіцієнт, який залежить від n. Наприклад для обчислення суми перехідний коефіцієнт можна визначити наступним чином:
Реконкурентне співвідношення для обчислення чергового члену має вигляд:
В якості початкового значення члену ряду обирається значення u(y) (для приведеного прикладу v=0).
Для випадку (б) схема алгоритма обчислення суми нескінченного ряду приведена на мал. 9
Зауваження. Замість параметрів u(y) і φ(n) в схемі алгоритму обчислення суми конкретного ряду необхідно записувати аналітичні залежності, по яких визначаються ці параметри.
У випадку (в) член суми доцільно представити у вигляді двох співмножників: u(n)=c(n)a(n), один з яких обчислюється по рекурентному співвідношенню, а інший безпосиредньо. Схема алгоритма для випадку (в) приведена на мал.10
Наприклад, якщо u(n) = (-1)n · , то пропускаємо, що с(n)= (-1)n і обчислюємо рекорентно.
с(n)= с(n-1) (n) , де (n)= =-1
де початкове значення параметра с рівне c(v).для даного прикладу v=1, u(v)=-cos x, c(v)=-1.Співмножник зручно обчислювати безпосередньо за формулою. Алгоритм розрахунку для цього випадку приведений на мал.9
Розглянемо конкретний приклад. Нехай необхідно обчислити суму членів ряду.
S=
З точністю до члена ряду меншого ε, для заданого х.
Загальний член суми належить до типу (б). Сума обчислюється по схемі на мал.9 Визначимо коефіцієнт переходу від попереднього до наступного члену.
Початкове значення: v=0, u(n)=1. Схема алгоритма розв’язку задачі приведена на мал.11. Програма має наступний вигляд:
10 INPUT X,E
20 S=1:U=1
30 N=1
40 U= -U*X*X/((2*N-1)*2*N)
50 S=S+U
60 N=N+1
70 IF ABS(U)>E THEN 40
80 PRINT “N=”; N, “S=”; S
90 END
S=U(υ)
N=υ +1
U=U(n), S=S+U
N=n+1
S=U(υ)
C=C(υ)
U=Uφ(N) S=S+1
N=n+1
N=υ +1
S=U(υ)
C=C(υ)
C=Cφ(n)
U=Cα(n)
S=S+U
N=υ +1
N=υ +1
Мал.9
Мал.8
S=1,U=1
U=-U
,
S=S+1
N=n+1
Мал.10
Мал.11