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

lab9 / main

.cpp
Скачиваний:
3
Добавлен:
22.12.2018
Размер:
2.63 Кб
Скачать
яю#include "pch.h"

#include <iostream>

#include <iomanip>

#define N 11

using namespace std;



const double X[] = { 0.1096, 1.1240, 1.3096, 2.4160, 3.6336, 4.6504, 5.0360, 5.3056,5.5000, 5.8064 };

const double Y[] = { -4.8652, 0.2038, 0.3613,-0.0606, -0.3440, 2.7259, 15.9677, 24.9477, 32.8147, 39.3750, 51.3433 };



double Eitken(int a, int b, double x){

	const int n = N;

	if (b - a > n) exit(0);

	if ((b - a) == 1){

		return (1 / (X[b] - X[a])*((x - X[a])* Y[b] - (x - X[b])* Y[a]));

	}else{

		return (1 / (X[b] - X[a])*((x - X[a])*Eitken(a + 1, b, x) - (x - X[b])*Eitken(a, b - 1, x)));

	}

	return 0;

}



double int_Newton(double x){



	const int n = N;

	double a, b;

	int i, j, k;

	double f[n][n];



	for (i = 0; i < n; i++)

		f[i][0] = (Y[i + 1] - Y[i]) / (X[i + 1] - X[i]);



	for (j = 1; j < n; j++)

		for (i = 0; i < (n - j ); i++)

			f[i][j] = (f[i + 1][j-1] - f[i][j-1]) / (X[j + i + 1] - X[i]);

	b = Y[0];



	for (i = 1; i <= n; i++){

		a = 1;

		for (k = i; k > 0; k--)

			a *= (x - X[k - 1]);

		b+= f[0][i - 1] * a;

	}

	return (b);

}



int main(){

	setlocale(LC_ALL, "Russian");

	double x = 2.6816;

	cout << "?> -9B:8=C y = " << fixed << setprecision(15) <<Eitken(0,11,x)<<endl;

	cout << "?> LNB>=C y = " << fixed << setprecision(15) << int_Newton(x) << endl;

}

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