У нас: 141825 рефератів
Щойно додані Реферати Тор 100
Скористайтеся пошуком, наприклад Реферат        Грубий пошук Точний пошук
Вхід в абонемент



Лабораторна робота - Ітерації
2

Лабораторна робота

Тема:

Ітерації

Мета роботи: оволодіння прийомами складання циклічних алгоритмів i програм iтерацiйного типу, освоєння операторів циклу з пост-умовою та передумовою.

Короткі теоретичні вiдомостi:

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

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

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

Для програмної реалiзацiї iтерацiйного циклу можна використати вже розгляненi оператори if або for, проте мова Сi має i спецiальнi засоби, це:

- оператор циклу з передумовою: WHILE(вираз) оператор;

- оператор циклу з постумовою: DO оператор; WHILE (вираз);

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

Перший оператор while вiдрiзняється вiд другого do...while тим, що в ньому спочатку обчислюється значення виразу i перевіряється умова виходу з циклу, а потім виконується тіло циклу.

варіанту |

Рівняння | Інтервал ізоляції кореня | Похибка обчислення | Метод

розв`язування

16 |

ex-ln(x)-20=0 |

[3;3.2] |

0.0001 |

ітерацій

Ньютона

Ідентифікація змінних:

Змінна | xi | xi+1 | t | e | n

Ідентифікатор | x | y | t | E | n

Графічний алгоритм матиме вигляд:

так

ні

Результати:

Кількість ітерацій:3

Корінь рівняння:3.04990

Висновок: Я оволодів прийомами складання циклічних алгоритмів i програм iтерацiйного типу, освоєння операторів циклу з пост-умовою та передумовою.

Програма матиме вигляд:

Метод ітерацій

do while | If

#include <math.h>

main()

{

int n=0;

float x=3,1,y,t,E=1e-4;

clrscr();

do

{

y=log(log(x)+20);

t=fabs(x-y);

x=y;

n++;

}

while(t>=E);

printf("Кількістьітерацій:%d\n

Корінь рівняння:%f\n",n,x);

getch();

} |

#include <math.h>

main()

{

int n=0;

float x=3.1,y,t,E=1e-4;

clrscr();

begin:y=log(log(x)+20);

t=fabs(x-y);

x=y;

n++;

if(t>=E) goto begin;

printf("Кількістьітерацій:%d\n

Корінь рівняння:%f\n",n,x);

getch();

}

Метод Нютона

while | for

#include <math.h>

main()

{

int n=0;

float x,y=3.1,E=1e-4;

clrscr();

while(fabs(x-y)>=E)

{

x=y;

y=x-(exp(x)-log(x)-20)/(exp(x)-1/x);

n++;

}

printf("Кількістьітерацій:%d\n

Корінь рівняння:%f\n",n,x);

getch();

} | #include <math.h>

main()

{

int n=0;

float x,y=3.1,E=1e-4;

clrscr();

for(;fabs(x-y)>=E;n++)

{

x=y;

y=x-(exp(x)-log(x)-20)/(exp(x)-1/x);

}

printf("Кількістьітерацій:%d\n

Корінь рівняння:%f\n",n,x);

getch();

}