Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лабы / 1-1

.cpp
Скачиваний:
21
Добавлен:
11.06.2015
Размер:
3.34 Кб
Скачать
#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();

}
  
Соседние файлы в папке лабы