
Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:лабы / 1-1
.cpp#include <conio.h>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <fstream>
#define _USE_MATH_DEFINES
#include <math.h>
#include<locale>
using namespace std;
const int n =10;
double a = 0.0, b = 2*M_PI;
double h = (b-a)/n;
double dop= (b-a)/100;
double A[n+1], B[n+1], C[n+1], x[n+1], F[n+1],xdop=a;
double f (double x)
{
return (2*sin((M_PI*x)/3)+x);
}
double S(double X, int xi)
{
return A[xi] + B[xi]*(X-x[xi-1]) + C[xi] * pow(X-x[xi-1], 2);
}
void main()
{ int i;
for (i = 0; i<=n; i++) //находим значение функции в узлах
{
x[i] = a + i*h;
F[i] = f(x[i]);
}
for (i = 1; i <= n; i++) //находим аi
A[i] = F[i-1];
C[1] = (F[1] - F[0])/(h*h); //находим c1
for (i = 1; i<=n-1; i++) //находим ci
C[i+1] =(F[i+1] - 2*F[i] + F[i-1])/(h*h)-C[i];
for (i = 1; i<=n; i++) //находим bi
B[i] =(F[i] - F[i-1])/h - C[i]*h;
cout<<"a= "<<a<<setw(5)<<"b= "<<b<<setw(5)<<"n= "<<n<<endl;
cout <<endl<< setw(12)<< "X" << setw(16) <<"A"<< setw(15) <<"B"<< setw(15) <<"C"<<setw(9)<<endl;
cout<<fixed;
cout<<setw(15)<<setprecision(2)<<x[0]<<setw(15)<<setprecision(4)<< A[0]<<setw(15)<<setprecision(4)<<B[0]<<setw(15)<<setprecision(4)<<C[0]<< setw(15) <<setprecision(4)<<endl;
for (i = 1; i<=n; i++)
cout << setw(15)<<setprecision(2) << x[i]<< setw(15)<<setprecision(4)<< A[i] << setw(15)<<setprecision(4) << B[i] << setw(15) <<setprecision(4)<< C[i]<< setw(15) <<setprecision(4)<<endl;
//added
//std:ofstream fout ("out.txt");
std:ofstream fout ("output.csv");
fout<<"a= "<<";"<<a<<setw(5)<<"b= "<<";"<<b<<setw(5)<<"n= "<<n<<endl;
fout <<endl<< setw(12)<< "X"<<";" << setw(16) << "f(x)"<<";" << setw(15) << "S(x)" <<";"<< setw(20) << "S(x)-f(x)"<<";"<<setw(9)<<"Otn"<<endl;
fout<<fixed;
fout<<setw(15)<<setprecision(2)<<x[0]<<";"<<setw(15)<<setprecision(4)<<f(x[0])<<";"<<setw(15)<<setprecision(4)<<abs(S(x[0],1))<<";"<<setw(15)<<setprecision(4)<<fabs(f(xdop)-S(xdop, 1))<<";"<< setw(15) <<setprecision(4)<<(fabs(S(xdop,1) - f(xdop)))/f(xdop)<<endl;
for (i = 1; i<=n; i++)
{xdop+=dop;
fout << setw(15)<<setprecision(2) << x[i]<<";"<< setw(15)<<setprecision(4)<< f(x[i])<<";" << setw(15)<<setprecision(4) << S(x[i],i)<<";" << setw(15) <<setprecision(4)<< fabs(S(xdop,1) - f(xdop))<<";"<< setw(15) <<setprecision(4)<<(fabs(S(x[i],i) - f(xdop)))/f(xdop) << endl;
}
fout <<endl<<setw(9)<<"i="<<";"<< setw(15)<< "A[i]" <<";"<< setw(16) << "B[i]" <<";"<< setw(15) << "C[i]"<<endl;
fout<<fixed;
for (i = 0; i<=n; i++)
fout <<setw(9)<<i<<";"<< setw(15)<<setprecision(4) << A[i]<<";"<< setw(15)<<setprecision(4)<< B[i]<<";" << setw(15)<<setprecision(4) << C[i] << endl;
fout << "S(x)-f(x)"<<endl;
for (i=10;i<=100;i++)
{xdop+=dop;
int c=i/10;
fout << fabs(S(xdop,c) - f(xdop))<<";"<<endl;
}
fout.close();
//end added
getch();
}