Newton-módszer
Kiejtés
- IPA: [ ˈnɛftomːoːt͡sːɛr]
Főnév
- (matematika, algoritmusok) A Newton-módszer (vagy Newton-Raphson módszer) egy numerikus eljárás, amelyet a valós számok gyökeinek közelítésére használnak. Ezt a módszert elsősorban az egyenlet megoldásának keresésére alkalmazzák. Az eljárás lényege, hogy a közelítést fokozatosan javítják, amíg el nem érik a kívánt pontosságot.
A Newton-módszer lépései
1. Kezdeti közelítés: Válasszunk ki egy kezdeti közelítést, amely közel áll a keresett gyökérhez.
2. Iteratív lépés: A következő közelítést az alábbi képlettel számítjuk ki:
ahol a függvény deriváltja az pontban.
3. Folyamatos iteráció: Ismételjük meg a 2. lépést, amíg közelítése nem éri el a kívánt pontosságot (pl. , ahol egy kis pozitív szám).
Előnyök - Gyors konvergencia: A Newton-módszer általában gyorsan konvergál, különösen, ha a kezdeti közelítés közel van a valós gyökhöz. - Alkalmazhatóság: A módszer bármilyen differenciálható függvényre alkalmazható, amennyiben a deriváltja nem nulla a gyök körüli pontokban.
Hátrányok - Kezdeti közelítés érzékenysége: Ha a kezdeti közelítés nem megfelelő, a módszer nem mindig konvergálhat, vagy a nem kívánt gyökérhez vezethet. - Derivált szükségessége: A módszer igényli a függvény deriváltját, amely nem mindig könnyen meghatározható. - Több gyökér esetén: Ha a keresett gyökér többszörös, a konvergencia lassabb lehet.
Példa Legyen . Az gyökének keresésére alkalmazzuk a Newton-módszert:
1. Kezdeti közelítés: 2. Derivált: 3. Iteráció:
- -
Ismételjük meg az iterációt, amíg a kívánt pontosságot elérjük.
Newton-módszer
A Newton-módszer egy iteratív numerikus eljárás, amelyet a nemlineáris egyenletek gyökeinek meghatározására vagy függvények minimumának/maximumának keresésére használnak. Az algoritmus gyorsan konvergál a gyökökhöz, ha a kezdőérték elég közel van a tényleges megoldáshoz.
Matematikai alapok
Adott egy (f(x) = 0) egyenlet, ahol (f(x)) egy folytonosan deriválható függvény. A Newton-módszer a lineáris közelítést használja az iterációs folyamat során.
Az iterációs képlet: [ x_{n+1} = x_n - ]
Lépések:
- Kezdj egy (x_0) kezdeti értékkel (kezdő közelítés).
- Számítsd ki az új (x_{n+1}) értéket a fenti képlet szerint.
- Ismételd az iterációt, amíg az (x_{n+1}) és az (x_n) közötti különbség elég kicsi (azaz a módszer konvergált).
Konvergencia feltételei
A Newton-módszer gyorsan konvergál, ha: 1. A kezdőérték ((x_0)) elég közel van a gyökhez. 2. A (f(x)) függvény deriváltja ((f’(x))) nem nullázódik ki a gyök környezetében. 3. A függvény kétszer deriválható a gyök környezetében.
Példa
Oldjuk meg a (f(x) = x^2 - 2 = 0) egyenletet Newton-módszerrel (() kiszámítása):
1. Függvény definiálása
[ f(x) = x^2 - 2, f’(x) = 2x ]
2. Iterációs képlet
[ x_{n+1} = x_n - ]
3. Kezdőérték
Tegyük fel, hogy (x_0 = 1).
4. Iterációk
- Iteráció: (x_1 = 1 - = 1.5)
- Iteráció: (x_2 = 1.5 - )
- Iteráció: (x_3 = 1.4167 - )
Az eredmény ( ).
Python implementáció
def newton_method(f, df, x0, tol=1e-6, max_iter=100):
x = x0
for _ in range(max_iter):
fx = f(x)
dfx = df(x)
if abs(fx) < tol:
return x
if dfx == 0:
raise ValueError("A derivált nullával egyenlő, nem lehet osztani.")
x -= fx / dfx
raise ValueError("A módszer nem konvergált a maximális iterációk alatt.")
# Példa függvény: f(x) = x^2 - 2
f = lambda x: x**2 - 2
df = lambda x: 2 * x
# Kezdőérték
x0 = 1.0
# Eredmény
root = newton_method(f, df, x0)
print(f"A gyök: {root}")
Kimenet:
A gyök: 1.4142135623746899
C++ implementáció
#include <iostream>
#include <cmath>
#include <stdexcept>
using namespace std;
double newton_method(double (*f)(double), double (*df)(double), double x0, double tol = 1e-6, int max_iter = 100) {
double x = x0;
for (int i = 0; i < max_iter; ++i) {
double fx = f(x);
double dfx = df(x);
if (abs(fx) < tol) {
return x;
}
if (dfx == 0) {
throw runtime_error("A derivált nullával egyenlő, nem lehet osztani.");
}
x -= fx / dfx;
}
throw runtime_error("A módszer nem konvergált a maximális iterációk alatt.");
}
double f(double x) {
return x * x - 2;
}
double df(double x) {
return 2 * x;
}
int main() {
double x0 = 1.0; // Kezdőérték
try {
double root = newton_method(f, df, x0);
cout << "A gyök: " << root << endl;
} catch (const exception& e) {
cerr << "Hiba: " << e.what() << endl;
}
return 0;
}
Kimenet:
A gyök: 1.41421
Előnyök
- Gyors konvergencia:
- Ha a kezdőérték elég közel van a gyökhez, az algoritmus kvadratikusan konvergál, ami azt jelenti, hogy az iterációs hibák négyzetesen csökkennek.
- Egyszerű implementáció:
- Könnyen megvalósítható, ha a deriváltak számítása nem túl bonyolult.
Hátrányok
- Kezdőértéktől függő:
- Ha a kezdőérték távol van a gyöktől, az algoritmus lassan konvergálhat, vagy egyáltalán nem találja meg a gyököt.
- Lokális optimumok:
- Ha a derivált nullához közelít ((f’(x) )), az algoritmus meghibásodhat.
- Nem mindig működik nemlineáris rendszereknél:
- További információra lehet szükség komplex függvényeknél.
Alkalmazások
- Nemlineáris egyenletek megoldása:
- Gyökök meghatározása.
- Optimális pontok keresése:
- Függvény minimumának vagy maximumának meghatározása (gradiens alapú optimalizálás).
- Fizikai modellek:
- Dinamikus rendszerek stabilitásának vizsgálata.
- Képfeldolgozás:
- Illesztési algoritmusokban.
Összegzés
A Newton-módszer egy gyors és hatékony numerikus eljárás, amelyet széles körben használnak matematikai, mérnöki és tudományos alkalmazásokban. Bár kezdőértéktől függően instabil lehet, megfelelő kezdeti közelítéssel az egyik leghatékonyabb módszer nemlineáris egyenletek megoldására.
Fordítások
- angol: Newton’s method (en)
- orosz: метод Ньютона (ru) (metod Nʹjutona)
Etimológia
- Newton-módszer - Értelmező szótár (MEK)
- Newton-módszer - Etimológiai szótár (UMIL)
- Newton-módszer - Szótár.net (hu-hu)
- Newton-módszer - DeepL (hu-de)
- Newton-módszer - Яндекс (hu-ru)
- Newton-módszer - Google (hu-en)
- Newton-módszer - Helyesírási szótár (MTA)
- Newton-módszer - Wikidata
- Newton-módszer - Wikipédia (magyar)