Kocsisor vagy a többi kerékpáros
sebességének és követési távolságának becslése

bicikliről

1. probléma: Egy biciklista u sebességgel teker a Balaton körül. Szemből t, hátulról T időnként esik egy találkozás (csupa nálam lassúbb kerékpárossal). Kiszámítandó: milyen v sebességgel járnak átlagosan a tó körül tekerők, és mekkora d távolságban követik egymást? (Feltételezzük, hogy ezek az adatok oda-vissza egyformák.) A levezetett képletek a következők:

v
u(T–t)
T+t
d
2uTt
T+t

Ha T = t, akkor az első képlet nullát ad, azaz csak olyankor esik egyforma sűrűn a szemből és hátulról történő találkozás, ha mozgó kerékpárosok helyett álló tereptárgyakat számolok. Ezzel megoldódott az a (Kerékpáros Topikban már többször boncolgatott) mély kérdés is, hogy tudniillik "miért jön szembe sokkal több szép kerékpáros hölgy, mint amennyi velem egy irányba megy?" – Azért hát, mert az utóbbiakat még utol is kell érni.

Ha v = u, ahhoz T = ∞ érték tartozik, és kínál némi filozofálási alkalmat: ha mindenki velem egyformán cselekszik, akkor megáll az idő.

Konkrét balatoni mérésem adataival (T = 1 óra, t = 0,1 óra, u = 20 km/óra) a következő eredmény adódik: v = 17 km/óra és d = 3,63 km.


2. probléma: Nagyjából sík országúton kerékpáros halad, nagyjából egyenletes autóforgalom mellett. Szeretné tudni, átlagosan milyen gyorsan és milyen sűrűn jönnek az autók. Hogyan következtethet ezekre az értékekre, ha sem az egyik, sem a másik nem tekinthető mindkét irányban ugyanakkorának?

A számítások azt mutatják, hogy még az egyazon irányba haladó autósokaság átlagos sebességét és követési távolságát is csak úgy lehet kiszámítani, ha a kerékpáros először a szembetalálkozások közti átlagos utat és időt állapítja meg, aztán megfordul, és ugyanazon autósokaságtól elszenvedett utolérések között is megméri ezen adatokat. Eközben saját sebességeit is följegyzi. Az azonos típusú adatpárokból összeget, szorzatot illetve pozitív különbséget képez a következők szerint. A vizsgált kocsisokaság átlagos sebességét (v) úgy kapja meg, hogy az "útösszeget" osztja az "időkülönbséggel." A kocsisereg átlagos követési távolsága (d) pedig nem más, mint a "sebességösszeg" szorozva az "időszorzattal" és osztva az "időkülönbséggel." De ha valakinek jobban tetszenek az arasznyi széles képletek, azokat is elviheti: t az átlagos időköz jele, u a biciklista sebessége, o az odaúti, v a visszaúti jellemzőkre utal mindenütt, valamint h a hátulról és sz a szemből bekövetkező találkozásokra.

