Здравствуйте, Грибанов Фёдор!
Метод половинного деления, увы, к интерполяционному многочлену Ньютона не имеет никакого отношения...
Мне изучать численные методы приходилось аж 25 лет назад...
Давненько это было...
Ничего, вспомним молодость...
Как известно, интерполяционный многочлен Ньютона задается формулой
Ln(X) = f(X0)+(X-X0)f(X0,X1)+(X-X0)(X-X1)f(X0,X1,X2)+...+(X-X0)(X-X1)...(X-Xn-1)f(X0,X1,...,Xn)
где f(X0,...,Xn)=Sum(i=0,...n)(f(Xi)/((Xi-X0)...(Xi-Xi-1)(Xi-Xi+1)...(Xi-Xn)))
Более подробно теорию смотрим, например,
здесьОсталось только запрограммировать. Требуемая программа в приложении. Программа небольшая, разберетесь.
Таблицы X и Y задал в виде массивов.
Приложение:
//Ln(X) = f(X0)+(X-X0)f(X0,X1)+(X-X0)(X-X1)f(X0,X1,X2)+...+(X-X0)(X-X1)...(X-Xn-1)f(X0,X1,...,Xn)
//f(X0,...,Xn)=Sum(i=0,...n)(f(Xi)/((Xi-X0)...(Xi-Xi-1)(Xi-Xi+1)...(Xi-Xn)))
#include <stdio.h>
void main(void)
{
const int n = 10;
double Xi[n] = { 0.12, -3.48, -4.45, -6.19, 1.1, -3.81, 0.84, -2.08, -1.28, 5.44};
double Yi[n] = {82.16, 61.02, 44.56, 82.52, 99.17, 70.24, 63.23, 66.48, 48.35, 40.24};
double X = -4.32;
double f, LN, XXX, XX=1.;
int i, j, k;
for (i=1, LN=Yi[0]; i<n; i++)
{
XX *= (X-Xi[i-1]);
for (j=0,f=0; j<=i; j++)
{
for (k=0,XXX=1.; k<=i; k++)
{
if (k!=j)
XXX *= Xi[j]-Xi[k];
}
f += Yi[j]/XXX;
}
LN += XX * f;
}
printf("Y[X] = %g\n",LN);
}
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен