Міністерство освіти і науки України
Національний університет «Львівська Політехніка»
Інститут комп’ютерних технологій автоматики та метрології
Кафедра Безпеки Інформаційних Технологій
Звіт
Про виконання лабораторної роботи № 1
«Комп’ютерні методи дослідження
інформаційних процесів і систем»
Львів 2010
(Варіант18)
Мета роботи: – ознайомитись з методами уточнення коренів нелініійних рівнянь з одним невідомим.
Короткі теоретичні відомості:
Нехай задане рівняння:
, (1)
де – неперервна функція, визначена на проміжку і має різні знаки на кінцях цього проміжку, тобто виконується умова
(2)
Крім того, та – неперервні і зберігають знак на проміжку . Необхідно знайти корінь рівняння (1) із заданою граничною абсолютною похибкою Е.
Поширеним методом розв’язку цієї задачі є метод поділу проміжку навпіл, метод хорд, метод Ньютона (дотичних), комбінований метод хорд та дотичних, метод простої ітерації, метод Ейткена–Стефенсона і метод Стефенсона.
Завдання:
Ознайомитись з основними теоретичними відомостями.
Розробити детальну блок-схему алгоритму методу.
Написати програму, яка забезпечить розв’язок та виведення на екран результатів роботи.
Ввести в комп’ютер програму згідно з отриманим завданням.
Здійснити відладку введеної програми, виправивши виявлені помилки.
Виконати програму. Текст відлагодженої програми та отримані результати оформити у звіт з лабораторної роботи.
вар.
рівняння
відрізок
похибка
метод
18
x3 – 3x – 1 = 0
[-2;1]
0,0001
Нютона
Список ідентифікаторів, констант, методів, використаних в програмі та блок-схемі алгоритму:
Х0 – змінна, початкове значення функції на початку програми та перед кожною ітерацією, вихідна величина плаваючого типу.
а – змінна, нижня межа проміжку, вхідна величина плаваючого типу.
b – змінна, верхня границя проміжку, вхідна величина плаваючого типу.
Е – змінна, значення абсолютної похибки обчислення, вхідна величина.
Х1 – Кінцеве значення функції по викнані кожної ітерації, та програми загалом, вихідна величина плаваючого типу.
dE – Значення похибки вна даній ітерації, допоміжна величина.
Std::cout<< – метод який забезпечує введення в програму вхідних величин.
Cin>> – метод класу STD., який забезпечує зчитування значення з клавиатури.
int Main() – метод класу Program, який забезпечує початок роботи програми.
Блок-схема:
Остаточна версія програми:
#include "stdafx.h"
#include <iostream>
#include <math.h>
int main()
{
double a,b,E,dE,X1,Xo=0;
std::cout<<"vvedit a,b,E: ";
std::cin>>a>>b>>E;
Xo=a;
if(((Xo*Xo*Xo-3*Xo-1)*(6*Xo)<=0))
{
Xo=b;
}
m1:X1=Xo-(Xo*Xo*Xo-3*Xo-1)/(3*Xo*Xo-3);
dE=fabs((X1-Xo));
//dE=X1-Xo;
//if(dE<0){dE=}
if(dE>E)
{
Xo=X1;
goto m1;
}
std::cout<<"\n X = "<<X1;
std::cin>>a;
return 0;
}
Розв’язання в системі Maple:
>p:=X*X*X-3*X-1/6*X
>fsolve(p,x,-2...1)
Результати роботи програми:
х=-1.53209
Висновок:
На цій лабораторній роботі я ознайомився з методами уточнення коренів нелінійних рівнянь з одним невідомим. Дана програма виконує уточнення методом Нютона і виводить результат на екран.