v = 
uvtvsz+uotoh
toh–tvsz
d = 
(uo+uvtoh·tvsz
toh–tvsz

Megjegyzések

Természetesen a másik irányba haladó autósokaság adatait is följegyezhetjük az oda-visszaúton, amiből egy füst alatt őrájuk nézve is ki lehet számítani ugyanezeket a jellemzőket.

Ha a két utóbbi képletben negatív előjellel látjuk el az utolérési időt, akkor érdekes kapcsolatot találhatunk az első képletekkel. Mivel a mért idők mindig pozitívok, ezzel a változtatással "időben visszafelé haladva" fogják utolérni a kocsik a kerékpárost, azaz valójában lassúbbak nála. A biciklista megdörzsöli a szemét: ezek valójában nem is autósok, hanem ugyanolyan bicajosok, mint ő! És ha felteszi, hogy a kétirányú adatok mind egyenlők, akkor a képletek is átalakulnak az előzőkké.

Nyilván az út- és időadatok átlagával végzett műveletek során a sebességeknek és követési távoknak elvileg nem a számtani közepéhez jutunk, de közelítésnek bizonyára alkalmas lesz ez is. Sík úton zavartalanul haladó kocsiseregek számított sebessége nagyjából egyforma kell, hogy legyen: ez mintegy hitelesíti a méréseket.

A mérés könnyebben kivitelezhető, ha a kerékpáros nem akar visszafordulni, hanem csak megáll; ekkor bizonyos időtartamok átváltoznak "elhúzási" időközökké, más adatok pedig nullává válnak. Ez a megoldás viszont kisebb "időkülönbséget" eredményez, amit a statisztikus ingadozások könnyebben meg tudnak rongálni, így hibakorlátja valamivel nagyobb. Még sebezhetőbb lesz az eredmény, ha csak megváltoztatjuk a haladási sebességünket, és így végezzük a második mérést.

Részletek

A módszer önmagában nem sokat ér, ha nem mondom meg, mekkora bizonytalansággal ad becslést. Különösen annak fényében fontos a hibaszámítás, hogy teljesen figyelmen kívül hagytam a két szélső autón kívül az összesnek az elhaladási időpontját. A formálisan nehezen végigjárható hibaszámítási kérdésnek az elemzésére gyártottam egy Quickbasic programot. A lap végén található ennek kilenc eredményképernyője: az autóforgalom a jobb láthatóság kedvéért egyirányú, és ekvivalens átrendezéssel egy-egy biciklista halad oda ill. vissza. A sebességek önkényes egységben vannak megadva (hiszen csak az arányuk fontos); a hiba mindenütt relatív hibát jelent.

A program hasraütéssel előállítja a kerékpáros sebességét és egy olyan v értéket, amelyből ezután 1–50 százalékos variálással előállítja az autósokaság sebességeit. Ezután találkozásokat szimulál, megállapítja az elsőt és az utolsót (mindkét kerékpáros esetében), majd behelyettesít a fent található képletekbe. Ezt neveztem "becslésnek." Ezután megállapítja, hány százalékkal tér el v-től ez a becsült érték. A programfuttatások azt mutatják, hogy a relatív eltérés ugyanolyan nagyságrendű, mint a variáció, vagyis a tényleges kocsisebességek relatív eltérése v-től – legalábbis a paraméterek (kocsisebességek, -darabszámok és a variáció) elég széles tartományán.


SCREEN 12
RANDOMIZE TIMER

ujfelallas:
n = INT(20 + RND * 20)
REDIM auto1hely(n)
REDIM auto2hely(n)
REDIM autoseb(n)
REDIM talalk1(n + 1)
REDIM talalk2(n + 1)

u = RND
sebvari = .01 * (1 + u * u * 49)
'               plusz-minusz 1...50%-os sebessegszorodas, inkabb kisebbek
dt = .01
idoszorzo = 50
j1 = 0
j2 = 0
bic1hely = 460
bic2hely = 1
bic1seb = 20 * (1 + RND * .6)   ' 20...32 onkenyes egyseg
bic2seb = 20
v = 50 * (1 + RND * 2)  ' autosokasag atlagsebessege 50...150 egyseg
kovtav = 630 / 1.5 / n   ' "keppont" egysegben
tures = 2

FOR i = 1 TO n
 auto1hely(i) = (1 - i) * kovtav
 auto2hely(i) = auto1hely(i)
 autoseb(i) = v * (1 + (RND - .5) * sebvari)
NEXT i

CLS
LINE (1, 1)-(1, 460)
LINE (1, 460)-(630, 460)

odebblep:
t = t + dt
bic1hely = bic1hely - bic1seb * dt 'autokkal szembehalado bicikli
bic2hely = bic2hely + bic2seb * dt 'autokkal egy iranyba halado bicikli
PSET (t * idoszorzo, bic1hely), 13
PSET (t * idoszorzo, bic2hely), 14

FOR i = 1 TO n
 IF auto1hely(i) <> 999 THEN auto1hely(i) = auto1hely(i) + autoseb(i) * dt
 IF auto2hely(i) <> 999 THEN auto2hely(i) = auto2hely(i) + autoseb(i) * dt
IF auto1hely(i) < 630 AND auto1hely(i) > 0 THEN bennvan = 1
IF auto2hely(i) < 630 AND auto2hely(i) > -22 THEN bennvan = 1
 PSET (t * idoszorzo, auto1hely(i)), 9
 IF ABS(bic1hely - auto1hely(i)) < tures THEN j1 = j1 + 1: talalk1(j1) = t: CIRCLE (t * idoszorzo, auto1hely(i)), 2, 10: auto1hely(i) = 999
 IF ABS(bic2hely - auto2hely(i)) < tures THEN j2 = j2 + 1: talalk2(j2) = t: CIRCLE (t * idoszorzo, auto2hely(i)), 2, 13: auto2hely(i) = 999
ujkocsi: NEXT i

IF bennvan = 1 THEN bennvan = 0: GOTO odebblep

'FOR i = 1 TO j1
'PRINT talalk1(i)
'NEXT i

'FOR i = 1 TO j2
'PRINT talalk2(i)
'NEXT i

t1atlag = (talalk1(j1) - talalk1(1)) / (j1 - 1)
t2atlag = (talalk2(j2) - talalk2(1)) / (j2 - 1)

sebbecs = (bic1seb * t1atlag + bic2seb * t2atlag) / (t2atlag - t1atlag)
tavbecs = (bic1seb + bic2seb) * t1atlag * t2atlag / (t2atlag - t1atlag)

hiba1 = (tavbecs - kovtav) / kovtav
hiba2 = (sebbecs - v) / v

LOCATE 1, 50: PRINT "Sebessegek szorodasa:";
LOCATE 2, 50: COLOR 11: PRINT sebvari * 100; "%": COLOR 15
LOCATE 26, 1: PRINT "becsult   es   valos                        hiba    hibaterj. szorzo"
LOCATE 27, 1: PRINT tavbecs, kovtav, "kovtav      "; : COLOR 12: PRINT 100 * hiba1; : COLOR 15: PRINT "%     "; ABS(hiba1 / sebvari)
LOCATE 28, 1: PRINT sebbecs, v, "autoseb     "; : COLOR 12: PRINT 100 * hiba2; : COLOR 15: PRINT "%     "; ABS(hiba2 / sebvari)
LOCATE 4, 55: PRINT n; "auto"
LOCATE 5, 55: PRINT j1; "talalkozas"
LOCATE 6, 55: PRINT j2; "utoleres"
LOCATE 22, 55: PRINT "Tovabb? (enter)"

ss: s$ = INKEY$
IF s$ = "" THEN GOTO ss
IF s$ <> CHR$(13) THEN END
t = 0
GOTO ujfelallas

A sebesség és a követési távolság
becslésének megbízhatósága

A hibaterjedési szorzó elárulja, hányszorosa a becsléssel kapott sebesség- és követésitávolság-érték (eredeti értékhez képesti, pozitívnak vett) relatív hibája a Δv/v variációnak, azaz annak a relatív hibakorlátnak, amellyel az autók sebességét véletlenszerűen elszórtam az eredeti érték köré. (A követési távolságot nem variáltam, széthúzódott az magától is.) Ezért e mennyiség a becslések megbízhatóságáról ad számot, és értelmezése alapján romlási mutatónak nevezhető. Ha az értéke 1 alatt van, akkor a módszer átlagos értelemben "hibán belül" ad eredményt, azaz megbízható. Képlete a következő:

v-romlás = 
|vbecsültv|/v
Δv/v
 = 
|vbecsültv|
Δv
d-romlás = 
|dbecsültd|/d
Δv/v

A romlási mutatók megbízható értékei (mind a kilenc esetben ezer-ezer hasonló számítás alapján átlagolva) a hely-idő grafikonok alatt találhatók, míg magukon a képeken csak ezen átlagolt értékekhez közeli romlásimutató-értékek találhatók, és az ábrák fő tanulsága valójában a vonalak futása. Az összes grafikonon húsz kocsit vettem alapul, a bicikli sebessége mindkét irányban 20 egység volt. A vonalak azért görbék, mert jobb eszköz híján csak lefényképezni tudtam a képernyőt.

v=50     Δv/v=0,02
v-romlás=0,23
d-romlás=0,44

v=50     Δv/v=0,1
v-romlás=0,19
d-romlás=0,41

v=50     Δv/v=0,5
v-romlás=0,13
d-romlás=0,41

v=100     Δv/v=0,02
v-romlás=0,67
d-romlás=0,94

v=100     Δv/v=0,1
v-romlás=0,56
d-romlás=0,81

v=100     Δv/v=0,5
v-romlás=0,58
d-romlás=1,45

v=150     Δv/v=0,02
v-romlás=1,19
d-romlás=1,45

v=150     Δv/v=0,1
v-romlás=0,99
d-romlás=1,22

v=150     Δv/v=0,5
v-romlás=154?!
d-romlás=188?!

Megfigyelések

A nagyobb kocsisebességek csökkentik a toh–tvsz mennyiség abszolútértékét, mialatt a kivonásban szereplő két időadat relatív hibája nem csökken. (Szemléletesen: minél meredekebbek a kék vonalak, annál egyformábbak lesznek a rózsaszín és a zöld karikák közti távolságok.) Tehát a sebesség növelésével a megbízhatóság romlik.

A ?! jel arra utal, hogy ott a toh–tvsz különbség az egyes (szélső) autógrafikonok helyzetétől függően igen kicsinnyé vált, és hajlamos lett az előjelváltásra is. Mivel pedig ez a különbség a meghatározó képletek nevezőjében állt, itt a becsült érték már kaotikusan kezdett függeni a véletlenszerű variációtól, teljesen megbízhatatlanná téve a becslést.

A kocsik számának 50-re növelése oda vezetett, hogy kis sebességek esetén csökkent a romlási mutató, nagy sebességek esetén nőtt, de nem mindig következetesen. Ennek az okát nem tudtam megállapítani. Gyanítom, hogy az utóbbinak az 1/x függvény alább részletezett viselkedéséhez van köze, mivel a nagyobb kocsiszám közelebb viszi a nullához a nevezőben szereplő toh–tvsz mennyiséget.


Hogyan szóródnak a becslések?

Az alábbi sűrűséggrafikon azt mutatja, hogyan alakult az előjeles relatív hibák tapasztalati értéke az említett ezer véletlenkísérletben, vagyis hogy miként oszlott el a nulla körül az a (vbecsültv)/v és (dbecsültd)/d mennyiség, melyek abszolútértékének átlaga a sebesség variációjával osztva éppen a megfelelő romlási mutatót adja. Az elrendezés megfelel a fenti táblázatnak, minden egyéb a képen olvasható.

Érdekes megfigyelés, hogy az eloszlás nem szimmetrikus a telitalálatot jelző piros csíkra, hanem a sebesség növekedésével jobbra tolódik. Ez azt jelenti, hogy az általam vázolt módszer idővel jelentősen "föléhord." Ennek oka az, hogy az 1/x függvény a 0 közelében egyre élesebben változtatja a meredekségét, azaz a helyesnek vehető toh–tvsz érték körüli szimmetrikus intervallumba szóródó tényleges értékek egyre inkább aszimmetrikus intervallumba képeződnek le a helyes érték reciproka köré. Sajnos ez a jelenség az egész módszerrel együtt jár, esetleg korrigáló kiküszöbölését lehetne megpróbálni valamely tapasztalati függvénnyel.