Felezési módszer algoritmusa példákkal

Intelligens összefoglalás

A felezési módszer egy megbízható numerikus technika, amely egy folytonos függvény gyökét úgy találja meg, hogy ismételten felezi azt az intervallumot, ahol a függvény előjelet vált. Egyszerű, garantáltan konvergál, és széles körben használják a mérnöki tudományokban, a tudományos számítástechnikában és a kezdő numerikus analízis kurzusokon.

  • Alapötlet: Ismételten felezzük fel az [a, b] zárójelet, ahol f(a) és f(b) ellentétes előjelűek, amíg az intervallum egy tűréshatár alá nem csökken.
  • 📐 Elméleti alap: Közvetlenül a közbenső értéktételre épül, amely garantálja a gyök létezését, amikor a függvény folytonos intervallumon vált előjelet.
  • 🔁 Konvergencia viselkedés: Lineáris konvergencia, ahol a hiba iterációnként feleződik, ami kiszámítható, de viszonylag lassú pontosságjavulást eredményez.
  • Erősségek: Érvényes zárójelek esetén mindig konvergál, csak függvényértékeket igényel, és könnyen implementálható bármilyen programozási nyelven.
  • 🧪 Gyakorlati használat: Hasznos nemlineáris egyenletek megoldásához fizikában, pénzügyekben, gépi tanuláson alapuló hiperparaméter-keresésben és mesterséges intelligencia által vezérelt numerikus megoldókban.

Mi a felezési módszer?

A felezési módszer az egyik legalapvetőbb numerikus technika polinom vagy transzcendentális egyenlet gyökének megtalálására. Úgy működik, hogy zárójelbe teszi a gyökeret tartalmazó intervallumot, majd minden iterációban ezt az intervallumot felére osztja, amíg a gyök elfogadható tűréshatáron belülre nem kerül. Ezen zárójelezési viselkedés miatt a felezési módszert zárójelezési módszernek is nevezik.

Mivel a működési mechanizmusa a bináris kereséshez hasonlít, a felezési módszert bináris keresési módszernek, felezési módszernek vagy dichotómiai módszernek is nevezik. Erős elméleti alapokon nyugszik: a közbenső érték tételén, amely garantálja, hogy egy folytonos, előjelet változtató függvénynek valahol az adott intervallumon belül át kell mennie a nullán.

Miután az alapvető definíciót tisztáztuk, vizsgáljuk meg, miért fontos az egyenletek gyökeinek megtalálása, és hogyan illeszkedik a felezési módszer ebbe a tágabb képbe.

Egyenletek gyökereinek megtalálása

Ebben a megbeszélésben csak az egy független változóval rendelkező egyenletekre összpontosítunk. Az ilyen egyenletek lehetnek lineárisak vagy nemlineárisak. A lineáris egyenletek az egyenes vonal grafikonját írják le, míg a nemlineáris egyenletek görbéket és összetettebb alakzatokat.

Egy egyenlet gyöke a független változó azon értéke, amely kielégíti az egyenletet. Például az f(x) = 4 – x egyenlet gyöke.2 = 0 az 2, mert f(2) = 4 – 22 = 0.

Tekintsük az f(x) függvényt egy valós folytonos függvénynek. A közbenső értéktétel szerint az f(x) = 0 egyenletnek legalább egy gyöke van a és b között, ha f(a)f(b) < 0. Más szóval, az f(x) függvénynek van egy gyöke, „c”, valahol a és b között.

Egyenletek gyökereinek megtalálása

Pontosan ezt az előjelváltási tulajdonságot használja ki a felezési módszer. A következő szakasz bemutatja, hogyan néz ki ez az ötlet grafikusan.

A felezési módszer grafikus ábrázolása

A következő grafikon a felezési módszer működési mechanizmusát mutatja be. A grafikonon látható, hogy az egyenlet tényleges gyöke pirossal van jelölve.

Az eljárás a következőképpen foglalható össze:

  • Először két kezdeti tippet választunk, a1 és b1, amelyre f(a1)f(b1) < 0. A közbenső értéktétel szerint a gyöknek az [a1, b1].
  • Ezután kiszámítjuk a középpontját1 és b1, ami b2A kezdeti intervallum most [a]-ra csökken.1, b2] mert f(a1)f(b2) < 0.
  • Ugyanígy az intervallumot újra és újra felezzük, amíg egy közelítő megoldást nem találunk a kívánt tűréshatáron belül.

A felezési módszer grafikus ábrázolása

Miután a geometriai intuíció világos, most már formalizálhatjuk az eljárást lépésről lépésre haladó algoritmusként.

Felezési módszer algoritmus

Az f(x) = 0 egyenlet gyökének megtalálásához a felezési módszer algoritmusának alkalmazásának lépései a következők.

Step 1) Válasszon kezdeti becsléseket (a, b), és tolerancia rátát (e).

Step 2) Ha f(a)f(b) >= 0, akkor a gyök nem ebben az intervallumban található. Ebben az esetben nincs megoldás az [a, b] intervallumon belül.

Step 3) Határozza meg a felezőpontot, c = (a + b)/2.

(i) Ha a függvényérték a felezőpontban f(c) = 0, akkor c a gyök. Folytasd az 5. lépéssel.
(ii) Ha f(a)f(c) < 0, akkor a gyök a és c között van. Ekkor legyen a = a, b = c.
(iii) Egyébként állítsuk be, hogy a = c, b = b.

Step 4) Ha az abszolút hiba nagyobb, mint a tűréshatár, azaz (b – a) > e, akkor térjünk vissza a 3. lépéshez.

Step 5) Jelenítse meg c hozzávetőleges gyökérként.

Nézzünk egy példát a felezési módszer algoritmusára működés közben. A felezési módszer képletével megkeressük a következő folytonos függvény gyökét.

f (x) = x3 - x2 + 2

Felezési módszer példa

Step 1) Tegyük fel,

         a = -10,
         b = 10, és
         e = 1% vagy 0.01.

Step 2) Most megvizsgáljuk, hogy f(a)f(b) >= 0 vagy sem.

         f(a) = f(-10) = (-10)3 – (-10)2 + 2 = -1098
         f(b) = f(10) = (10)3 - (10)2 + 2 = 902
         f(a)f(b) = f(-10)f(10) = (-1098)(902) < 0

Tehát a fenti függvény gyöke a [-10, 10] intervallumban található.

Step 3) Ezután kiszámítjuk a c középpontot.

Felezési módszer példa

Most a következő feltételeket kell ellenőrizni:

(i) F(c) = 0:
         f(c) = f(0) = (0)3 - (0)2 + 2 = 2, ami nem egyenlő 0-val.

(ii) Az f(a)f(c) < 0:
         f(c)f(a) = 2 * (-1098) < 0

A feltétel teljesül. A következő iterációban az értékek a következők lesznek:

         a = a = -10
         b = c = 0

Step 4) Mivel (b – a) = (0 – (-10)) = 10 > 0.01, a folyamat megismétlődik. A következő iterációkat az alábbi táblázat mutatja.

Ismétlés a b c ba f(c)
1 -10 0 0 10 2
2 -5 0 -5 5 -148
3 -2.5 0 -2.5 2.5 -19.875
4 -1.25 0 -1.25 1.25 -1.52562
5 -1.25 -0.625 -0.625 0.625 1.36523
6 -1.25 -0.9375 -0.9375 0.3125 0.297119
7 -1.09375 -0.9375 -1.09375 0.15625 -0.50473
8 -1.01562 -0.9375 -1.01562 0.078125 -0.0791054
9 -1.01562 -0.976562 -0.976562 0.0390625 0.115003
10 -1.01562 -0.996094 -0.996094 0.0195312 0.0194703
11 -1.00586 -0.996094 -1.00586 0.00976562 -0.0294344

Step 5) A 11. iterációban a 4. lépésben szereplő feltétel hamissá válik. Így az egyenlet közelítő gyöke -1.00586.

Egy numerikus példa bemutatása után a következő szakasz bemutatja a teljes vezérlési folyamatot bemutató logikai diagramot.

Felezési módszer logikai diagramja

Az alábbi folyamatábra összefoglalja a felezési módszer döntési logikáját, beleértve a zárójel-ellenőrzést, a középpont-frissítést és a tűrésvizsgálatot.

Felezési módszer logikai diagramja

Ál-Code

Az alábbi pszeudokód tükrözi az algoritmust, és tervrajzként szolgál a felezőmódszer bármely programozási nyelven történő megvalósításához.

Start
Set a, b, e
if f(a)*f(b) >= 0
    Output("Root does not exist in this interval")
    Stop
while (b-a) > e do
    c ← (a + b)/2
    if f(c) = 0
        break
    end if
    if f(c)*f(a) < 0 then
        b ← c
    else
        a ← c
end while
Output(c)
Stop

Felezési módszer példa C/C++

A következő C/C++ A program a felezési módszert valósítja meg az f(x) = x függvény gyökének meghatározásához.3 - x2 + 2 a [-10, 10] intervallumon belül.

Bemenet:

#include <bits/stdc++.h>
using namespace std;
#define Error 0.01
double value(double x)
{
    return x*x*x - x*x + 2;
}
void bisection_method(double a, double b)
{
    if (value(a) * value(b) >= 0)
    {
        cout << "The root does not lie in this interval\n";
        return;
    }
    double c = a;
    while ((b-a) >= Error)
    {
        c = (a+b)/2;
        if (value(c) == 0.0)
            break;
        else if (value(c)*value(a) < 0)
            b = c;
        else
            a = c;
    }
    cout << "The root is :" << c;
}
int main()
{
    double a = -10, b = 10;
    bisection_method(a, b);
    return 0;
}

output:

The root is :-1.00586

Felezési módszer példa in Python

Az Python Az alábbi verzió ugyanazt a közelítő gyököt állítja elő azonos logika felhasználásával, ami ideálissá teszi a gyors kísérletezéshez és tanításhoz.

Bemenet:

def value(x):
    return x*x*x - x*x + 2

def bisection_method(a, b):
    if (value(a) * value(b) >= 0):
        return
    c = a
    while ((b-a) >= 0.01):
        c = (a+b)/2
        if (value(c) == 0.0):
            break
        if (value(c)*value(a) < 0):
            b = c
        else:
            a = c
    print("The root is : ", "%.4f" % c)

a = -10
b = 10
bisection_method(a, b)

output:

The root is :  -1.0059

A felezési módszer előnyei és korlátai

Mint minden numerikus technikának, a felezési módszernek is vannak egyértelmű előnyei és néhány gyakorlati hátránya. Az alábbi táblázat összefoglalja a legfontosabb előnyöket és hátrányokat.

Érvek Hátrányok
Könnyű és egyszerű gyökérkereső módszer, amely bármilyen nyelven megvalósítható. A konvergencia lassú, mivel a módszer minden lépésben egyszerűen felezi az intervallumot.
Mindig konvergál, ha érvényes zárójelet adunk meg, mivel a folyamat során a gyökeret is zárójelbe teszi. Ha az egyik kezdeti találgatás már közel van a gyökérhez, a gyökér eléréséhez akkor is sok iterációra lesz szükség.
A hibaszázalék közvetlenül szabályozható az iterációk számának növelésével vagy csökkentésével, illetve a tűréshatár szűkítésével. Nem talál komplex gyököket vagy páros multiplicitású többszörös gyököket, mivel a függvény nem vált előjelet az ilyen gyököknél.

A felezési módszer alkalmazásai

A felezési módszert számos gyakorlati és modern számítástechnikai helyzetben használják, ahol robusztus gyökkeresési lépésre van szükség.

  • Mérnöki szimulációk: A hőátadásban, a folyadékdinamikában és a szerkezetanalízisben megjelenő nemlineáris egyenletek megoldása.
  • Pénzügyi modellezés: Hozamok, belső megtérülési ráták és fedezeti pontok kiszámítása olyan esetekben, amikor nem léteznek zárt alakú megoldások.
  • Gépi tanulás és mesterséges intelligencia: Küszöbértékek meghatározása, modellek kalibrálása és hiperparaméterek finomhangolása mesterséges intelligencia által vezérelt numerikus megoldókban.
  • Számítógépes grafika: Sugár-felület metszéspontok és paraméterértékek meghatározása görbék mentén.
  • Beágyazott rendszerek: Gyökök közelítése alacsony erőforrás-igényű vezérlőkben, ahol az egyszerűség és a kiszámíthatóság értékesebb a sebességnél.

GYIK

A felezési módszer egy numerikus technika, amely egy folytonos függvény gyökét úgy keresi meg, hogy egy olyan intervallumot ismételten felez, ahol a függvény előjelet vált, és kiválasztja azt a felét, amelyik még tartalmazza a gyököt.

Mindig konvergál, ha a függvény folytonos az [a, b] intervallumon, és f(a)f(b) kisebb, mint nulla, mivel a közbenső értéktétel garantálja, hogy létezik gyök az intervallumban, és a felezés folyamatosan zsugorítja a zárójelet körülötte.

A felezési módszer lineárisan konvergál. A hiba minden iterációban nagyjából a felére csökken, így egy L hosszúságú intervallumból az „e” tolerancia eléréséhez körülbelül log2(L/e) iterációra van szükség, ami lassabb, mint a Newton- vagy a szekáns módszerek.

A módszer kudarcot vall, ha f(a) és f(b) azonos előjelűek, ha a függvény diszkontinuus az intervallumban, vagy ha a gyök multiplicitása páros, mivel a függvény nem vált előjelet egy ilyen gyökön keresztül.

A mesterséges intelligencia által vezérelt megoldók gyakran kombinálják a felezési módszert tanult modellekkel. Egy neurális hálózat egy szoros zárójelet javasol egy valószínűsíthető gyökér körül, majd a felezési módszer garantálja a megbízható, tanúsított megoldást ezen a zárójelen belül.

A mesterséges intelligencia modelljei kiválóak a mintázatfelismerésben, de nem mindig tudnak pontos válaszokat igazolni. A klasszikus numerikus módszerek, mint például a bisection, bizonyítható konvergenciát és korlátozott hibát biztosítanak, ami ideálissá teszi őket megbízható háttérrendszerként a mesterséges intelligencia folyamatain belül a biztonságkritikus számításokhoz.

Foglald össze ezt a bejegyzést a következőképpen: