
KP_2_Russkikh_1323
.docx```//Задание 2 вариант 28 стр 51
using System;
class Program
{
static void Main(string[] args)
{
// Заданные значения
double[] x = { 0.40, 0.46, 0.52 }; // x_i
double[] y = { 1.3366, 1.3521, 1.3677 }; // y_i
double xT = 0.229; // xT
// Вычисление приближенного значения функции с помощью интерполяции вперёд
double forwardResult = NewtonForwardInterpolation(x, y, xT);
Console.WriteLine("Приближенное значение функции f(xT) при xT = {0} (интерполяция вперёд): {1}", xT, forwardResult);
// Вычисление приближенного значения функции с помощью интерполяции назад
double backwardResult = NewtonBackwardInterpolation(x, y, xT);
Console.WriteLine("Приближенное значение функции f(xT) при xT = {0} (интерполяция назад): {1}", xT, backwardResult);
}
// Функция для вычисления приближенного значения функции по интерполяционной формуле Ньютона (интерполяция вперёд)
static double NewtonForwardInterpolation(double[] x, double[] y, double xT)
{
double result = 0;
// Разделенные разности
double[] deltaY = new double[y.Length - 1];
for (int i = 0; i < deltaY.Length; i++)
{
deltaY[i] = y[i + 1] - y[i];
}
// Сумма для интерполяции вперёд
double sum = deltaY[0];
double term = 1;
for (int i = 1; i < y.Length - 1; i++)
{
term *= (xT - x[i - 1]) / (i);
sum += term * deltaY[i];
}
result = y[0] + sum;
return result;
}
// Функция для вычисления приближенного значения функции по интерполяционной формуле Ньютона (интерполяция назад)
static double NewtonBackwardInterpolation(double[] x, double[] y, double xT)
{
double result = 0;
// Разделенные разности
double[] deltaY = new double[y.Length - 1];
for (int i = 0; i < deltaY.Length; i++)
{
deltaY[i] = y[i + 1] - y[i];
}
// Сумма для интерполяции назад
double sum = deltaY[y.Length - 2];
double term = 1;
for (int i = 1; i < y.Length - 1; i++)
{
term *= (xT - x[x.Length - i]) / (i);
sum += term * deltaY[y.Length - i - 1];
}
result = y[y.Length - 1] + sum;
return result;
}
}```