Analitikus függvénykiértékelés

Innen: testwiki
Ugrás a navigációhoz Ugrás a kereséshez

Analitikus függvénykiértékelés

A matematika és fizika terén mindig függvények kötnek össze változókat, legáltalánosabb esetben a következő alakban f(x) = y. Ezzel egyenértékű az az állítás, hogy minden x értéknek megfelel egy jól meghatározott y érték. Numerikus analízis terén gyakran megjelenik a behelyettesítés értékének a meghatározásának a problémája. Többek között az integrálok numerikus analízisében, a kvadratúráknál.

Bizonyos esetekben a függvényértékek kiszámításánál megjelennek a Taylor-, illetve a Maclaurin-sorok. Ezek megfelelő esetben egyre pontosabb értéket térítenek vissza, minél inkább növeljük a lépések számát.

Általános esetben megkeressük a függvény Maclaurin-sorát, majd a sor alapján meghatározunk egy rekurrenciás képletet. A képletet megfelelő módon implementálva egy programba, azt addig engedjük futni, míg a kívánt eredmény az általunk meghatározott hibakorláton belül esik.

A rekurrenció a következő formában hasznos programozásban: y=u0+u1+u2+...=i=0ui, ahol az un+1=f(un,x)

(1+x)a típusú függvény

Maclaurin sor:

f(x)=1+ax+12!a(a1)x2+13!a(a1)(a2)x3+...

T0=u0=1

Rekurrenciás képlet: un+1=unann+1x

A tagok számát növelve, a pontossága is növekszik a behelyettesítési értéknek.

Python kód

import math
def maclaurin(a, x, e):
	u = 1
	n = 0
	T = 1
	while (math.sqrt(u*u)>e):
		u = x*u*(a-n)/(n+1)
		T = T + u
		n = n + 1
	return T

ex, exponenciális függvény

Maclaurin sor:

f(x)=1+x+x22!+x33!+...

T0=u0=1

Rekurrenciás képlet: un+1=unxn+1

Python kód

import math
def exp(x, e):
	u = 1
	n = 0
	T = 1
	while (math.sqrt(u*u)>e):
		u = x*u/(n+1)
		T = T + u
		n = n + 1
	return T

A természetes logaritmus függvény

Maclaurin-sor:

f(x)=log(1+x)=xx22+x33x44+...+(1)nxnn+H, H <1n+1xn+1

T0=u0=x

Rekurrenciás képlet: un+1=unnn+1xn+1

Python kód

import math
def ln(x, e):
	u = x
	n = 0
	T = x
	while (math.sqrt(u*u)>e):
		n = n + 1		
		u = -u*n*x/(n+1)
		T = T + u
	return T

Sin(x) függvény

f(x)=sin(x)=xx33!+x55!...=n=0(1)nx2n1(2n+1)!

T0=u0=x

Rekurrenciás képlet: un+1=unx2(2n+2)(2n+3)

Python kód

import math
def sin(x, e):
	u = x
	n = 0
	T = x
	while (math.sqrt(u*u)>e):
		n = n + 1		
		u = -u*x*x/((2n+1)*(2n))
		T = T + u
	return T

Lásd még

Források

  • Numerikus módszerek (egyetemi jegyzet): Lázár Zsolt, Lázár József, Járai-Szabó Ferenc, Bábes-Bólyai Tudomány Egyetem, Fizika kar