SageMath

Colabで学ぶ NumPy

100 numpy exercises というのがあって、これが素晴らしいのですが、問題と解答を Colab 化するのをやっています。 まだ途中ですが、とりあえず半分 50 題を越えたのでご紹介。 https://colab.research.google.com/github/kalz2q/mycolabnotebooks/blob/mast…

コラブ Colab で学ぶ高校数学

はじめに Doing Math with Python: Use Programming to Explore Algebra, Statistics, Calculus, and More! Amit Saha を Colab でなぞりながら読む。 というのをやっていて、とりあえず最後まで行ったのでご紹介。 元の本の章立ては次のようになっています…

AnacondaとSageMathとJupyter

PythonやJupyterをインストールするのにAnacondaを使うと思いますが、するとSageMathが使えなくなります。問題は二つあって、 1.SageMathはPython2.7なのに対し、AnacondaはPython3である。 2.Anacondaと両立させるにはSageMathをローカルにインストールする…

質問: Ubuntu 18.04でSageMath

えっと、以下の記事はその後解決したので、別の記事にしてまた書きます。 基本的にUbuntu 18.04やSageMathがいけないのではなくて、AnacondaとSageMathが両立しないのが問題みたいで、解決方法も考えました。 質問: Ubuntu 18.04になってSageMathが動かない…

SageMathとグラフ理論(オイラーの公式)

問題 車輪グラフついて、オイラーの公式(Euler's formula)が成り立つことを確認せよ。 オイラーの公式: $$ n - m + f = 2 $$ : 頂点の数、: 辺の数、: 面の数 %histG=graphs.WheelGraph(8)show(G)len(list(G.vertex_iterator())) # -> 8len(list(G.edge_ite…

SageMathでグラフ理論(TABの使い方)

SageMathでグラフに関係してどんな関数があるか、とか調べるときにタブ補完(Tab completion)を使います。 たとえば、グラフを書きたいとき、 G=graphs.<TAB> と押すと、200個ほどの関数がある。 また、G=Graph()としたうえで、 G.<TAB> と押すと、グラフに使える関数が</tab></tab>…

SageMathとグラフ理論(平面グラフ)

問題12.1(i) 頂点数5の車輪Wheel、が平面グラフであることをグラフで示せ。(ii) octahedron(八面体)が平面グラフであることをグラフで示せ。 すなおに描くと平面グラフになってしまう。 問題の意図としては必ずしも平面グラフでないものを平面グラフ的(plana…

SageMathでグラフ理論(クラトウスキーの定理)

THEOREM 12.2(Kuratowski, 1930). A graph is planar if and only if it contains no subgraph homeomorphic to or . グラフが平面グラフであるための必要十分条件はが またはと位相同型な部分グラフを含まないことである。 THEOREM 12.3 A graph is planar …

SageMathとグラフ理論(次数の数列とグラフ的について)

次数(degree)の数列を与えられて単純グラフ(ループや多重辺がないグラフ)が描けるかどうか(グラフ的)かどうかを問う問題があります。 例えば[3,3,3,3,3,3]だと3点と3点の完全二部グラフが描けますのでグラフ的である、という解答が載っていたりする。 し…

SageMathとグラフ理論(接続行列incidence matrix)

接続行列からでもグラフがかけるか実験します。 接続行列Mで与えられるグラフを描け。 M=matrix(5,8,[[0,0,1,1,1,1,1,0],[0,1,0,1,0,0,0,1],[0,0,0,0,0,0,0,1],[1,0,1,0,1,0,1,0],[1,1,0,0,0,1,0,0]]) G=Graph(M)show(G) 描けました。 ということは、接続行…

SageMathとグラフ理論(連結グラフ)

introduction to graph theory by wilsonのp.11のFig.2.9は頂点が5個までの連結グラフ(connected unlabelled graph)で、31個ある。 これを作る。 (なぜならテキストの練習問題で何度も使われるから。例えば、この内、ツリーはどれとどれか。とか。) sage: …

SageMathとグラフ理論(隣接行列、接続行列、ラプラシアン(キルヒホフ)行列)

まず、ひとつグラフを作ります。 V=['P','Q','R','S','T']E=[['P','Q'],['Q','R'],['R','S'],['S','T'],['T','P'],['P','S'],['Q','T'],['Q','S']]g=Graph([V,E]) 隣接行列 sage: g.adjacency_matrix()[0 1 0 1 1][1 0 1 1 1][0 1 0 1 0][1 1 1 0 1][1 1 0 1…

SageMathとグラフ理論(カノニカル行列)

Pythonのdictionaryの形で次のように指定すると、グラフが描けます。 g1=Graph({'P':['Q','S','T'],'Q':['R','S','T'],'R':['S'],'S':['T']})show(g1) これはうまい具合に横向きになったし、なによりも頂点がアルファベット順ですがいつも必ずしもそうではあ…

SageMathとグラフ理論(全域木)

下記のグラフのすべての全域木(spanning tree)を描け。 g=Graph([['a','b'],['b','c'],['c','d'],['d','a'],['a','c']]) [p1,p2,p3,p4,p5,p6,p7,p8]=map (plot, g.spanning_trees()) graphics_array((p1,p2,p3,p4,p5,p6,p7,p8),2,4) 同様に次のグラフのspan…

SageMathとグラフ理論(ツリー)

頂点が6個の単純グラフでツリーがいくつ作れるか。 6個のようです。 以下、図とSageMathのプログラムです。 pythonのfilterを使ってみました。 pythonでmapやfilterが使えるのを知らなかったし、lambdaにグラフを入れられるのも知らなかったし、is_treeで選…

SageMathとグラフ理論(プラトングラフ)

プラトングラフとは正四面体、正八面体、立方体、正十二面体グラフと正二十面体グラフのことだそうです。 とりあえずSageMathでグラフで表現することができたのでご紹介。 # platonic.sage# plot five platonic graphs.# attach('platonic.sage') p1=plot(gr…

SageMathとグラフ理論(同型判定、カノニカルラベル)

グラフが同型である、ということの定義はこれこれ(要確認)、同型であることを判定する関数はG,Hをグラフとすると、 G.is_isomorphic(H) とかであろう、と予想されます(未確認)。 ところでグラフが同型であることのアルゴリズムはカノニカル(canonical)型に…

SageMathでグラフ理論

SageMathでグラフを描く描き方はいろいろあるみたいです。 空(カラ)のグラフを作って、頂点や辺を加えていく描き方。 g=Graph()g.add_vertices(range(6))g.add_edges([(0,3),(1,3),(2,3),(2,4),(2,5)])show(g) 次のは頂点と隣接する辺をPythonの辞書にして…

SageMathでグラフ理論

WilsonのIntroduction to Graph Theoryに、図のGrötzschグラフがハミルトングラフであることを示せ、という練習問題がありました。 SageMathでこういった名前がついたグラフを描くのはとても簡単です。 sage: g=graphs.GrotzschGraph()sage: show(g) graphs…

SageMath LaTeX Error: File `preview.sty' not found.

数学ソフトのSageMathのドキュメントでConstructionsというのの最初の方に、次のような例があって、 sage: var('x k w')sage: f = x^3 * e^(k*x) * sin(w*x)sage: f.diff(x)sage: latex(f.diff(x))sage: view(f.diff(x)) 最後の一行で、LaTexに画像変換され…