for (i = 0; i < N; i++){
P = 1;
for (j = 0; j < N; j++)
if (j != i) P = P*(t-ti[j])/(ti[i] - ti[j]);
}
while a <> 100 do begin
Inc( a );
for i:= 0 to Length( xArray ) do begin
p:=1;
for j:= 0 to Length(xArray) do begin
if j <> i then begin
p:= p+(a/100-yArray[j])/(yArray[i] - yArray[j]);
end
end
end;
xt:= //тут должна быть формула для расчёта координаты с применением полинома?
yt:= //тут должна быть формула для расчёта координаты с применением полинома?
chart1.SeriesList[1].AddXY(xt, yt);
end;
как-то учитывать 5 начальных точекТак укажите как. Или хотя бы нарисуйте.
как-то учитывать 5 начальных точекЭто называется "вопрос нужно конкретизировать", иначе удаление.
xt
делать a
. При вычислении p надо домножать на yArray[i]
, а не x. Все p
в цикле по i надо будет просуммировать - это и будет значение yt
. While a <> 100 do
begin
a:=a+1;
for i:= 0 to Length(xArray) do
begin
p:=1;
for j:= 0 to Length(xArray) do
begin
if j <> i then
begin
p:= p+(a/100-yArray[j])/(yArray[i] - yArray[j]);
end
end
end;
xt:= a;
yt:= p;
chart1.SeriesList[1].AddXY(xt, yt);
While a <> 100 do
begin
yt:=0;
a:=a+1;
for i:= 0 to Length(xArray) do
begin
p:=1;
for j:= 0 to Length(xArray) do
begin
if j <> i then
begin
p:= p*(a/100-xArray[j])/(xArray[i] - xArray[j]);
end
end;
yt:= yt+yArray[i]*p;
end;
xt:= //непонятен порядок расчёта
chart1.SeriesList[1].AddXY(xt, yt);
end;
While a <> 100 do
begin
yt:=0;
a:=a+1;
for i:= 0 to Length(xArray) do
begin
p:=1;
for j:= 0 to Length(xArray) do
begin
if j <> i then
begin
p:= p*(a-xArray[j])/(xArray[i] - xArray[j]);
end
end;
yt:= yt+yArray[i]*p;
end;
xt:= a;
chart1.SeriesList[1].AddXY(xt, yt);
но общая картина остаётся невернойВ смысле - не верной? Она верная. Такая полиномиальная кривая обязательно на бесконечности x уйдет в бесконечность по y. Полиномы Лагранжа лишь гарантируют, что кривая пройдет через ключевые точки. А дальше она может идти как угодно.
За ними продолжать кривую нельзя
Подскажите, получится это реализовать ограничением xt и yt диапазоном между минимальным и максимальным значением в xArray и yArray?
То есть распределяем 100 точек по нужным координатам, соединяем их и получаем нужную кривую.