Slide 1

Slide 1 text

SageMathͰ ਺ֶͷ ྗΛ ্͛·͢ Enlarge your ability of mathematics with SageMath ๺㝳೗๏ PyCon mini Hiroshima 2019 @޿ౡࢢཱେֶαςϥΠτΩϟϯύε @2019೥10݄12೔(౔)

Slide 2

Slide 2 text

͜ͷࢿྉ͸Ξοϓϩʔυ൛ ▸ ౰೔Demoͱ͍ͯͨ͠ͱ͜Ζ͸ɺ͍͔ͭ͘εΫϦʔϯγϣοτΛషΓ෇͚ ·ͨ͠ɻ ▸ ͕࣌ؒ͋ͬͨΒ͠Ό΂Ζ͏ͱࢥͬͨεϥΠυ͕ޙΖʹ෇͚ͯ͋Γ·͢ɻ

Slide 3

Slide 3 text

ࣗݾ঺հ ͋ Μ ͨ ͊ ୭ ͳ ͊

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

๺㝳೗๏ ▸ ͖͍ͨͩΏ͖ͷΓ ▸ ʮ೗๏ʯΛԻಡΈ(༗৬ಡΈ)ͯ͠ňʹΐ΄͏ʼn ▸ ϋΠύɾϝσΟΞɾτϥϯεϨʔλ ▸ ೔༵ϓϩάϥϚ

Slide 6

Slide 6 text

iPad ޿ౡห ݕࡧ ৄ͘͠͸

Slide 7

Slide 7 text

ʮ͜Μͳײ͡ͷ͕ग़͖ͯ·͢ɻʯ

Slide 8

Slide 8 text

(͜͜Ͱ࠷ۙͷଞͷ׆ಈΛը૾(ུ)෇͖Ͱ͝঺հͨ͠) ▸ ཆ໋ञ΢Σϒಈը޿ࠂ ެࣜwwwww ୈ26ճ೔ຊϓϩϞʔγϣϯاըίϯςετͰάϥ ϯϓϦ৆wwww ▸ όϑΝϦϯ ΢Σϒಈը޿ࠂ ެࣜwwwww ▸ ؟ڸࢢ৔ ެࣜww ςϨϏCM wwww ▸ ؟ڸࢢ৔ TVCM (2018) Χʔϓww Τϧwww ▸ ؟ڸࢢ৔ TVCM (2019) ϑϥϯεΞwwwwwww ▸ ࠓ೥ RCCதࠃ์ૹ(TBSܥ) ʰΠϚͳ·ͬ!ʱίϝϯςʔλwwww

Slide 9

Slide 9 text

͋ͱ਺ֶ͕ ޷͖

Slide 10

Slide 10 text

ͱ͍͏Θ͚ Ͱ

Slide 11

Slide 11 text

SageMathͰ ਺ֶͷ ྗΛ ্͛·͢

Slide 12

Slide 12 text

SageMathͰ ਺ֶͷ ྗΛ ্͛·͢

Slide 13

Slide 13 text

SageMathͰ ਺ֶͷ ྗΛ ্͛·͢ ͞ ͛ · ͢ ͋ ͛ · ͢ ʊਓਓਓਓਓਓʊ ʼɹμδϟϨɹʻ ʉ̮̮̮̮̮̮ʉ

Slide 14

Slide 14 text

SageMathͰ ਺ֶͷ ྗΛ ্͛·͢

Slide 15

Slide 15 text

SageMathͰ ਺ֶͷ ྗΛ ্͛ΒΕͨΒɺ

Slide 16

Slide 16 text

(ɾ㱼ɾ) ŘŘ!!

Slide 17

Slide 17 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ

Slide 18

Slide 18 text

΋͏ͪΐͬͱ ৄ͘͠

Slide 19

Slide 19 text

ຊ೔ͷϝχϡʔ 4BHFͱ͸ 4BHFΛେֶͷतۀͰซ༻ ༡ͼ΍ݚڀʹ

Slide 20

Slide 20 text

օ͞Μ͸ ਺ֶେ޷͖

Slide 21

Slide 21 text

Sageͱ͸

Slide 22

Slide 22 text

Sage ▸ Φʔϓϯιʔεͷ਺ֶιϑτ΢ΣΞγεςϜ ▸ ͍ΖΜͳ਺ֶιϑτ΢ΣΞΛPythonͰ౷߹ ▸ GAP, Maxima, NumPy, SciPy, mathplotlib, Sympy, FLINT, R ▸ ϛογϣϯ: Mathematica ͱ͔ Maple, Matlab, Magmaͷ୅ସΛ࡞Δ͜ͱ

Slide 23

Slide 23 text

਺ࣜॲཧγε ςϜ

Slide 24

Slide 24 text

਺ࣜॲཧγεςϜ͸਺ࣜΛ਺ࣜͷ··ѻ͑Δ ▸ ුಈখ਺఺਺ͷۙࣅͰ͸ͳ͘୅਺ܭࢉ͕ͦͷ··Ͱ͖Δ ▸ ԁप཰Λͦͷ·· ▸ ؔ਺ͷඍ෼ੵ෼ͷΑ͏ͳ΋ͷͱ͔ ▸ ͳͲ

Slide 25

Slide 25 text

؆୯ʹࢼ͢

Slide 26

Slide 26 text

؆୯ʹࢼ͢ ▸ ΢Σϒ ▸ Sage Cell Server https://sagecell.sagemath.org/ ▸ CoCalc (چSageMathCloud) https://cocalc.com ▸ Πϯετʔϧ ▸ ϩʔΧϧʹ ▸ ίϚϯυϥΠϯͰ΋

Slide 27

Slide 27 text

CoCalc ͍͢͝ɻ ▸ SageNotebook ▸ Jupyter Notebook ▸ Rmarkdown ▸ ͚ͩ͡Όͳ͍ ▸ X11 ͱ͔΋Ͱ͖Δ

Slide 28

Slide 28 text

Demo

Slide 29

Slide 29 text

͜Μͳײ͡ͷ΋ͷΛ ͓ݟͤ͠·ͨ͠ɻ

Slide 30

Slide 30 text

͜Μͳײ͡ͷ΋ͷΛ ͓ݟͤ͠·ͨ͠ɻ

Slide 31

Slide 31 text

ຊ೔ͷϝχϡʔ 4BHFͱ͸ 4BHFΛେֶͷतۀͰซ༻ ༡ͼ΍ݚڀʹ

Slide 32

Slide 32 text

ຊ೔ͷϝχϡʔ 4BHFͱ͸ 4BHFΛେֶͷतۀͰซ༻ ༡ͼ΍ݚڀʹ

Slide 33

Slide 33 text

SageΛେֶͷ तۀͰซ༻

Slide 34

Slide 34 text

SageΛେֶͷतۀͰซ༻ ▸ ޿ౡେֶͷڭҭֶ෦Ͱ਺ֶΛڭ͍͑ͯΔ ▸ ୅਺ֶܥͷೖ໳ߨٛͷҰ෦ Sage Λ࢖༻ͨ͠ ▸ ڭҭֶ෦Ͱɺதɾߴͷ਺ֶՊͷڭһ໔ڐΛऔΖ͏ͱ͢Δֶੜ ▸ ͕ͬͭΓϓϩάϥϛϯάΛ͢Δਓ޲͚Ͱ͸ͳ͍ ▸ ͪΐͬͱίϚϯυΛଧͬͯΈͯܭࢉͤ͞Δ͙Β͍Ͱे෼ศར ▸ ʮߴڃి୎ʯͱͯ͠

Slide 35

Slide 35 text

Slide 36

Slide 36 text

ྫ ▸ ഒ਺ is Կ? ▸ ໿਺ is Կ? ▸ ࠷େެ໿਺ is Կ?

Slide 37

Slide 37 text

࠷େެ໿਺ ▸ ࠷େެ໿਺ greatest common divisor (GCD) ▸ (1) 12, 18 ͷ࠷େެ໿਺͸? ▸ (2) 123456789 ͱ 987654321 ͷ࠷େެ໿਺͸? ▸ ΍Γํ ▸ ໿਺Λશ෦͍͋͛ͯ͘ ▸ ૉҼ਺෼ղͯ͠ڞ௨ͷૉҼ਺Λ͔͚Δ ▸ ϢʔΫϦουͷޓআ๏

Slide 38

Slide 38 text

GCD΍Γํ͍Ζ͍Ζ ▸ ·ͣ͸खܭࢉͰख৮ΓײΛ ▸ खʹෛ͑ͳ͍ن໛͸ɺͦͷ͋ͱܭࢉػ࣮ݧ

Slide 39

Slide 39 text

Demo

Slide 40

Slide 40 text

͜Μͳײ͡ͷ΋ͷΛ ͓ݟͤ͠·ͨ͠ɻ ૉҼ਺෼ղͷॏ͞ͷײ֮

Slide 41

Slide 41 text

͜͏͍͏ͱ͜Ζ͕ 4BHFΒ͍͠ ਺ֶιϑτ΢ΣΞΒ͍͠ XIJMFɻ OFYU@QSJNF ਺ Ͱ਺ΑΓେ͖͍ૉ਺Λฦ͢ ‏ʮΊͪΌͪ͘Ό଎͍ɻԿ͔͋Γͦ͏ͩͳʯͱٯʹࢥ͏

Slide 42

Slide 42 text

ΞϧΰϦζϜͷҧ͍ ▸ खܭࢉʹՃ͑ͯ ▸ ܭࢉػ࣮ݧʹΑΓॏ͞ʹख৮ΓײΛಘΔ

Slide 43

Slide 43 text

ָ͍͠!

Slide 44

Slide 44 text

ຊ೔ͷϝχϡʔ 4BHFͱ͸ 4BHFΛେֶͷतۀͰซ༻ ༡ͼ΍ݚڀʹ

Slide 45

Slide 45 text

ຊ೔ͷϝχϡʔ 4BHFͱ͸ 4BHFΛେֶͷतۀͰซ༻ ༡ͼ΍ݚڀʹ

Slide 46

Slide 46 text

༡ͼ΍ݚڀ ʹ

Slide 47

Slide 47 text

༡ͼ΍ݚڀʹSageΛ࢖͏࿩ ▸ ྫ Twitter ΑΓ

Slide 48

Slide 48 text

༡ͼ΍ݚڀʹSageΛ࢖͏࿩ ▸ ྫ Twitter ΑΓ

Slide 49

Slide 49 text

༡ͼ΍ݚڀʹSageΛ࢖͏࿩ ▸ ྫ Twitter ΑΓ ▸ ࣗવ਺ ʹରͯ͠
 
 ͕੔਺ͷͱ͖ ͸ԿͰ͠ΐ͏͔ n 12502 + n3 n

Slide 50

Slide 50 text

͜͏͍͏ͷΛݟΔͱʮզʑʯ͸ɺ ʮପԁۂઢͷ࿩ͩͳʯ ͱɺࢥ͏ɻ ʮ͋ɺପԁۂઢͷ࿩ͩͳʯ

Slide 51

Slide 51 text

ପԁۂઢ?

Slide 52

Slide 52 text

ପԁۂઢ ▸ (ॏࠜͳ͠) Ͱఆٛ͞ΕΔʮۂઢʯ ▸ ΋ͷ͘͢͝ݚڀ͞Ε͍ͯΔɻݱࡏ΋ɻ ▸ ਺ֶతʹ͘͢͝ັྗతͳର৅ ▸ ઌ΄Ͳͷ໰୊ͩͱɺ ▸ Λ ͱ͓͍ͨΒɺ ▸ ͱ͍͏ପԁۂઢͷ্ͷ֨ࢠ఺ (੔਺఺) (࠲ඪ͕੔਺ʹͳ͍ͬͯΔ ఺) (ͷ͏ͪ ͷ΋ͷ) ΛٻΊΔ໰୊ y2 = xͷ3࣍ࣜ 12502 + n3 y y2 = 12502 + n3 y2 = x3 + 12502 x > 0

Slide 53

Slide 53 text

ପԁۂઢ ▸ ͷ஥ؒͨͪ y2 = x3 + 12502 -4 -2 0 2 4 -4 -2 0 2 4 y2 = x3 − x -4 -2 0 2 4 -4 -2 0 2 4 y2 = x3 + 1

Slide 54

Slide 54 text

ପԁۂઢ ▸ ͷ஥ؒͨͪ ▸ ͜Ε͸ ͕࣮਺Λಈ͍ͨਤ ▸ ͜ͷதͰ ͕ͱ΋ʹ੔਺ʹͳΔ఺Λ୳͢ ▸ ࣮͸δʔήϧͷఆཧʮପԁۂઢͷ੔਺ղ͸ৗʹ༗ݶݸʯ y2 = x3 + 12502 x, y x, y -4 -2 0 2 4 -4 -2 0 2 4 y2 = x3 − x -4 -2 0 2 4 -4 -2 0 2 4 y2 = x3 + 1

Slide 55

Slide 55 text

SageͰପԁۂઢΛѻ͏ ▸ Λ΍Δ ▸ Weierstrassํఔࣜ ͩͱ EllipticCurve([a1,a2,a3,a4,a6]) Ͱ࡞ΕΔɻ ▸ ͷ লུܗ: EllipticCurve([a4,a6]) ▸ E = EllipticCurve([0,0,0,0,1562500]) ▸ E.integral_points() y2 = x3 + 12502 y2 + a1 xy + a3 y = x3 + a2 x2 + a4 x + a6 a1 = a2 = a3 = 0

Slide 56

Slide 56 text

Demo

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

verbose=True ͢Δͱ్தͲΜͳܭࢉΛ͔ͨ͠ڭ͑ͯ͘Ε·͢

Slide 59

Slide 59 text

Model-Weil܈(આ໌ུ)ͷੜ੒ݩ(આ໌ུ)ͱ͔΋Θ͔Δ

Slide 60

Slide 60 text

SageͰପԁۂઢΛѻ͏ ▸ E.integral_points() ▸ [(-100 : 750 : 1),
 (0 : 1250 : 1),
 (125 : 1875 : 1),
 (500 : 11250 : 1),
 (600 : 14750 : 1),
 (66500 : 17148750 : 1)] ▸ ౴͑ n = 125, 500, 600, 66500

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

ָ͍͠ ✌('ω'✌ )ࡾ✌('ω')✌ࡾ( ✌'ω')✌

Slide 63

Slide 63 text

·ͱΊ ▸ SageΛ࢖͏ͱ ▸ ਺ֶͷɺڭҭɾֶशɾݚڀͰ ▸ ໾ཱͭɾ༡΂Δ ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ

Slide 64

Slide 64 text

͔͜͜Β͸͕࣌ؒ͋Ε͹͓·͚ ▸ scheme ͱ͔ generic point ͱ͔Ψνͷ୅਺زԿͷΫϥε΋༻ҙ͞Ε͍ͯ Δɻ ▸ Try: ݚڀͰ࢖͓͏ͱͯ͠։ൃʹߩݙ͍ͨ͠ͱ͜Ζ͕Ͱ͖ͯͨͷͰߩݙ͢Δ ▸ ྫ΋͏Ұͭ

Slide 65

Slide 65 text

༡ͼ΍ݚڀʹSageΛ࢖͏࿩ ▸ ྫ Twitter ΑΓ (·ͨTwitter͔wwww)

Slide 66

Slide 66 text

No content

Slide 67

Slide 67 text

Demo

Slide 68

Slide 68 text

Python 3 ରԠͲ͏ͳͷ? ▸ ରԠ͍ͯ͠Δɻ ▸ Python3-compatible code - Sage Wiki https://wiki.sagemath.org/Python3-compatible%20code ࢀর ▸ ࠓޙ͸όΠφϦ΋ఏڙ༧ఆɻversion 8.8 ͷޙ͔ΒΒ͍͠ͷͰͦΖͦΖɻ ▸ CoCalcͰ͸ΧʔωϧͰબ΂·͢ɻ ▸ खಈϏϧυ͸
 $ make configure
 $ ./configure --with-python=3
 $ make build
 ͰOK

Slide 69

Slide 69 text

ݱ୅਺ֶ΋͔ͳΓॆ࣮ ▸ scheme ͱ͔ generic point ͱ͔Ψνͷ୅਺زԿͷΫϥε΋༻ҙ͞Ε͍ͯΔ ▸ Points on projective varieties, Scheme morphism for points on projective varieties https:// github.com/sagemath/sage/blob/master/src/sage/schemes/projective/projective_point.py ▸ P = ProjectiveSpace(2, QQ) ←༗ཧ਺܎਺ͷࣹӨฏ໘͕͜ΕͰͰ͖Δ ▸ P(2, 3/5, 4) ←Pͷ্ͷ੪࣍࠲ඪ (2 : 3/5 : 4) ͷ఺ͷΦϒδΣΫτ͕͜ΕͰͰ͖Δ ▸ ࣹӨۭؒͷ఺ΛྻڍରԠʹ͔ͨͬͨ͠ɻ ▸ → ࠓޙ͸։ൃʹࢀՃ͍ͨ͠ɻ ▸ ChangeLog ΛݟΔͱ৽͍͠ίϯτϦϏϡʔλ͕ଟ਺!