Всем привет
С такими расчетами я столкнулся впервые, сам его не писал полностью, но вот странность что при определенных значениях в расчетах я получаю Nan.
Мне нужно получить расчитаные точки для интерполяции, и нашел в инете примерно как он должен выглядеть.
Ниже привожу с какими точками я тестирую и сам аргаритм.
18;24
21;21
23;18
24;16
23;11
20;8
И вот сам алгоритм
QList<QPointF> tmpResultPoints;
QList<QList<QPointF> > tmpResultPoints2;
auto currentX = list.m_List.begin()->m_X;
auto endX = list.m_List.last().m_X;
while(currentX <= endX)
{
qreal workX = currentX;
qreal calcY = 0.0;
for(int j = 0; j < list.m_List.count(); ++j)
{
qreal Hi = 0.0;
bool bFirst = true;
for(int i = 0; i < list.m_List.count(); ++i)
{
if(i != j)
{
qreal calc = (workX - list.m_List.at(i).m_X) / (list.m_List.at(j).m_X - list.m_List.at(i).m_X);
if(bFirst)
{
Hi = calc;
bFirst = false;
}
else
{
Hi *= calc;
bFirst = false;
}
}
}
qreal Px = list.m_List[j].m_Y * Hi;
calcY += Px;
}
tmpResultPoints.append(QPointF(workX, calcY));
currentX += m_SizeStep;
}
Помогите пожалуйста кто понимает в таких расчетах. Не понимаю где ошибка.
Если надо я могу даже тестовую рабочую прогу скинуть.