Скачиваний:
52
Добавлен:
15.06.2014
Размер:
32.88 Кб
Скачать

/*

Трацевский Никита Андреевич, группа 243302

Лабораторная работа №5

Тема: МЕТОДЫ РЕШЕНИЯ НЕЛИНЕЙНЫХ УРАВНЕНИЙ

Вариант 1

*/

Консольный режим.

Код программы:

#include <iostream.h>

#include <conio.h>

#include <vector.h>

#include <vcl.h>

#include <math.h>

#include <windows.h>

#include <iomanip.h>

using namespace std;

double F (double x)

{

return 4*x-7*sin(x);

}

double MI(double alfa, double e)

{

double d, de, x1;

double x0 = alfa;

double it = 0;

do

{

it++;

x1 = F(x0);

de = fabs (x1-x0);

x0 = x1;

}

while (de>e);

return x0;

}

int main()

{

SetConsoleOutputCP(1251);

SetConsoleCP(1251);

double a, b, m, h, xt, e, ht;

double alpha, beta, pribl;

vector<double> x;

vector<double> y;

cout <<"+"<<setw(78)<<setfill('-')<<"+" << setfill(' ')<<endl;

cout <<"|"<<setw(43)<<"Введите: "<<setw(35)<<"|"<<endl;

cout <<"+"<<setw(78)<<setfill('-')<<"+" << setfill(' ')<<endl;

cout << " Начало интервала (а): ";

cin >> a;

cout << " Конец интервала (b): ";

cin >> b;

cout << " Количество выводимых точек (m): ";

cin >> m;

cout << " Погрешность (e): ";

cin >> e;

cout << " Шаг деления интервала на отрезки (ht): ";

cin >> ht;

cout <<"+"<<setw(78)<<setfill('-')<<"+" << setfill(' ')<<endl;

h = (b-a)/m;

xt = a;

do

{

x.push_back(xt);

y.push_back(F(xt));

xt+=h;

}

while(xt < b);

cout <<"+"<<setw(78)<<setfill('-')<<"+" << setfill(' ')<<endl;

cout <<"|"<<setw(47)<<" Значение функции "<<setw(31)<<"|"<<endl;

cout <<"+"<<setw(78)<<setfill('-')<<"+" << setfill(' ')<<endl;

cout <<"|"<<setw(20)<<"X"<<setw(20)<< "|" << setw(20) <<"Y"<< setw(18) <<"|"<< endl;

cout <<"+"<<setw(78)<<setfill('-')<<"+" << setfill(' ')<<endl;

for(size_t i = 0; i < x.size(); i++)

{

cout << "|"<<setw(22)<< x[i] <<setw(18) <<"|"<<setw(22)<< y[i] <<setw(16) <<"|" << endl;

cout <<"+"<<setw(78)<<setfill('-')<<"+" << setfill(' ')<<endl;

}

alpha = a;

beta = alpha+ht;

cout <<"+"<<setw(78)<<setfill('-')<<"+" << setfill(' ')<<endl;

cout <<"|"<<setw(47)<<" Корни функции "<<setw(31)<<"|"<<endl;

cout <<"+"<<setw(78)<<setfill('-')<<"+" << setfill(' ')<<endl;

cout <<"|"<<setw(20)<<"При Х равном:"<<setw(20)<< "|" << setw(20) <<" Функия F(x) равна:"<< setw(18) <<"|"<< endl;

cout <<"+"<<setw(78)<<setfill('-')<<"+" << setfill(' ')<<endl;

do

{

if(F(alpha)*F(beta) < 0)

{

cout << "|"<<setw(22)<<MI(alpha, e) <<setw(18) <<"|"<<setw(22)<< F(MI(alpha, e)) <<setw(16) <<"|" << endl;

cout <<"+"<<setw(78)<<setfill('-')<<"+" << setfill(' ')<<endl;

}

alpha = beta;

beta +=ht;

}

while(alpha+ht < b);

getch();

return 0;

}

Скриншот работоспособности программы:

Соседние файлы в папке Лаба 1-6 ОАИП, 2сем, 1 курс [Вариант 1]