FDraw 1.0

A képletszerkesztő használata:

A lent található kis ábra szemlélteti, hogy melyik gomb segítségével milyen függvényt tudunk beírni. Például az
x + -
* / ^
( ) ln sqrt
jelentése, hogy az x,+,-,*,/,^,(,),ln,sqrt jeleket rendre az 1,2,3,4,5,6,7,8,9,0 gombokkal lehet elérni.
Ennél azonban több képlet van, azokat a * gomb lenyomásával érhetjük el. A számok beírásához a beírni kivánt számot lenyomva tartva a program átvált "számbeíró" üzemmódba. Onnan értelemszerűen a *-gal lehet visszatérni. A #-kal lehet tizedesjegyet írni.
Törölni a jobb menügomb segítségével lehet, mozogni a képleten belül a le-fel gombbal. Bizonyos dolgokat csak egyszerre lehet törölni, ilyen a szumma és az integrál függvény.

A függvényekről egy pár szó:
ln: természetes alapú logaritmus
sqrt: gyökvonás
sh, ch: sinh és cosh
Pi, e: konstansok
abs, int, fra: abszolútérték, egészrész, illetve tört rész
!: az adott szám egészrészének faktoriálisa. Csak 3000-ig működik, mivel ott eléri az ábrázolható felső határt.
sum,k: Szummát lehet vele szerkezteni, pl: sum[(-1)^k*x^(2*k)/(2*k)!;0;5] hatására a cos(X) ötödfokú Taylor polinomját rajzolja ki. Vagyis az első képletet összegzi úgy, hogy a k értéke a második értéktől a harmadik érték felső egészrészéig fut. Két szumma/integrál lehet egymás mellet, de egymásba ágyazva nem.
Int: Közelítő határozott integrál. A közelítést 32 érték kiszámításával végzi, de a menüben ez változtatható 64-re, 128-ra és 256-ra. Pl: sum[sin(k);0;Pi/2] hatására a sin(k)-t integrálja, ahol k fut 0-tól Pi/2-ig. Csak a k-as tag fut, egy esetleges x tag az adott függvényértéknél mint konstans viselkedik. Pl: int[x;0;1] megegyezik az x*int[1;0;1]-gel.

Érvényes egy általános kiegészítő eljárás, miszerint a következő képletek, és az ahhoz hasonlóak autómatikusan ekvivalensek. Ezek gyorsabb és könnyebb szerkesztést tesznek lehetővé.
"cos(x)" = "cosx"
"(cos(X))^2" = "cosx^2" -> Fontos, hogy a függvények csak közvetlenül mögöttük lévő tagra hatnak.
"(3*x-2)/4" = "3x-2)/4" -> Autómatikusan a képlet eljére és végére teszi a hiányzó zárójeleket.
"x^2-4*x-2" = "xx-4x-2"
"x*sin(x)" = "xsinx"
"sqrt(abs(sin(x)))" = "sqrtabssinx"
"sum[(-1)^k*x^(2*k)/(2*k)!;0;5]" = "sum[(-1)^kx^(2k)/(2k)!;0;5]"

A beírt függvényt a bal menügomb segítségével lehet kirajzoltatni. Előfordulhat, hogy a beírt képlet hibás (pl. "x+*2"), ekkor a program szól.
A konstans értéke mindig előre kiszámítódik, így a 3000!+e^600x esetén a 3000! és az e^600 csak egyszer számolódik ki. Így egy x-et nem tartalmazó határozatott integrál számítást, ami időigényes lehet, csak egyszer végez el a program. A (3000+x)! esetén természetesen ez nem működik, hiszen a belső rész függ x-től.

A menürendszer használata:

A menüben lévő menük:
Draw/Function: ennek segítségével lehet váltani a képletszerkesztő és a függvényrajzoló mód között.
Table: Egy táblázatot kezd el kiírni, amelyben x értéke 0-tól 100-ig megy. Az 5>34,23322 alakú sor azt jelenti, hogy a függvény az 5 helyen éppen 34,23322-t vesz fel. Amíg ki nem számolta az összes adatot, addig egy kicsit lassú lehet a lépkedés, de így a már kiszámított eredményeket meg lehet tekinteni. Az elején lehet, hogy szükség lesz egy le gomb megnyomására, hogy frissítse a listát. A táblázatban a bal menügomb hatására 10-zel ugrik tovább.
Save/Load: Itt lehetőség van függvények elmentésére és betöltésére. Egy már elmentett függvényt a Load-on belül törölhetünk a Delete-t választva.
Integral precision: Kiválaszthatjuk, hogy hány függvényérték alapján becsüljön határozott integrált. Minnél nagyobb értéket választunk, annál pontosabb és lassabb lesz.
Help: Egy rövid segítség.
Exit: Kilépés.

A képletszerkesztő és a függvényrajzoló mód között gyorsan is tudunk váltani a felvevő ("call" vagy "send") segítségével.

A függvényrajzoló használata:

