frekvencia=[50.23, 100, 200.5, 499.5, 1000, 1593, 2007, 5017, 10040, 20000, 49800]
atvitel=[30,15.55, 8.8889, 3.1136, 1.5454, 0.9773, 0.7674, 0.2954, 0.2272, 0.1704, 0.1363]
Vizsgáljuk a most már decibelre átszámolt átviteli arányt a frekvencia függvényében!
A lineáris interpoláció algebrai függvénye (Y-t keressük, és X számtani közepe $x_1$ és $x_2$-nek): \begin{equation} Y=y_1+\frac{(X - x_1)\cdot (y_2 - y_1)}{(x_2 - x_1)} \end{equation}
Mivel ebben a feladatban a pylab
több funkcióját használni fogjuk, először ezt töltsük be!
%pylab inline
Feszültségarány esetén, a decibell értékének kiszámítási módja:
$$20 \log_{10}{\left( \frac{U_{ki}}{U_{be}} \right)}$$
Mivel az atvitel
lista az $\frac{U_{ki}}{U_{be}}$ értékeket tartalmazza, ezeknek csak venni kell a logaritmusuk 20-szorosát:
decibell = 20 * log10(atvitel)
decibell
Mivel a lineáris interpolációt a független változó számtani közepénél végezzük, ezért a képlet jelentősen egyszerűsödik:
$$ Y = y_1 + \frac{\left( \frac{x_1 + x_2}{2} - x_1 \right) \cdot \left(y_2 - y_1\right)}{x_2 - x_1} = y_1 + \frac{\frac{1}{2} \left(x_2 - x_1\right) \cdot \left(y_2 - y_1\right)}{x_2 - x_1} = \frac{y_1 + y_2}{2} $$
Emiatt, a pol
függvényt úgy kell beállítani, hogy $X$ az $x_1$ és $x_2$ változók, $Y$ pedig $y_1$ és $y_2$ változók számtani közepe legyen.
Ez alapján az interpolációt végző függvény:
def pol(x1,x2,y1,y2):
X = (x1 + x2)/2
Y = (y1 + y2)/2
return X, Y
Az interpoláció elvégzését for-ciklussal oldjuk meg:
ujfrekvencia = list()
ujdecibell = list() # létrehozunk két üres listát, az új adatok számára
for i in range(0, len(frekvencia) - 1): # Az egyes interpolálásokat for-ciklussal végezzük
fr, db = pol(frekvencia[i], frekvencia[i+1], decibell[i], decibell[i+1]) # ideiglenesen az fr és a db változókba tesszük a kapott értékeket
ujfrekvencia += [fr] # Majd ezeket hozzáadjuk a listához
ujdecibell += [db]
Végül pedig a plot
függvény segítségével ábrázoljuk mindkét adatsorozatot:
plot(frekvencia, decibell, 'rp')
plot(ujfrekvencia, ujdecibell, 'b+')
xlabel("frekvencia (Hz)")
ylabel("átvitel (dB)")
title("A feszültségerösítés a frekvencia függvényében")
legend(["a mért adatok", "a lineáris interpoláció"])