Informatika1-2012/Eloadas3
15. sor: | 15. sor: | ||
<h1>Reference</h1> | <h1>Reference</h1> | ||
− | <table | + | <table> |
− | <tr><td | + | <tr><td><ul><li><code>add(<item>)</code></li></ul></td><td>– új elem hozzáadása</td></tr> |
− | <tr><td | + | <tr><td><ul><li><code>insert(<index>,<item>)</code></li></ul></td><td>– új elem beillesztése</td></tr> |
− | + | ||
<tr><td><ul><li><code>append(<item>)</code></li></ul></td><td>– új elem hozzáfűzése</td></tr> | <tr><td><ul><li><code>append(<item>)</code></li></ul></td><td>– új elem hozzáfűzése</td></tr> | ||
<tr><td><ul><li><code>remove(<item>)</code></li></ul></td><td>– elem törlése</td></tr> | <tr><td><ul><li><code>remove(<item>)</code></li></ul></td><td>– elem törlése</td></tr> | ||
<tr><td><ul><li><code>clear()</code></li></ul></td><td>– gyűjtemény kiürítése</td></tr> | <tr><td><ul><li><code>clear()</code></li></ul></td><td>– gyűjtemény kiürítése</td></tr> | ||
<tr><td><ul><li>S: <code>pop()</code><br/>L: <code>pop([<index>])</code><br/> | <tr><td><ul><li>S: <code>pop()</code><br/>L: <code>pop([<index>])</code><br/> | ||
− | D: <code>pop(<key>[, dv])</code></li></ul></td><td | + | D: <code>pop(<key>[, dv])</code></li></ul></td><td>– egy elem visszaadása és törlése a gyüjteményből</td></tr> |
− | + | <tr><td colspan="2"><ul><li><code>index(<item>[, start [, stop]])</code></li></ul></td></tr><tr><td></td><td>– elem indexe, ha tartalmazza</td></tr> | |
− | + | <tr><td><ul><li><code>count(<item>)</code></li></ul></td><td>– megszámolja és visszatér, hogy hányszor tartalmazza a gyűjtemény az adott elemet</td></tr> | |
− | + | ||
− | <tr><td colspan="2"><ul><li><code>index(<item>[, start [, stop]])</code></li></ul></td></tr><tr><td></td><td | + | |
− | <tr><td><ul><li><code>count(<item>)</code></li></ul></td><td | + | |
<tr><td><ul><li><code>copy()</code></li></ul></td><td>– gyűjtemény lemásolása</td></tr> | <tr><td><ul><li><code>copy()</code></li></ul></td><td>– gyűjtemény lemásolása</td></tr> | ||
<tr><td><ul><li><code>len(<coll>)</code></li></ul></td><td>– gyűjtemény hossza</td></tr> | <tr><td><ul><li><code>len(<coll>)</code></li></ul></td><td>– gyűjtemény hossza</td></tr> | ||
34. sor: | 30. sor: | ||
<h1>Halmazok függvényei</h1> | <h1>Halmazok függvényei</h1> | ||
− | <code> | + | <p><code>S = set([pi, 'abc', 35, pi])</code></p> |
<ul> | <ul> | ||
50. sor: | 46. sor: | ||
<h1>Lista függvényei</h1> | <h1>Lista függvényei</h1> | ||
− | <code> | + | <p><code>L = ['a', 'orange', 1, 1.56]</code></p> |
<ul> | <ul> | ||
<li><code>sort([cmp=None,] [key=None,] [reverse=False])</code><br/>rendezi a lista elemeit</li> | <li><code>sort([cmp=None,] [key=None,] [reverse=False])</code><br/>rendezi a lista elemeit</li> | ||
56. sor: | 52. sor: | ||
<li><code>reverse()</code><br/>megfordítja a lista elemeinek sorrendjét</li> | <li><code>reverse()</code><br/>megfordítja a lista elemeinek sorrendjét</li> | ||
<li>* operator<br/>lemásolja és összefűzi újra a lista elemeit</li> | <li>* operator<br/>lemásolja és összefűzi újra a lista elemeit</li> | ||
− | + | </ul> | |
− | + | <h1>Szótár függvényei</h1> | |
− | + | <code>D = {'a':4, 'orange':5, 1:5, 1.56:5.67}</code> | |
− | + | <ul> | |
− | + | <li><code>get(<key>[, <dv>])</code><br/>a kulcshoz tartozó értékkel tér vissza, ha létezik;<br/> | |
− | + | egyébként <code>None</code> ill. <code>dv</code>, ha megadtuk</li> | |
− | + | <li><code>has_key(<key>)</code><br/>igaz, ha a szótár eleme a kulcs</li> | |
− | + | <li><code>items()</code><br/>a szótár elemeit adja vissza egy listában (kulcs, érték) tuple formajában</li> | |
− | + | <li><code>keys()</code><br/>a kulcsokat adja vissza egy listában</li> | |
− | + | <li><code>iterkeys()</code><br/>szótár kulcsain lépkedő iterátorral tér vissza</li> | |
− | + | <li><code>iteritems()</code><br/>szótár értékein lépkedő iterátorral tér vissza</li> | |
− | + | <li><code>popitem()</code><br/>szótár egy elemét eltávolítja és visszaadja (kulcs, érték) tuple formájában</li> | |
− | + | <li><code>update(<coll>)</code><br/>dict vagy tuple lista elemeit illeszti be a szótárba</li> | |
− | + | <li><code>setdefault(<key>[, value])</code><br/>beilleszti az elemet és visszatér az értékkel</li> | |
− | + | <li><code>values()</code><br/>visszatér az értékekből képzett listával</li> | |
− | + | </ul> | |
− | + | <h1>Függvények számításokhoz</h1> | |
− | + | <ul> | |
− | + | <li><code>var(<string>)</code><br/>szimbolikus számításokhoz hozhatunk létre változókat</li> | |
− | + | <li><code>subs(<args>)</code><br/>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</li> | |
− | + | <li><code>float(<kif|num|string>)</code><br/>lebegőpontos számmá próbálja alakítani a megadott paramétert (lsd. RR, RDF)</li> | |
− | + | <li><code>n()</code><br/>kifejezések függvénye, a kiértékelt kifejezést adja vissza</li> | |
− | + | <li><code>exp(3)</code><br/>e<span style=" font-size:70%; vertical-align: 0.4em;">3</span></li> | |
− | + | <li><code>pow(x,z)</code><br/>x<span style=" font-size:70%; vertical-align: 0.4em;">z</span></li> | |
− | + | <li><code>log(exp(3))</code> – természetes alapú log<br/>3</li> | |
− | + | <li><code>sqrt(16)</code> – négyzetgyök<br/>4</li> | |
− | + | <li><code>sin(pi)</code>, <code>cos(pi)</code>, <code>tan(pi)</code> – szögfüggvények<br/><code>arcsin()</code>, ... – inverzeik</li> | |
− | + | <li><code>floor(4.5)</code> – alsó egészrész<br/>4</li> | |
− | + | <li><code>ceil(4.6)</code> – felső egészrész<br/>5</li> | |
− | + | </ul> | |
− | + | <h1>Egyenlőség vizsgálata lebegőpontos számok esetén</h1> | |
− | + | <p>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!</p> | |
− | + | <pre>sage: sqrt(4.0)^2 == 4.0 | |
True</pre> | True</pre> | ||
− | + | <p>DE</p> | |
− | + | <pre>sage: sqrt(5.0)^2 == 5.0 | |
False</pre> | False</pre> | ||
− | + | <p>Megoldás:</p> | |
− | + | <pre>sage: abs(sqrt(5.0)^2 == 5.0) < 10^(-10) | |
True</pre> | True</pre> | ||
− | + | <h1>Kifejezeséken használt függvények</h1> | |
− | + | <p>Az algebrai kifejezeséket összeggé alakíthatjuk az <code>expand()</code> | |
− | + | függvénnyel vagy <code>.expand()</code> metódussal, ill. szorzattá a <code>.factor()</code>-ral:</p> | |
− | + | <pre>sage: a,b = var('a','b') | |
sage: expand((a+b)^2) | sage: expand((a+b)^2) | ||
a^2+2*a*b+b^2</pre> | a^2+2*a*b+b^2</pre> | ||
− | + | <pre>sage: x = var('x') | |
sage: (x^2-1).factor() | sage: (x^2-1).factor() | ||
(x-1)*(x+1)</pre> | (x-1)*(x+1)</pre> | ||
− | + | <p>A kifejezéseket a <code>simplify()</code> vagy a <code>full_simplify()</code> metódussal tudjuk egyszerűsíteni:</p> | |
− | + | <pre>sage: p,x = var('p','x') | |
sage: t = p/pow(p,x) | sage: t = p/pow(p,x) | ||
sage: t.simplify() | sage: t.simplify() | ||
p^(-x + 1)</pre> | p^(-x + 1)</pre> | ||
− | + | <pre>sage: x = var('x') | |
sage: t = (x + 1)**3-x**3-1 | sage: t = (x + 1)**3-x**3-1 | ||
sage: t.full_simplify() | sage: t.full_simplify() | ||
3*x^2 + 3*x</pre> | 3*x^2 + 3*x</pre> | ||
− | + | <h1>Egyenletek megoldása</h1> | |
− | + | <p><code>solve()</code> – megpróbálja szimbolikus átalakításokkal meghatározni az egyenlet gyökét</p> | |
− | + | <pre>sage: (x + 1/x == 4).solve(x) | |
[x == -sqrt(3) + 2, x == sqrt(3) + 2]</pre> | [x == -sqrt(3) + 2, x == sqrt(3) + 2]</pre> | ||
− | + | <p><code>roots()</code> – mint a solve, csak az eredményt numerikusan és a gyök multiplicitását adja vissza</p> | |
− | + | <pre>sage: (x**2 + 2*x + 1 == 0).roots(x) | |
[(-1, 2)]</pre> | [(-1, 2)]</pre> | ||
− | + | <pre>sage: (x**3 - x**2 - x + 1 == 0).roots(x) | |
[(-1, 1),(1, 2)]</pre> | [(-1, 1),(1, 2)]</pre> | ||
− | + | <p>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 <code>find_root()</code> segíthet egy numerikus megoldást találni a megadott intervallumon | |
− | + | <br/>(legyen pl: 0 < y < π/2):</p> | |
− | + | <pre>sage: y = var(’y’) | |
sage: find_root(cos(y) == sin(y), 0, pi/2) | sage: find_root(cos(y) == sin(y), 0, pi/2) | ||
0.78539816339744839</pre> | 0.78539816339744839</pre> | ||
− | + | <p>Az algoritmus mindig csak egy gyököt talál meg és az is egy közelítő érték.</p> |
A lap jelenlegi, 2012. szeptember 20., 12:14-kori változata
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
S = set([pi, 'abc', 35, pi])
union(<coll>[, <coll>]*)
egyesíti a halmazokat, az eredménnyel visszatérupdate(<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étezikisdisjoint(coll)
igaz, ha nincs közös elemükissubset(<coll>)
részhalmaza-e a paraméter (<, <=)issuperset(<coll>)
a halmaz részhalmaza-e a paraméternek (>, >=)
Lista függvényei
L = ['a', 'orange', 1, 1.56]
sort([cmp=None,] [key=None,] [reverse=False])
rendezi a lista elemeitextend(<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 megadtukhas_key(<key>)
igaz, ha a szótár eleme a kulcsitems()
a szótár elemeit adja vissza egy listában (kulcs, érték) tuple formajábankeys()
a kulcsokat adja vissza egy listábaniterkeys()
szótár kulcsain lépkedő iterátorral tér visszaiteritems()
szótár értékein lépkedő iterátorral tér visszapopitem()
szótár egy elemét eltávolítja és visszaadja (kulcs, érték) tuple formájábanupdate(<coll>)
dict vagy tuple lista elemeit illeszti be a szótárbasetdefault(<key>[, value])
beilleszti az elemet és visszatér az értékkelvalues()
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ókatsubs(<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étfloat(<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 visszaexp(3)
e3pow(x,z)
xzlog(exp(3))
– természetes alapú log
3sqrt(16)
– négyzetgyök
4sin(pi)
,cos(pi)
,tan(pi)
– szögfüggvényekarcsin()
, ... – inverzeikfloor(4.5)
– alsó egészrész
4ceil(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!
sage: sqrt(4.0)^2 == 4.0 True
DE
sage: sqrt(5.0)^2 == 5.0 False
Megoldás:
sage: abs(sqrt(5.0)^2 == 5.0) < 10^(-10) True
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:
sage: a,b = var('a','b') sage: expand((a+b)^2) a^2+2*a*b+b^2
sage: x = var('x') sage: (x^2-1).factor() (x-1)*(x+1)
A kifejezéseket a simplify()
vagy a full_simplify()
metódussal tudjuk egyszerűsíteni:
sage: p,x = var('p','x') sage: t = p/pow(p,x) sage: t.simplify() p^(-x + 1)
sage: x = var('x') sage: t = (x + 1)**3-x**3-1 sage: t.full_simplify() 3*x^2 + 3*x
Egyenletek megoldása
solve()
– megpróbálja szimbolikus átalakításokkal meghatározni az egyenlet gyökét
sage: (x + 1/x == 4).solve(x) [x == -sqrt(3) + 2, x == sqrt(3) + 2]
roots()
– mint a solve, csak az eredményt numerikusan és a gyök multiplicitását adja vissza
sage: (x**2 + 2*x + 1 == 0).roots(x) [(-1, 2)]
sage: (x**3 - x**2 - x + 1 == 0).roots(x) [(-1, 1),(1, 2)]
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):
sage: y = var(’y’) sage: find_root(cos(y) == sin(y), 0, pi/2) 0.78539816339744839
Az algoritmus mindig csak egy gyököt talál meg és az is egy közelítő érték.