- •5.1 Метод Крамера
- •1. Постановка задачі
- •2. Математичний опис методу Метод Ньютона (метод дотичних)
- •Підставимо (7) у (6), отримаємо
- •2.1 Алгоритм
- •3. Практична частина Фортран
- •3.1 Структурна схема програми
- •3.2 Чисельний експеримент
- •3.3 Опис програми
- •3.4 Оператори
- •4. Методи розв’язання системи лінійних рівнянь
- •4.1 Метод Крамера
- •Опис методу:
- •4.2 Метод Гауса
- •4.3 Матричний метод
- •5. Практична частина Excel
- •5.1 Метод Крамера
- •5.2 Метод Гауса
- •5.3 Матричний метод
- •Література
Підставимо (7) у (6), отримаємо
Звідси
.
(8)
Тут
,
|
|
|
|
рис. 2
Таким чином, швидкість збіжності методу Ньютона квадратична. Критерій завершення ітераційного процесу має вигляд
|xn – xn-1|<ε.
Зауваження. У загальному випадку збіг з точністю до ε двох послідовних наближень xn-1 і хn не гарантує, що з тією ж точністю співпаде xn і ξ (см. рис. 2). Тому доцільно перевіряти крім різниці |xn – xn-1|<ε також значення функції f(xn): |f(xn)|< ε1.
2.1 Алгоритм
Беремо дві границі між якими знаходиться корінь. Далі потрібно вибрати ту межу, яка задовольняє умову: f (x) * f'' (x)> 0. У своє рівняння і в подвійну похідну від свого рівняння замість х підставляємо одну з меж. Якщо умова задоволено значить ця межа буде нашим xn.
Доки не виконана умова зупинки, в якості якої можна взяти
або
(тобто
похибку в потрібних
межах),
обчислюють
нове наближення:
Якщо умова виконана, то хn+1 буде нашим коренем
3. Практична частина Фортран
3.1 Структурна схема програми
3.2 Чисельний експеримент
Program p1
print*,’vvedite granizy1, granizy2, tohnost’
read*,a,b,e
c=((a**3)-(a**2)+3)*((6*a)-2)
if(c.gt.0) then
xn=a
else
xn=b
end if
g=xn
90 t=g
g=t-((t**3-t**2+3)/(3*t**2-2*t))
if((g-t).lt.e) then
print*,g
else
go to 90
end if
stop
У результаті розрахунків програми, корінь рівняння х3-х2+3 дорівнює -1,17456
3.3 Опис програми
1. Зчитуємо а, b, e, де а, b – границі , а е – точність
2. Задаємо c=((a**3)-(a**2)+3)*((6*a)-2), де
((a**3)-(a**2)+3) – це f(x), а ((6*a)-2) – це f ”(x)
3. Створюємо умову if(c.gt.0). Вона означає: якщо c > 0, то xn=a, а якщо ні, то xn=b
4. Присвоюємо g значення xn
5. Присвоюємо t значення g, та ставимо цій строчці мітку 90
6. Задаємо g=t-((t**3-t**2+3)/(3*t**2-2*t)), де
g – це (xn+1); t – це xn; (t**3-t**2+3) – це f(x); (3*t**2-2*t) – це f ’(x)
7. Створюємо умову if((g-t).lt.e). Вона означає: якщо (g-t) > e, то g виводиться на екран як корінь рівняння, а якщо ні, то програма повертається до мітки 90 та присвоює t значення g. Програма буди робити це знову і знову доки не знайде корінь.
3.4 Оператори
Умовний оператор if призначений для організації разветвляющихся обчислювальних процесів, а також для передачі управління іншим операторам.
У Фортрані є 3 типи умовних операторів:
1) умовний арифметичний оператор
2) умовно-логічний оператор
3) блочний(структурний) оператор
Оператори програмного модуля можуть виконуватися в порядку, коли попередній оператор передає управління наступному за ним оператору. Такий порядок виконання називається природним. Для зміни природного порядку в Фортрані використовують оператори переходу. Їх існує 3: 1) Оператор без умовного переходу 2) оператор переходу по обчислень 3) оператор переходу за приписом
