Informatika1-2012/Eloadas3
Tartalomjegyzék |
Beépített függvények
Összetett adattípusokon általánosan értelmezett függvények
tuple | set | list | dict | |
---|---|---|---|---|
új elem | - | add | insert, append | (update) |
elem törlése | - | remove | remove | (pop) |
törlés mind | - | clear | - | clear |
elem kivétele | - | pop | pop | pop |
elem indexe | index | - | index | - |
hányszor szerepel | count | - | count | - |
másolás | - | copy | - | copy |
Reference
| – új elem hozzáadása |
| |
– új elem beillesztése | |
| – új elem hozzáfűzése |
| – elem törlése |
| – gyűjtemény kiürítése |
| – egy elem visszaadása és törlése a gyüjteményből |
| |
– elem indexe, ha tartalmazza | |
| – megszámolja és visszatér, hogy hányszor tartalmazza a gyűjtemény az adott elemet |
| – gyűjtemény lemásolása |
| – gyűjtemény hossza |
Halmazok függvényei
set = set([pi, 'abc', 35, pi])
union(<coll>[, <coll>]*)
- – egyesíti a halmazokat, az eredménnyel visszatér
update(<coll>[, <coll>]*)
- – union - az eredmény bekerül az "első" halmazba (|=)
intersection(<coll>[, <coll>]*)
,intersection_update(<coll>[, <coll>]*)
- – visszaadja a közös részt ill. halmaz felülírása az eredménnyel (&, &=)
difference(<coll>[, <coll>]*)
,difference_update<coll>[, <coll>]*)
- – különbség visszaadása ill. halmaz felülírása az eredménnyel (-, -=)
discard(<item>), remove(<item>)
- – elem törlése a halmazból, remove esetén hiba, ha nem létezik
isdisjoint(coll)
- – igaz, ha nincs közös elemük
issubset(<coll>)
- – részhalmaza-e a paraméter (<, <=)
issuperset(<coll>)
- – a halmaz részhalmaza-e a paraméternek (>, >=)
Lista függvényei
list = ['a', 'orange', 1, 1.56]
sort([cmp=None,] [key=None,] [reverse=False])
- – rendezi a lista elemeit
extend(<coll>)
- – hozzáadja a paraméterként átadott gyűjtemény elemeit a listához (+)
reverse()
- – megfordítja a lista elemeinek sorrendjét
- * operator
- – lemásolja és összefűzi újra a lista elemeit
Szótár függvényei
D = {'a':4, 'orange':5, 1:5, 1.56:5.67}
get(<key>[, <dv>])
- – a kulcshoz tartozó értékkel tér vissza, ha létezik;
egyébkéntNone
ill.dv
, ha megadtuk has_key(<key>)
- – igaz, ha a szótár eleme a kulcs
items()
- – a szótár elemeit adja vissza egy listában (kulcs, érték) tuple formajában
keys()
- – a kulcsokat adja vissza egy listában
iterkeys()
- – szótár kulcsain lépkedő iterátorral tér vissza
iteritems()
- – szótár értékein lépkedő iterátorral tér vissza
popitem()
- – szótár egy elemét eltávolítja és visszaadja (kulcs, érték) tuple formájában
update(<coll>)
- – dict vagy tuple lista elemeit illeszti be a szótárba
setdefault(<key>[, value])
- – beilleszti az elemet és visszatér az értékkel
values()
- – visszatér az értékekből képzett listával
Függvények számításokhoz
var(<string>)
- – szimbolikus számításokhoz hozhatunk létre változókat
subs(<args>)
- – kifejezés függvénye, amivel behelyettesíthetjük a változókat a paraméterben felsorolt értékekkel és visszakapjuk a kifejezés numerikus eredményét
float(<kif|num|string>)
- – lebegőpontos számmá próbálja alakítani a megadott paramétert (lsd. RR, RDF)
n()
- – kifejezések függvénye, a kiértékelt kifejezést adja vissza
exp(3)
- e3
pow(x,z)
- xz
log(exp(3))
– természetes alapú log- 3
sqrt(16)
– négyzetgyök- 4
sin(pi)
,cos(pi)
,tan(pi)
– szögfüggvényekarcsin()
, ... – inverzeikfloor(4.5)
– alsó egészrész- 4
ceil(4.6)
– felső egészrész- 5
Egyenlőség vizsgálata lebegőpontos számok esetén
Fontos megjegyezni, hogy a lebegőpontos számok mindig közelítő értékek, így két lebegőpontos szám, ami pl. számítás eredménye, valószínűleg nem egyezik meg egymással!
<code contenteditable style="margin-top: 20px;"><span style="color: #ff4040;">sage:</span> sqrt(4.0)^2 == 4.0 True</code>
DE
<code contenteditable style="margin-top: 20px;"><span style="color: #ff4040;">sage:</span> sqrt(5.0)^2 == 5.0 False</code>
Megoldás:
<code contenteditable style="margin-top: 20px;"><span style="color: #ff4040;">sage:</span> abs(sqrt(5.0)^2 == 5.0) < 10<span style=" font-size:70%; vertical-align: 0.4em;">10</span> True</code>
Kifejezeséken használt függvények
Az algebrai kifejezeséket összeggé alakíthatjuk az expand()
függvénnyel vagy .expand()
metódussal, ill. szorzattá a .factor()
-ral:
<code contenteditable style="margin-top: 20px;"><span style="color: #ff4040;">sage:</span> a,b = var('a','b') <span style="color: #ff4040;">sage:</span> expand((a+b)^2) a^2+2*a*b+b^2</code>
<code contenteditable style="margin-top: 20px;"><span style="color: #ff4040;">sage:</span> x = var('x') <span style="color: #ff4040;">sage:</span> (x^2-1).factor() (x-1)*(x+1)</code>
A kifejezéseket a simplify()
vagy a full_simplify()
metódussal tudjuk egyszerűsíteni:
<code contenteditable style="margin-top: 20px;"><span style="color: #ff4040;">sage:</span> p,x = var('p','x') <span style="color: #ff4040;">sage:</span> t = p/pow(p,x) <span style="color: #ff4040;">sage:</span> t.simplify() p^(-x + 1)</code>
<code contenteditable style="margin-top: 20px;"><span style="color: #ff4040;">sage:</span> x = var('x') <span style="color: #ff4040;">sage:</span> t = (x + 1)**3-x**3-1 <span style="color: #ff4040;">sage:</span> t.full_simplify() 3*x^2 + 3*x</code>
Egyenletek megoldása
solve()
– megpróbálja szimbolikus átalakításokkal meghatározni az egyenlet gyökét
<code contenteditable style="margin-top: 20px;"><span style="color: #ff4040;">sage:</span> (x + 1/x == 4).solve(x) [x == -sqrt(3) + 2, x == sqrt(3) + 2]</code>
<p><code>roots()</code> – mint a solve, csak az eredményt numerikusan és a gyök multiplicitását adja vissza</p> <pre><code contenteditable style="margin-top: 20px;"><span style="color: #ff4040;">sage:</span> (x**2 + 2*x + 1 == 0).roots(x) [(-1, 2)]</code></pre> <pre><code contenteditable style="margin-top: 20px;"><span style="color: #ff4040;">sage:</span> (x**3 - x**2 - x + 1 == 0).roots(x) [(-1, 1),(1, 2)]</code></pre>
Az előző metódusok néha nem tudnak explicit alakban megoldani egy egyenletet, vagy nem ad meg minden gyököt,
vagy hamis gyököket talál. Ekkor a find_root() segíthet egy numerikus megoldást találni a megadott intervallumon
(legyen pl: 0 < y < π/2):
<code contenteditable style="margin-top: 20px;"><span style="color: #ff4040;">sage:</span> y = var(’y’) <span style="color: #ff4040;">sage:</span> find_root(cos(y) == sin(y), 0, pi/2) 0.78539816339744839</code>
Az algoritmus mindig csak egy gyököt talál meg és az is egy közelítő érték.