Interpolacja Hermite'a C++

sir_dudi
Użytkownik
Użytkownik
Posty: 160
Rejestracja: 3 lis 2006, o 13:27
Płeć: Mężczyzna
Lokalizacja: Wola Żelichowska
Podziękował: 2 razy
Pomógł: 1 raz

Interpolacja Hermite'a C++

Post autor: sir_dudi »

Witam, napisałem program do interpolacji Hermie'a, wszystko działało ok dopoki nie skusiłem się interpolować paczki danych o wielkości powyżej 6, czyli wielomianem do piątego rzędu w górę. Do pewnego momentu jest ok, a potem są koszmarne zakłócenia, czytałem w internecie artykuł który w którym autor mówił że ta metoda dla wiekszych stopni wielomianu interpolującego daje niezadawalające rezultaty. Czy możecie mi powiedzieć czy to prawda?
Funkcja interpolujaca

Kod: Zaznacz cały

void interp::Interpoluj(int rozm,lista *ptr)
{


wielomian = new double[rozm];    //tablica na wspolczynniki wielomianu i wezly
osX = new double[rozm];

for(int i = 0; i<rozm ; i++)
{
        wielomian[i] = *ptr->index(i);
        osX[i] = ptr->czasIndex(i);

}
int deg = rozm -1;
double val;
	for(int k=1; k<=deg; k++)     //liczneie wspoczynnikow
	{
		val=wielomian[deg];
		for(int l=deg; l>=k; l--)
		{
			if(osX[l] != osX[l-k])
			{
				wielomian[l]=(val-wielomian[l-1])/(osX[l]-osX[l-k]);
				val=wielomian[l-1];
			}
			else
				wielomian[l]=wielomian[l-1]/k;
		}
	}

}
ODPOWIEDZ