
Лаба 1-6 ОАИП, 2сем, 1 курс [Вариант 1] / Отчет2_5
.docx/*
Трацевский Никита Андреевич, группа 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;
}
Скриншот работоспособности программы: