Felezési módszer – Mi az, algoritmus és példa

Mi az a felezési módszer?

A felezési módszer az egyik alapvető numerikus megoldás a polinomiális egyenlet gyökerének megtalálására. Zárójelbe teszi azt az intervallumot, amelyben az egyenlet gyöke található, és minden iterációban felére osztja őket, amíg meg nem találja a gyökeret. Így a felező módszert zárójeles módszernek is nevezik.

Mivel azonban a működési mechanizmus hasonló a bináris keresési algoritmushoz, a felezési módszert bináris keresési módszernek, felező módszernek vagy dichotómia módszernek is nevezik. Elsősorban a Köztes érték tételen alapul.

Egyenletek gyökereinek megtalálása

Ebben a példában csak egy független változóval rendelkező egyenleteket veszünk figyelembe. Lehet lineáris vagy nemlineáris. A lineáris egyenletek az egyenes grafikonját ábrázolják, míg a nemlineáris egyenletek a görbék ábrázolására szolgálnak.

Az egyenlet gyöke az egyenletet kielégítő független változó értékét jelenti. Például: egy f(x)= 4-x egyenlet gyöke2 = 0 2, mert f(2) = 4-22 = 0.

Tekintsük f(x)-t valós folytonos függvénynek. A köztes érték tétele szerint az f(x)=0 egyenletnek legalább egy gyöke van a és b között, ha f(a)f(b) < 0. Az f(x) függvénynek van egy gyöke, „c” a és b között.

Egyenletek gyökereinek megtalálása

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áthatjuk, hogy az egyenlet gyöke pirossal van jelölve.

Mindenekelőtt:

  • Először két kezdeti sejtést tettünk, a1 és b1, amelyre f(a1)f(b1) < 0. A köztes érték tétele szerint a gyöknek [a1, b1].
  • Megtalálhatjuk a felezőpontját1 és b1, ami b2. Így a kezdeti intervallum most [a1, b2] mert f(a1)f(b2) < 0.
  • Ugyanígy csökkentjük az intervallumot, amíg a közelítő megoldást meg nem találjuk.

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

Felezési módszer algoritmus

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

Step 1) Válasszon kiindulási a, b tippeket és e tűréshatárt

Step 2) Ha f(a)f(b) >=0, akkor a gyök nem ebben az intervallumban található. Így nem lesz megoldás.

Step 3) Keresse meg a felezőpontot, c = (a+b)/2

(i) Ha az f(c) felezőpont függvényértéke = 0, akkor c a gyök. Folytassák az 5. lépéssel.
(ii) Ha f(a)f(c) < 0, akkor a gyök a és c között van. Ezután állítsa be a = a, b = c.
(iii) Egyéb esetben a = c, b = b.

Step 4) Ha az abszolút hiba nagyobb, mint a tűréshatár vagy (ba) > e, folytassa a 3. lépéssel.

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

Lássunk egy példát a felezési módszer algoritmusára.
Meg kell találnunk a következő folytonos függvény gyökerét a felező módszer képletével.

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

Ezért a fenti függvény gyökere ebben az intervallumban van [-10, 10].

Step 3) Ekkor először a c felezőpont kerül kiszámításra.

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 ≠ 0

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

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

         a = a = -10
         b = c = 0

Step 4) Mivel (ba) = (0-(-10)) = 10>0.05, a folyamat megismétlődik. A következő iterációk a táblázatban láthatók.

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és feltétele hamis lesz. Így ennek az egyenletnek a gyöke -1.00586.

Felezési módszer logikai diagramja

Felezési módszer logikai diagramja

Pszeudo-kód

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++

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

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

Íme a felezési módszer előnyei és hátrányai:

Érvek Hátrányok
Könnyen és egyszerűen megvalósítható gyökérkeresési módszer. A konvergencia lassú, mert egyszerűen az intervallum felezésén alapul.
Mivel a gyökér zárójelben van, mindig konvergens. Ha az egyik kezdeti találgatás közel van a gyökérhez, a gyökér elérése több iterációt igényel.
A hibaarány az iterációk számának növelésével vagy csökkentésével szabályozható.