Digitális ábrázolás / BMEEPAGA205

2D függvények ábrázolása

Egy épülő csarnok keresztmetszete a következő harmadfokú függvénnyel írható le:
f ( x ) = h 4 · [ 2 + ( 1 2 |x| b ) 3 + ( 1 2 |x| b ) ]
ahol b a fél szélesség (12 m), h a gerinc magassága (10 m).

A csarnok hosszúsága l (20 m), az álmennyezetet magassága m (7 m).

Egy lehetséges megoldás: dowload LETÖLTÉS

1. feladat

 • Matematikai háttér

Az ábrá­zolni (és számí­tani) kívánt görbét kisebb szaka­szokra oszt­juk, az egyes szaka­szokon a görbét húr­jával helyet­te­sítjük, és mind a görbe fel­rajzo­lását, mind pedig a terület és ívhossz számí­tá­sát ezen köze­lítés alapján végezzük el.

A b fesz­távol­ságot ki­indul­ásul 2n számú egyen­lő rész­re oszt­juk, hogy minden n érték ese­tén legyen olyan pont, ami a szimmet­ria­ten­gely­re esik. A görbe ábrá­zolá­sakor x irány­ban végig­hala­dunk –b-től +b-ig a teljes fesz­távol­ságon, és minden i lépés­nél kiszá­mítjuk a függvény magas­sági koor­diná­táit.

A valós görbe osztás­pont­jai­nak egye­nes sza­ka­szokkal való össze­köté­sével egy vonal­lánc adódik. Álta­lános helyen, a tet­sző­leges i-edik lépés­nél a vonal­lánc egy elemi szaka­szának víz­szin­tes koor­diná­tái xi és xi+1, míg magas­sági koor­diná­tái yi és yi+1 lesznek.

 • Görbe ábrázolása

Definiáljuk a szükséges geometriai paramétereket!
Hozzuk létre a táblázatban az értelmezési tartomány x értékeit!

A görbe megjelenítésének (és számításának) pontosságát meghatározza, hány pontban számoljuk ki a függvény értékét. Mivel ez esetben a függvény szimmetrikus, érdemes páros számú (2n) szakaszra osztani. A felosztáshoz érdemes egy hagyományosan i-vel jelölt „számláló” értéket alkalmazni, amely az egyes osztáspontok sorszámát jelzi –n-től +n-ig (-10 ≤ i ≤ +10). Az i sorszámú pont x koordinátáját ekkor az i/n*b képlettel kapjuk.

Hozzuk létre a táblázatban az értékkészlet tartomány y értékeit!
Ábrázoljuk a csarnok keresztmetszetét!

2. feladat

 • Matematikai háttér

Két szom­szédos osztás­pont között a görbét húr­jával köze­lítve e szakasz alatti ∆ter terület­rész trapéz­nak tekint­hető:
Δ ter = ( x i+1 - x i ) · y i+1 + y i 2

Két szom­szédos osztás­pont között a görbét húrjá­val köze­lítve e szakasz ∆ív hossza egy olyan derék­szögű három­szög át­fogó­jaként adódik, amely­nek víz­szin­tes befo­gója a két x koor­diná­ta, függő­leges befo­gója pedig a két y koor­diná­ta különb­sége:
Δ iv = ( x i+1 - x i ) 2 + ( y i+1 - y i ) 2

Ezen elemi ív­hossza­kat és terü­le­te­ket minden szakasz­ra vonat­kozóan kiszá­mítva, majd vala­mennyi szakasz­ra össze­gezve a tel­jes ívhossz és terület műszaki szem­pontból kielégítő pon­tos­ságú közelí­tését kapjuk.

 • Ívhossz és terület számítása

Számítsuk ki a csarnok végfalának ívhosszát, és keresztmetszetének területét!

