- •Інформація та інформаційні процеси Поняття інформації.
- •Одиниці вимірювання інформації.
- •Подання інформації та типи комп'ютерів.
- •Способи пересилання інформації.
- •Будова комп'ютера
- •Пристрої введення-виведення інформації.
- •Процесор
- •Принципи функціонування комп'ютера Фізичні принципи
- •Поняття про середовища програмування
- •Програмний принцип
- •Загальна характеристика мови паскаль
- •Поняття інтегрованого середовища
- •Команда New
- •Команда Open
- •Основи алгоритмізації Алгоритми та їх властивості
- •Блок-схеми
- •Загальна характеристика Паскаль-програми
- •Структура Паскаль-програми
- •Елементи мови Паскаль
- •Прості типи даних
- •Стандартні типи даних
- •Дійсний тип
- •Логічний тип
- •Символьний тип
- •Конструйовані типи
- •Перелічуваний тип
- •Оператори надання значень змінним Оператор присвоєння
- •Уведення-виведення
- •Порядок виконання операцій
- •Складений оператор
- •Стиль запису програми
- •Структури керування
- •Структура послідовного виконання
- •Структура розгалуження
- •Умовний оператор
- •Оператор варіанта
- •Оператор безумовного переходу
- •Структура повторення
- •Цикл з параметром
- •Цикл з передумовою
- •Цикл з післяумовою
- •Ітераційні цикли
- •Обчислення суми знакозмінного ряду із заданою точністю
- •Процедури і функції
- •Процедури з параметрами. Параметри-значення
- •Одномірні масиви
- •Поняття масиву. Одномірний масив та його опис в програмі
- •Обчислення скалярного добутку двох векторів
- •Знаходження найбільшого (найменшого) значень серед елементів масиву
- •Обчислення суми та добутку елементів масиву
- •Перетворення масиву по заданому закону
- •Впорядкування одномірних масивів
- •Впорядкування шляхом вибору
- •Впорядкування обмінами
- •Впорядкування вставками
- •Зливання впорядкованих масивів
- •Двомірні масиви Поняття двомірного масиву та його опис у програмі
- •Ввід та вивід значень елементів двомірного масиву Ввід значень елементів двомірного масиву
- •Вивід значень елементів двомірного масиву a[m,n]
- •Рядковий тип (string)
- •Комбіновані типи Організація комбінованих типів у Паскалі
- •Оператор приєднання
- •Множинні типи Організація множин
- •Файлові типи Організація файлів
- •Підготовчі та завершальні операції
- •Операції уведення-виведення
- •Стандартні файли input і output
- •Модулі Модуль і його структура
- •Стандартні модулі
- •Наближене знаходження коренів рівнянь Дослідження рівняння. Відокремлення коренів
- •Метод поділу проміжку пополам
- •Метод хорд
- •Метод дотичних
- •Чисельне інтегрування
- •Квадратурні формули прямокутників
- •Загальні формули прямокутників
- •Квадратурна формула трапецій
- •Практичні оцінки точності квадратурних формул. Вибір кроку інтегрування
- •Список літератури
Метод хорд
Методом хорд (його ще називають методом лінійного інтерполювання) нове значення х знаходять як абсцису точки перетину хорди, що проходить через точки
(u; f (u)), (v; f (v)), з віссю Ox. При цьому f(u) f(v) < 0.
Рівняння
згаданої хорди матиме вигляд:
Звідси знаходимо абсцису точки перетину хорди з віссю Ох (рівняння якої у = 0):
Я
кщо
f(х)
f(и) > 0, то
корінь міститься на проміжку [х;
v], тому щойно
знайдений х
беремо за
нове значення лівого кінця проміжку,
на якому міститься корінь. Якщо
f(х)
f(и) < 0, то
корінь міститься на проміжку [u;
х], тому х
беремо за нове значення правого кінця
проміжку, на якому міститься корінь.
Якщо f(х)=0
або задовольняється умова
то можна вважати, що х - наближення кореня х* з точністю до , інакше для визначення нових и і v повторюємо обчислення.
Приклад.
Методом хорд знайти з точністю до 0,00005 корінь рівняння x3+1,76439x2+2,21584x – 3,31344 = 0, що лежить на проміжку [0;1].
Розв’язання.
Аналізуючи метод хорд з математичної точки зору, ми можемо однозначно сказати, що кожне наступне наближення все ближче і ближче доходить до реального кореня х*. Причому кожне наступне значення x-u буде меншим ніж попереднє. Отже, умовою припинення циклу можна вважати той момент, коли x-u стане меншим за необхідну точність визначення кореня. Один з варіантів програми реалізації поставленої задачі може виглядати так:
program horda;
const e = 0.00005;
var a, b, x, d, y1, у2: real;
begin
writeln (’ввести значення кінців проміжка локалізації кореня’);
readln (a, b);
repeat
y1:=a*a*a+1.76439*a*a+2.21584*a – 3.31344;
y2:=b*b*b+1.76439*b*b+2.21584*b – 3.31344;
x:=a-(b-a)/(y2-y1)*y1;
d:=x-a; a:=x;
until d >= e;
writeln (‘x*=’,x,’+-e’);
end.
Результатом розв’язку даної задачі буде х*=0,78543 0,00005;
Метод дотичних
Нехай функція f(x) двічі неперервно диференційовна на проміжку [a,b], причому перша і друга похідні не дорівнюють нулеві і зберігають знак на цьому проміжку, а f(a)f(b)<0,
За методом дотичних (методом Ньютона) наближене значення кореня х знаходять як абсцису точки перетину дотичної до кривої y=f(x) в одній з точок (u; f (u)) чи (v; f(v)) з віссю Ох. При цьому змінна х наближається до кореня лише з одного боку. Оцінку близькості х до кореня х*, як і раніше, можна знайти за формулою
П
ершу
дотичну треба проводити в тій точці
(u;
f(u))
або (v;
f(v)), для якої
виконується умова:
f(u)f(u)>0 чи f(v)f(v)>0.
Нехай дотична проводиться в точці (v; f(v)). Тоді рівняння дотичної в цій точці матиме вигляд:
y – f(v) = f(v)(x-v).
Звідси знаходимо точку перетину дотичної з віссю Ох:
Якщо значення v вважати за початкове (нульове, позначимо його через х0) наближення до кореня х*, то значення х, знайдене за останньою формулою, вважатимемо новим наближенням (першим, позначимо його х1). Значення х1 можна уточнити, а саме: наступне наближення до кореня х* знову визначити як точку перетину дотичної до кривої у = f (x), проведеної в точці (х1; f (х1)), з віссю абсцис. Отже, за методом Ньютона кожне наступне наближення до кореня х* знаходять за формулою
(k
= 0, 1, 2, 3, …).
Приклад.
Методом дотичних знайти з точністю до 0,00005 корінь рівняння x3+1,76439x2+2,21584x – 3,31344 = 0, що лежить на проміжку [0;1].
Розв’язання.
f(x)=3x2+3,52878x+2,2158;
f(x)=6x+3,52878;
f(x)>0 i f(x)>0 при довільних х є [0;1].
Один з варіантів програми реалізації поставленої задачі може виглядати так:
program horda;
const e = 0,00005;
var b, x, d, y, у1: real;
begin
writeln (’ввести значення одного з кінців проміжка локалізації кореня’);
readln (b);
repeat
y:=b*b*b+1.76439*b*b+2.21584*b – 3,31344;
y1:=3*b*b+3.52878*b+2.21584;
x:=b-y/y1;
d:=x-b; b:=x;
until d >= e;
writeln (‘x*=’,x,’+-e’);
end.
Результатом розв’язку даної задачі буде х*=0,78544 0,00005;
