Neville-algoritmus
Kiejtés
- IPA: [ ˈnɛvilːɛɒlɡoritmuʃ]
Főnév
Neville-algoritmus
A **Neville-algoritmus** egy numerikus interpolációs módszer, amely segítségével adott adatpontok alapján egy közelítő polinomot határozunk meg. A módszer rekurzívan számítja ki az interpoláló polinomot, amely áthalad az adatpontokon, és hatékony megoldást nyújt interpolációs problémákra.
Probléma
Adottak az \( n+1 \) pontok: ahol . A cél egy interpoláló polinom meghatározása, amelyre:
Neville-algoritmus alapja
Az interpoláló polinomot rekurzívan számítjuk:
- Indulás: Az egyes adatpontokra a polinom:
- Rekurzió: Ha az pontokon áthaladó polinom, akkor:
Ahol és kisebb fokszámú interpoláló polinomok.
- Végső polinom: Az interpolált érték a polinom -re való értéke lesz.
Pszeudokód
NEVILLE(x, xi, yi):
Input:
x - az interpolálandó érték,
xi - az \( x_i \) adatpontok listája,
yi - az \( y_i \) adatpontok listája.
Output:
y - az interpolált érték.
n = hossz(xi)
P = n x n-es mátrix, kezdetben üres
for i = 0 to n-1:
P[i][i] = yi[i] # Diagonális inicializálás
for j = 1 to n-1:
for i = 0 to n-j-1:
P[i][i+j] = ((x - xi[i+j]) * P[i][i+j-1] - (x - xi[i]) * P[i+1][i+j]) / (xi[i] - xi[i+j])
return P[0][n-1]
Neville-algoritmus működése
1. Adatpontok inicializálása
Minden adatpontot egy-egy egyszerű polinom reprezentál:
2. Rekurzív számítás
Fokozatosan építjük fel a polinomokat, amelyek egyre több adatpontra illeszkednek. Az -edik elem az pontokon áthaladó polinom értéke.
3. Végső érték
A mátrix eleme lesz a keresett polinom értéke.
Python implementáció
def neville(x, xi, yi):
"""
Neville-algoritmus az interpolációhoz.
:param x: Az interpoláció helye.
:param xi: Az adatpontok x koordinátái.
:param yi: Az adatpontok y koordinátái.
:return: Az interpolált érték.
"""
n = len(xi)
P = [[0] * n for _ in range(n)]
# Inicializálás
for i in range(n):
P[i][i] = yi[i]
# Rekurzív számítás
for j in range(1, n):
for i in range(n - j):
P[i][i + j] = ((x - xi[i + j]) * P[i][i + j - 1] - (x - xi[i]) * P[i + 1][i + j]) / (xi[i] - xi[i + j])
return P[0][n - 1]
# Példa használat
xi = [1, 2, 3]
yi = [1, 4, 9] # y = x^2
x = 1.5
result = neville(x, xi, yi)
print(f"Interpolált érték a {x} helyen: {result}")
Példa
Bemenet
Adott adatpontok:
Interpolálandó hely:
Kimenet
A Neville-algoritmus a polinom értékét -nél:
Előnyök
- **Pontosság**: Garantáltan áthalad az összes adatponton.
- **Rugalmas**: Könnyen alkalmazható egyenlőtlenül elosztott adatpontokra.
- **Numerikus stabilitás**: Az interpoláló polinom fokozatos építése csökkenti a numerikus hibák valószínűségét.
Hátrányok
- **Időigény**: Az algoritmus bonyolultságú, ami nagy adatpontok esetén lassabb.
- **Nem adaptív**: Ha új adatpontokat adunk hozzá, az algoritmust újra kell futtatni.
- **Rossz extrapoláció**: Csak interpolációra alkalmas, extrapoláció esetén pontatlanság léphet fel.
Alkalmazások
- **Numerikus analízis**: Függvények értékeinek közelítése ismert adatpontok alapján.
- **Fizikai szimulációk**: Ismeretlen függvények numerikus megközelítése.
- **Adatmodellezés**: Kísérleti adatokhoz illeszkedő polinom meghatározása.
A **Neville-algoritmus** hatékony interpolációs módszer, amelyet akkor érdemes használni, ha az adatpontok száma kicsi és pontos interpolációra van szükség.
Fordítások
- Neville-algoritmus - Értelmező szótár (MEK)
- Neville-algoritmus - Etimológiai szótár (UMIL)
- Neville-algoritmus - Szótár.net (hu-hu)
- Neville-algoritmus - DeepL (hu-de)
- Neville-algoritmus - Яндекс (hu-ru)
- Neville-algoritmus - Google (hu-en)
- Neville-algoritmus - Helyesírási szótár (MTA)
- Neville-algoritmus - Wikidata
- Neville-algoritmus - Wikipédia (magyar)