In [1]:
# Základné aritmetické operácie - základy programovania
# Programové kódy: SageMath v.9.x(Python 3.0)
# Prerekvizity: základy programovania
#
# Použitá literatúra:
# [1] R. E. Mezei, An introduction to SAGE programming, John Wiley,and Sons,2016 
# ISBN: 978-1-119-12280-7.
#
# E-kurz: P. Szabó: Numerická matematika, 2022
# Spúšťanie programov: 
#    1) Otvoriť lokalitu https://sagecell.sagemath.org/ 
#    2) Kopírovať obsah príkladu In[n] do SageMath boxu 
#    3) Kliknutie na "Evaluate"
# Príloha publikácie: 
# [4] Peter Szabó a Eva Baranová: Integrálny počet a numerická matematika, 2022, TUKE
# ISBN:978-80-553-4185-9
# Modifikované: 10.12.2022 
In [2]:
# komentár, napíš "Hello world!"
print ("Hello World!")
Hello World!
In [3]:
# Verzia systému Sage Math 
version()
Out[3]:
'SageMath version 9.1, Release Date: 2020-05-20'
In [4]:
# Základné aritmetické operácie
6+4, 6-4, 6*4, 6/4
Out[4]:
(10, 2, 24, 3/2)
In [5]:
# desatinné (racionálne) čísla
In [6]:
# operácia 4-tá mocnina - celé čísla
6**4
Out[6]:
1296
In [7]:
# operácia 4-tá mocnina
6^4
Out[7]:
1296
In [8]:
--4
Out[8]:
4
In [9]:
# Celočíselné delenie
6//4
Out[9]:
1
In [10]:
# Zvýšok po celočíselnom delení
6%4
Out[10]:
2
In [11]:
# Príklad: 2015 hodín je koľko dní ?

2015//24
Out[11]:
83
In [12]:
# Ak je teraz 19:00 hodín,
# koľko hodín bude o 2015 hodín?
(2015-5)%24
Out[12]:
18
In [13]:
# priorita operátorov +,-,*,/,^, ()
# plus, mínus, krát, deleno, umocnené na, zátvorky
6+4^2
Out[13]:
22
In [14]:
# priorita operátorov zátvorky
(6+4)^2
Out[14]:
100
In [15]:
# priorita operátorov 2
(((2-4)*(4-3)+4)^10)/(2^20)
Out[15]:
1/1024
In [16]:
# priorita operátorov 3
2+2*2-2 , 2+(2*2)-2 ,  (2+2)*2-2 , (2+2)*(2-2)
Out[16]:
(4, 4, 6, 0)
In [17]:
# reálne čísla - čísla s pohyblivou čiarou
2.0^200
Out[17]:
1.60693804425899e60
In [18]:
# celé čísla
2^200
Out[18]:
1606938044258990275541962092341162602522202993782792835301376
In [19]:
# zlomky a desatinné čísla - racionálne čísla
6/4
Out[19]:
3/2
In [20]:
# zlomky a desatinné čísla - desatinné čísla
6/4.0
Out[20]:
1.50000000000000
In [21]:
# zlomky a desatinné čísla
6/4.n()
Out[21]:
1.50000000000000
In [22]:
# zlomky a desatinné čísla - 100 bitová presnosť
6/4.n(digits=5)
Out[22]:
1.5000
In [23]:
# zaokruhlenie čísel
round(1/4, 2), round(1/4, 5), round(1/4, 1)
Out[23]:
(0.25, 0.25, 0.2)
In [24]:
round(pi, 2), round(pi , 10)
Out[24]:
(3.14, 3.1415926536)
In [25]:
# konštanta pi-iracionálne číslo (nekonečne veľa čislic za des. bodkou)
pi.n(5), pi.n(digits=30)
Out[25]:
(3.1, 3.14159265358979323846264338328)
In [26]:
# konštanta e-iracionálne číslo (nekonečne veľa čislic za des. bodkou) 
e.n(10), e.n(digits=40)
Out[26]:
(2.7, 2.718281828459045235360287471352662497757)
In [27]:
# konštanta golden_ratio - iracionálne číslo 
golden_ratio.n(), golden_ratio.n(digits=30)
Out[27]:
(1.61803398874989, 1.61803398874989484820458683437)
In [28]:
# Nekonečno 
infinity
Out[28]:
+Infinity
In [29]:
# Nekonečno (písmená oo)
In [30]:
# Dlhé riadky, zalomenie riadku opačná lomka \ 
(((2-4)*     \
(4-3)+       \
4)^10)/(2^20)
Out[30]:
1/1024
In [31]:
# reťazce a čísla - reťazce píšeme do úvodzoviek ""
print ("4+6")
4+6
In [32]:
# reťazce a čísla - čísla, premenné píšeme bez úvodzoviek ""
print (4+6)
10
In [33]:
# reťazce a čísla - príklad
print ("4+6 = ", 4+6)
4+6 =  10
In [34]:
# Knižnica zabudovaných funkcií
# druhá odmocnina sqrt

sqrt(72)
Out[34]:
6*sqrt(2)
In [35]:
# vyjadrenie pomocou desatinných číslic
# n(12) - presnosť na 100 bitov - sqrt(72) je iracionálne číslo
sqrt(72).n(100)
Out[35]:
8.4852813742385702928101323453
In [36]:
# testovanie či dané číslo je prvočíslo
(2^50-1).is_prime()
Out[36]:
False
In [37]:
# rozklad čísel na súčin prvočísel (existuje jednoznačný rozklad)
(2^50-1).factor()
Out[37]:
3 * 11 * 31 * 251 * 601 * 1801 * 4051
In [38]:
# rozklad čísel na súčin prvočísel (2)
(10000).factor()
Out[38]:
2^4 * 5^4
In [39]:
# najväčší spoločný deliteľ
gcd(6,4)
Out[39]:
2
In [40]:
# najmenší spoločný násobok
lcm(6,4)
Out[40]:
12
In [41]:
# absolute value - absolútna hodnota
abs(-2015)
Out[41]:
2015
In [42]:
# natural logarithm - prirodzený logaritmus
ln(e^2)
Out[42]:
2
In [43]:
#NOTE: log also denotes the natural logarithm
#      that is log base e
#      log(x) tiež označuje prirodzený logaritmus 
log(e^2)
Out[43]:
2
In [44]:
# Príklad výpočtu prirodzeného logaritmu
log(10.0)
Out[44]:
2.30258509299405
In [45]:
# Funkcia log(x,n) označuje logaritmus pri základe n
log(32, 2)
Out[45]:
5
In [46]:
# log pri základe 10
log(1000, 10)
Out[46]:
3
In [47]:
# výpočet logaritmu s reálnym argumentom
log(1024.0, 2)
Out[47]:
10.0000000000000
In [48]:
# trigonometrické funkcie
sin(pi/4)
Out[48]:
1/2*sqrt(2)
In [49]:
# operácie s trigonometrickými funkciami
( sin(pi/9)+cos(0)-tan(pi/4) ).n()
Out[49]:
0.342020143325669
In [50]:
# delitele
(123^4-7).divisors()
Out[50]:
[1, 2, 114443317, 228886634]
In [51]:
# zápis matematického výrazu pomocou LaTeX
p=latex(sqrt(2))
p
Out[51]:
\sqrt{2}
In [52]:
# zápis matematického výrazu pomocou LaTeX
q=latex(pi*sqrt(72))
q
Out[52]:
6 \, \sqrt{2} \pi
In [53]:
# Zobrazenie matematického výrazu pomocou LaTeX
p=latex(sqrt(2))
q=latex(sqrt(72)*pi)
show(p,';',q)
In [54]:
p=latex(sin(pi/4))
show(p)
In [55]:
show(pi,' ; ', infinity,' ; ', sqrt(72))
In [56]:
# Polynóm druhého stupňa - príkaz LatexExpr 
var ( 'a , b , c ') ;
r=LatexExpr("f(x) = ax^2+ bx + c ")
print("Polynóm druhého stupňa:")
show(r)
Polynóm druhého stupňa:
In [57]:
# Konvertovanie celého čísla z desiatkovej sústavy na binárne
a = 18
a.binary()
Out[57]:
'10010'
In [58]:
# Konvertovanie celého čísla z desiatkovej sústavy na binárne
# Jednotlivé číslice čísla v binárnej (dvojkovej) sústave
# v opačnom poradí
a = 18
a.digits(2)
Out[58]:
[0, 1, 0, 0, 1]
In [59]:
# Konvertovanie celého čísla z desiatkovej sústavy do trojkovej
# sústavy. Jednotlivé číslice čísla v trojkovej sústave
# 18 = 2*3^2 +0*3^1+0*3^0
a = 18
a.digits(3)
Out[59]:
[0, 0, 2]
In [60]:
# Konvertovanie celého čísla z desiatkovej sústavy do osmičkovej
# (hexa) sústavy. Jednotlivé číslice čísla v osmičkovej sústave
# v opačnom poradí, číslice osmičkovej sústavy [0,1,2,3,4,5,6,7]
# 17 = 2*8^1 + 1*8^0
a = 17
a.digits(8)
Out[60]:
[1, 2]
In [61]:
# Konvertovanie celého čísla z des. sústavy do šestnástkovej
# sústavy. Šestnástková sústava obsahuje znaky
#       [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F]
#       [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15]
#  31=1*16^1+15*16^0,  31 (10) = 1F (16)
a = 31
a.digits(16)
Out[61]:
[15, 1]
In [62]:
# Konvertovanie celého čísla z binárnej do desiatkovej sústavy
a=int("10001",2)
print(a)
17
In [63]:
# Konvertovanie celého čísla z osmičkovej do desiatkovej sústavy
a=int("27",8)
print(a)
23
In [64]:
# Konvertovanie celého čísla zo šestnástkovej do des. sústavy
a=int("FF",16)
print(a)
255
In [65]:
# Vytvorenie a zápis grafického súboru sin.png 
# Create a Portable Network Graphics (png) file and save it to computer
p = plot(sin(x), x, -2*pi, 2*pi)
p.save("sin.png")
In [66]:
# dva grafy a ďalšie možnosti graf. výstupu
# two graphs + legend_label
p = plot(sin(x), x, -2*pi, 2*pi, color = "blue",  \
            axes_labels =[ "x","sin(x)"],         \
            ticks = pi/3, tick_formatter=pi,      \
            legend_label = "sin(x)" )
q = plot(sin(6*x), x, -2*pi, 2*pi, color = "red", \
            linestyle = "dotted",                 \
            legend_label = "$sin(6 \\cdot x)$" )
(p+q).show()
In [67]:
# pole grafov
graph1 = plot(sin(x), (x, -4*pi, 4*pi))
graph2 = plot(sin(6*x), (x, -4*pi, 4*pi))
graph3 = plot(sin(12*x), (x, -4*pi, 4*pi))
empty  = plot(x,x, -1,1)
show(graphics_array(        \
   [[graph1, graph2,empty], \
    [empty ,empty, graph3]],    2, 3))
In [68]:
plot(tan(x), -2*pi, 2*pi, detect_poles="show", gridlines="minor").show(ymin = -10, ymax = 10)