• Register

Mi lahko nekdo prosim pomaga poiskati seznam vseh simbolov v sympy knjiznici?

+22 votes
377 views
Iskal sem na uradi strani od sympy http://docs.sympy.org/dev/ pa nisem nasel.

 

Specificno me zanima, pri poimenovanju spremenljivk:  x, f, g = sym.symbols('nekaj, nekaj, nekaj ').

Kje lahko najdem kaj vse je lahko ta nekaj?
asked Mar 19, 2017 by Brankooo (2,700 points)
edited Mar 19, 2017 by Brankooo

2 Answers

+15 votes

Živjo,

 

Sympy, če prav vem podpira celotno LaTex knjižnico oz zbirko.

Recimo lahko uporabiš, da so simboli (alfa beta...) itd.

primer:

import sympy as sym

sym.init_printing()

a = sym.symbols('alfa')

a (izpiše alfo)

V tem primeru bo prepoznal po latexu, da gre za grški simbol in bo izpisal grški simbol. Če ne prepozna, da gre za kakšen simbol iz Latexa potem dejansko izpiše niz (string), ki si ga podal v '   '.

Npr:

a = sym.symbols('banana')

a (izpiše "banana", ker ni nobenega simbola v latex za banana)

 

Za kaj več poglej malo po Latexu. Podpira večino oz vsaj tisto kar bi rabil.

https://artofproblemsolving.com/wiki/index.php/LaTeX:Symbols

 

 

Upam, da sem ti vsaj delno odgovoril. Neke skupne zbirke primerov pa nisem našel, je potrebno malo preizkusiti.

answered Mar 19, 2017 by tilen.mlinaric (7,770 points)
edited Mar 19, 2017 by tilen.mlinaric
+14 votes

Živjo Branko!

Poimenovanje spremenljivk je enostavna zadeva, ampak se strinjam da zna biti precej mučna, ko se je potrebno odločiti kako in predvsem zakaj jo tako poimenovati.

V kolikor še ni razjasnjeno, bi samo rad nakazal slednje. V Pythonu tako kot vsi ostali programski jeziki (večina), imajo spremenljivke poleg imena, tudi podatkovni tip. Na primeru, da bo bolj jasno, če hočeš v programskem jeziku Python (pazi! C, C++, C#  ipd je drugače!!) zapisati maso in ime, zapišeš npr:

     masa = 23.2
     ime = "janez"

Kaj se tukaj zgodi?
Pri spremenljivki masa: Računalniški program prepozna številčni vnos necelega števila (ki mu v programiranju pravimo float, poznamu tudi double, ki je 2x večji) torej rezervira mesto na spominu za float.
Pri spremenljivki ime: Računalniški program prepozna string oziroma besedni vnos! Zato na računalniškem spominu rezervira dovolj velik prostor za tvoj vnos besede Janez

Vendar, pri obeh primerih računalnik "ne ve" kaj pomeni masa in kaj pomeni ime. Zanj je važno le to, da v primeru če želiš dostopati do vrednosti teh spremenljivk, "zna" računalnik preko imena ki si ga spremenljivki določil ti, operirati, vrniti vrednost. Na primer:

     print(ime)          # naprinta vrednost spremenljivke ime, ki je v bistvu beseda, natančneje janez

Torej da povzamem, spremenljivki je potrebno (v primeru Python-a) določiti ime in v večji meri tudi njeno vrednost, da računalnik "ve" s kakšnim podatkovnim tipom ima opravka. Vse to sledi iz tega, da mora računalnik rezervirati prostor na spominu. Torej potrebno je definirati:
     - ime + vrednost (iz katere se razbere podatkovni tip), ali pa
     - ime + podatkovni tip (s tem pristopom boš tudi morda imel opravka, kadar boš namesto vrednosti,                             določeval podatkovni tip (npr. dtype = 'complex', za kompleksna števila)

Dolg "uvod" za kratek odgovor. SymPy je pristop simboličnega reševanja. Torej spremenljivke so podatkovnega tipa 'symbol' (tukaj je še prostor za debato, ampak zaradi poenostavitve, bomo tu končali). S tem, ko pa izvedeš metodo:

     a = sym.symbols('alpha')

Samo poveš računalniku, da si tvoji spremenljivki "alpha", računalniku dal ime "a". Zakaj pa nismo podali enakega imena, npr:

     alpha = sym.symbols('alpha')

Razlog je preprost. Ko napišemo ogromno kode, se ob dolgih imenih lahko izgubimo. Imena morajo biti kratka in jedrnata, predstavljati svoj namen. Zato je zelo priročno poimenovanje, ki ga ima SymPy na način sym.symbols, saj računalniku podaš krajšo različico, z njo operiraš tudi sam, v kolikor pa pozabiš kaj predstavlja, preprosto samo "scrollaš" do vrha in preveriš :)

V metodo sym.symbols() lahko podaš karkoli v kolikor je konstistenčno s tem kaj predstavlja (npr alpha = kot in ne povprečna starost severnoevropejcev).

Upam da sem ti pomagal, sem pa še odprt za diskusijo :)

answered Mar 19, 2017 by aljazjelen (11,190 points)
...