Fontos figyelni arra, hogy a szakaszok darabszáma min­dig eggyel kisebb az osztáspon­to­ké­nál, ezért mindig eggyel ke­ve­sebb elemi ív­hossz és terü­let sze­re­pel­het, mint a­hány koor­di­ná­ta értéket kiszámoltunk. Mivel az i-edik szakaszhoz szükséges az i+1-edik osztáspont is, az i=n esetben már nem számolhatunk sem ívhosszt, sem területet.

  • A képletek könnyebben érthetővé, áttenkinthetőbbé tehetők, ha definiáljuk az xi+1 és yi+1 koordinátákat tartalmazó tartományokat a Névkezelő (Name Manager, Ctrl+F3) segítségével, mint az eredeti tartományok „függőlegesen eltolt” verzióit:
    _xa  =OFFSET(_x;1;0)),
    _ya  =OFFSET(_y;1;0)).
  • Az ívhossz és a terület kép­letei a korábban mate­ma­ti­kai alak­ban meg­adott ∆ív­ és ∆te­r kép­letek „for­dí­tá­sai”:
    ∆ter  =IF(_i=n; ""; (_xa - _x) * (_ya + _y) /2)
    ∆ív   =IF(_i=n; ""; SQRT( (_xa - _x)^2 + (_ya - _y)^2 ) )
  • Számítsuk ki a teljes keresztmetszeti területet és ívhosszt:
    =SUM(F5#)
    =SUM(G5#)
  • Nevezzük el a területet ∑Ter-nek!

 • Egyenlet megoldása

Határozzuk meg a keresett térfogatot eredményező álmennyezet-magasságot iterációval!
  • Számítsuk ki a csarnok térfogatát a keresztmetszeti terület és a hosszúság szorzataként:
    =∑Ter*l
  • Nevezzük el ezt a cellát V-nek!
  • Válasszuk a AdatokData sávmenüben a Adateszközök ⮂ Data Tools csoportból a Lehetőségelemzés • Célértékkeresés ⮂ What-If Analysis • Goal Seek lehetőséget!
  • A célcella ⮂ set cell értelemszerűen a V térfogat.
  • A célérték ⮂ to value a feladat szerinti 2000.
  • A módosuló cella ⮂ by changing cell a feladat értelmében az m magasság.

Az gomb megnyomása után a program megkeresi m azon értéket, mely esetén V értéke közelítőleg 2000-re adódik.

Alaposabban megnézve a diagramot látható, hogy némi pontatlanság keletkezik abból, hogy a két függvény metszéspontja nem valamelyik osztáspontnál adódik. A felosztás n értékét növelve ez a pontatlanság természetesen csökkenthető (vagy ha nem akarunk túl sok ponttal dolgozni, az összemetsződés helye újabb iterációval pontosítható), így megkereshető, hogy az f és m közötti magassági különbség x milyen értékénél lesz elegendő pontossággal nulla.

3. feladat

 • Matematikai háttér

A félkör sugarát növelve „hozzáér” a függvényhez – pontosabban a függvény azon pontjához, amely legközelebb esik az origóhoz. Ezen érintési pont origótól való távolsága adja a keresett félkör sugarát. Első közelítésben csak a függvény ábrázolásakor használt osztáspontok közül keressük a legközelebbit – később pontosabb megoldást is keresünk.

A harmadfokú görbe esetén x szerint számoltuk az y értékeket egyenletes Δx lépésköz mellett. A félkör esetén ez a megoldás kissé nehézkes és pontatlan lenne, így pontjainak x és y értékekét ρ függvényében számoljuk, az osztáspontokhoz tartozó középponti szöget egyenletesen léptetve. Jelen esetben a 0 és π közötti tartományt kell felosztani 2n részre, minden osztáspontban kiszámítva ρ aktuális értékét, illetve az ahhoz tartozó x és y koordinátákat.

Az origó középpontú félkör paraméteres egyenletrendszere:
x = r · cos ρ
y = r · sin ρ
ahol 0 ρ π

 • Görbe ábrázolása

Definiáljuk a szükséges geometriai paramétereket!
  • Egy cellát (K2) nevezzük el rᵨ-nek, kezdeti értéke legyen pl. 6.
    (Az r az angol Excelben a sort jelöli, ezért nem alkalmas névnek.)
  • A H oszlopba, _i első eleme mellett számítsuk ki ρ értékeit 0-tól π-ig
    =SORSZÁMLISTA((2*n+1;;0) / (2*n) * PI()=SEQUENCE(2*n+1;;0) / (2*n) *PI()
  • Nevezzük el a H5# tartományt ρ-nak!
Számoljuk ki a félkör osztáspontjainak koordinátáit!
  • A J oszlopba, ρ első eleme mellett számítsuk ki x értékeit
    =rᵨ*COS(_ρ)
  • Nevezzük el a J5# tartományt _xᵨ-nak!
  • A K oszlopba, ρ első eleme mellett számítsuk ki y értékeit
    =rᵨ*SIN(_ρ)
  • Nevezzük el a J5# tartományt _yᵨ-nak!
Ábrázoljuk a csarnok keresztmetszetét!
  • Hozzuk létre az előbbihez hasonló módon a csarnok keresztmetszetét ábrázoló diagramot, vagy módosítsuk az előzőt úgy, hogy csak az _f függvényt mutassa!
  • A félkör hozzáadásához a diagram aktív állapotában elérhető DiagramtervezésChart Design fülön válasszuk az Adatok kijelölése ⮂ Select Data ikont!
  • Adjuk meg a görbe nevét, az xᵨ (J5:J55) és yᵨ (K5:K55) értékek tartományát!
A félkör sugarát kössük az eredeti függvény legközelebbi osztáspontjához!
  • A H oszlopban számoljuk ki a harmadfokú görbe osztáspontjainak távolságát az origótól:
    =(_x^2+_f^2)^(1/2)
  • Nevezzük el a H5# tartományt _d-nek!
  • Az rᵨ cellában a konstans helyett használjuk a számított távolság-értékek közül a legkisebbet:
    =MIN(_d)

Pontosabb értéket n növelésével, a Solver segítségével, vagy Visual Basic modullal kaphatunk.

 • Szélsőérték meghatározása Solver segítségével

A függvény tetszőleges pontjának távolságának origótól vett távolsága egyszerűen meghatározható: d = x 2 + y 2

A távolság így felírható egy olyan függvényként, ahol y a fenti harmadfokú függvény. Ennek az új függvénynek a minimumértéke az érintő kör sugara. Egy folytonos függvény helyi szélsőértéke (minimuma vagy maximuma) olyan pontban lehet, amelyben a differenciálhányados zérus, vagy nem létezik (például végtelenné válik). Geometriai értelemben a függvény szélsőértéke ott van, ahol a függvény meredeksége (az adott pontban rajzolt érintőjének meredeksége) zérus, illetve azon két pont között, ahol a meredekség előjelet vált.

A Solver egy telepíthető modul, mely iterációval határozza meg a szélsőértéket. Amennyiben már aktiválva van, az AdatokData sávmenüben a Solver ponttal érhetjük el. Ha itt nem szerepel, próbáljuk meg betölteni (lásd Office Súgó)

A félkör sugarát kössük az eredeti függvény legközelebbi osztáspontjához!
  • Nevezzünk el egy cellát xs-nek, értéke legyen mondjuk 3!
  • Nevezzünk el egy másik cellát ys-nek:
    =h/4*(2+(1-ABS(xs)*2/b)^3+(1-ABS(xs)*2/b))!
  • Számítsuk ki az rᵨ cellában az [xs,ys] pont távolságát az origótól:
    =(xs^2+ys^2)^(1/2)!
  • Hívjuk be a Solver párbeszéd-ablakát!
  • Minimumértéket keresünk, ezért kattintsunk a Cél: sorban a Min választógombra!
    – a Célérték beállítása mezőbe írjuk be az rᵨ cellahivatkozást – e cella minimumértékét keressük
    – a Változócellák módosításával mezőbe írjuk az xs cellahivatkozást – e cella értékét fogja iterálni a program
    – végül nyomjuk meg a gombot!

A keresett érték pontossága a Solver Beállítások párbeszédablakban beállított paraméterektől függ – most elfogadhatjuk az alapértékeket.

Ha sikeres a keresés, akkor a A Solver eredményei párbeszédablak jelzi, hogy a Solver talált egy (lehetséges) megoldást, amelynél minden megszorítás és optimálási feltétel teljesült, és ekkor választhatunk, hogy megtartjuk a talált értéket (A Solver megoldásának megtartása), vagy visszatérhetünk az eredeti értékekhez (Eredeti értékek visszaállítása).

Ha a Solver nem talál a megszorításoknak és az optimálási feltételeknek teljesülő megoldást, A Solver nem talált létező megoldást üzenet jelenik meg.

A megoldás vizuális ellenőrzésére érdemes a szélsőérték-kereséssel kapott pont megjelenítése pontként, vagy pl. az origóval összekötött szakaszként.