Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра КСА
Звіт
з лабораторної роботи №3
з курсу “Комп’ютерні методи дослідження систем керування”
МЕТОДИ УТОЧНЕННЯ КОРЕНІВ
НЕЛІНІЙНИХ РІВНЯНЬ
Варіант №4
Львів-2014
Мета роботи:
Вивчити основні методи уточнення коренів нелінійних рівнянь з одним невідомим.
Завдання:
Знайти корінь нелінійного рівняння методом хорд з пошуком ділянки локалізації
№4
/
Код програми:
#include "conio.h"
#include "math.h"
#include "iostream"
#include <stdlib.h>
#include <stdio.h>
using namespace std;
int main()
{
setlocale(0,"");
double perevirka = 0,x,xold=0, fx, a=-1.5, b=0, h=0.001, fa, fb, eps=0.0001;
int i=0;
//Пошук ділянки локалізації
b=a+h;
fa=cos(a)-(1/(a+2));
fb=cos(b)-(1/(b+2));
//Задания умови, при якій потрібно рухатися назад в від'ємним кроком
if (fabs(fb)>fabs(fa) && fa*fb>0)
{h=(-1)*h;}
b=a+h;
fb=cos(b)-(1/(b+2));
//Задания циклу, для виконання умови
while (fa*fb>0)
{
a=b;
b=a+h;
fa=cos(a)-(1/(a+2));
fb=cos(b)-(1/(b+2));
i=i+1;
}
cout<<"Кiлькiсть iтерацiй: "<<"["<<i<<"]"<<endl;
//Ітераційний процес
x = a;
do
{
xold=x;
fa=cos(a)-(1/(a+2));
fb=cos(b)-(1/(b+2));
x = a-fa*((b-a)/(fb-fa));
fx=cos(x)-(1/(x+2));
if(fx*fa>0) {a=x;}
else {b=x;}
}while (fabs(((x-xold)/x))<eps); //Умова збіжності
cout<<"Корiнь рiвняння: "<< x << endl;
perevirka = cos(x)-(1/(x+2));
printf ("Перевiрка: %2.8f \n", 2.05797e-007);
}
Результати:
/