A kirajzolást a program folyamatosan végzi, előbb minden nyolcadik pontra számolja ki az értékeket, így már láthatunk egy kezdetleges képet a függvényről, majd egyre pontosít. A közvetlenül a képernyő aljára illetve tetejére kirajzolt pontok jelentése: a függvényérték ott olyan nagy, vagy olyan kicsi, hogy az adott felbontás mellett nem megjeleníthető. Ahol eltűnik (színes telefonoknál piros lesz) az X tengely, ott a függvény értéke valami miatt nem értelmezett.
A le-fel gombokkal lehet zoomolni. A 2,4,6,8 gombokkal fel, balra, jobbra és le mozoghatunk. Az 5-ös gomb lenyomására visszakerül az alapállapotba. A # hatására összeköti illetve nem köti össze a kirajzolt pontokat. A 0 segítségével válthatunk, hogy a kirajzolt érték mennyire legyen pontos. Ennek a bekapcsolásának nincs értelme, hiszen a különbség úgysem látszik. A jobb menügomb segítségével az éppen kirajzolt terület méreteit kapjuk meg. Ha itt megnyomjuk a le gombot (erre utal a "press down for min/max" kifejezés), akkor a program kiszámolja a függvény "éppen látott", azaz a megjelenített intervallumon lévő minimum és maximum helyét és értékét, továbbá ha ezek között felezéssel próbál egy gyököt is találni.
Amennyiben a programot csak egy érték kiszámolásához akarjuk használni, akkor írjuk be a képletet x nélkül, majd rajzoltassuk ki, és nyomjuk meg a bal menü gombot. Ott látható lesz a kérdezett érték. A pontosság állításának itt nincs értelme, mert a konstans részeket mindig a lehető legpontosabban számolja ki.

A program pontosságát jellemzően egy pár adat pontossága:
sin2: 0.000004%-os hiba (Gyakorlatilag az összes megjelenített számjegy helyes.)
ln100: 0.000004%-os hiba
ln100000: 0.0043%-os hiba
Nagy számokra:
e^600: 0.00014%-os hiba (10^261 a nagyságrend)
sh(10000): 0.0019%-os hiba (10^4343 a nagyságrend)
3000!: 0.0001%-os hiba (10^9131 a nagyságrend)
Integrálra:
Int(ln(k)*ln(1-k)), ahol k fut 0-tól 1-ig: 0,0087%-os hiba.
A felső határ a számolásnál 10^9633 körül van.

Példák:

Rajzoltassuk ki a x*sin(3*x) kifejzesést! A program indítása után a szerkesztő módban a le gomb segítségével az álló függőleges vonallal menjünk a képlet végére. Ez a függőleges vonal jelenti a kurzort. A jobb menüpontot tartsuk addig nyomva, amíg a teljes eddigi képletet le nem törölte. Nyomjuk meg az 1-es gombot rövid ideig az "x" begépeléséhez, majd a 4-est a "*"-hoz. Ezután nyomjuk le egyszer a "*" gombot a függvények közötti váltáshoz. Látható, hogy az 1-es gombnak most a "sin" fog megfelelni. Nyomjuk le rövid ideig az 1-est. Használjuk a 7-es gombot a zárójel nyitásához, majd nyomjuk le és tartsuk lenyomva a 3-as gombot a 3-as begépeléséhez. Innen a "*"-gal térhetünk vissza. Nyomjunk egy 4-est, 1-est és 8-ast a "*x)" rész begépeléséhez. Ekkor a következő képet kell látnunk:

Most kétféleképpen válthatunk át a kirajzoló részbe, vagy a bal menügomb kétszeri lenyomásával, vagy a hívógomb egyszeri megnyomásával. Az eredménynek így kell kinéznie:


Most számoljuk ki az x abszolútértékének Fourier együtthatóit! Mivel ez páros függvény, ezért csak a cosinusz együtthatóit kell kiszámolnunk. Az abs(k)*cos(k*x)/Pi-t kell kiintegrálni úgy, hogy k fut -Pi-től Pi-ig, és x először 0-át, majd 1-et, 2-őt, 3-at, ... vesz fel. A képletszerkesztőben üres képernyőnél üssük le a következő gombokat:
**4 -> A 4-es gomb hatására az integrált írja be. ( Int[|;;] )
*9 -> Az abszolútérték beírása. ( Int[abs|;;] )
**3 -> k beírása. ( Int[absk|;;] )
*2 -> cos beírása ( Int[abskcos|;;] )
7**318 -> (kx) beírása ( Int[abskcoskx|;;] )
LE 3*6 -> -Pi-től fog integrálni ( Int[abskcoskx|;-Pi;] )
LE *6 -> Pi-ig ( Int[abskcoskx|;-Pi;Pi] )
LE 5*6 -> És osztunk Pi-vel ( Int[abskcoskx|;-Pi;Pi]/Pi )
Állítsuk át az integrálás pontosságát 32-ről 128-ra. Ehhez nyomjuk meg a bal menü gombot, és válasszuk az Integral prec. menüt. Válasszuk ki a 128 values sort.
Most válasszuk ki a Table-t. Itt nyomnunk kell egy LE gombot, hogy frissítsen, majd leolvashatók az együtthatók.
Ha mindent jól csinálunk, akkor így kell kinéznie a függvénynek és a képletnek:

A táblázatban lefelé mozogva lehet látni a többi együtthatót is. Jól látszik, hogy a 0. együttható Pi, és egy kis utánaszámolással ellenőrizhető, hogy minden 0-ától külünböző páros együttható 0, a páratlan együtthatók pedig -4/(x^2)/Pi.

További érdekes függvények

Az előző függvény kirajzolása: Pi/2+sum[-4/(2k+1)^2/Pi*cos((2k+1)x);0;3]. Ha a 3 helyett egy nagyobb számot írunk, akkor lassabb és pontosabb lesz a kirajzolás (ekkor több tagig számol).
A cos(x) primitív függvénye: Int[cosk;0;x]. Fontos, hogy az integrál pontossága 32-re legyen állítva. Így is beletelik egy kis időre, mire kirajzolja, de látható, hogy ez a sin(x).
A sin(x) sorfejtése: sum[(-1)^k*x^(2k+1)/(2k+1)!;0;8]. Ha a nyolc helyett nagyobb számot írunk, akkor pontosabb lesz, ez főleg a szélén látható.

Móra Péter
hudo kukac freemail.hu