大変勝手な理由なのですが、はてなブログに移行します。
おもに、数式やコードの変換がWordPressは甘いように感じます。無料で使える範囲でしか使ってないので、プラグインを入れることもできず、改善のしようがないです。
既存の記事ですが、プログラムからはじめるグレブナ基底は文章を更新して再投稿し、閲覧数を加味して一部記事も再投稿します。すべての投稿が完了したところで、こちらのブログを閉鎖します。
ということで、大変勝手ですが、徐々に移行します。
大変勝手な理由なのですが、はてなブログに移行します。
おもに、数式やコードの変換がWordPressは甘いように感じます。無料で使える範囲でしか使ってないので、プラグインを入れることもできず、改善のしようがないです。
既存の記事ですが、プログラムからはじめるグレブナ基底は文章を更新して再投稿し、閲覧数を加味して一部記事も再投稿します。すべての投稿が完了したところで、こちらのブログを閉鎖します。
ということで、大変勝手ですが、徐々に移行します。
「割り算アルゴリズム」で一記事にしようとしていましたが,長くなってしまったので分割しました.この記事では,多項式の割り算を扱っていきます.
最終的には,多項式と多項式で割り算をすることが目標です.
もし,余りをさらに割ることができるならば,割り算アルゴリズムはどうなるか考えます.
これは,例えば式 を, と で割るときに重要となります.もしF1で割り切ってしまって,さらにF2で割れるなら,F2でも割る必要があります.
これを式にして表現してみます.
上の式では,1行目で計算した余り がさらに割れるとします.
なので,余りをさらに割ります.また余りが割れるなら・・・という計算です.
とても簡単な例で同じ計算をしてみます.
を で割る事を考えます.
頭の悪そうな計算をしていますが,この例のように,もし余りがさらに割れるならさらに割る,ダメなら終了という流れが想像できると嬉しいです.
ここでようやく本題ですが,多項式と多項式で割り算することを考えます.
今までのことを使います.つまり,
つまり,多項式中の単項式を引いて消し,余りが出たら,他の単項式を引いてさらに消す.ということです.単項式を消していけば,いずれ割れなくなるはずです(※本当は停止性について考える必要があります).
では具体的な例を考えます.
を で割るとします.
説明都合上F2から割ります.すなわち, としたいです.
なので, でそのままが消せそうです.
余りの はまだ割れそうです().
は割れそうにないです.ということで計算終了です.
には が含まれるから割れる(消せる)のでは?
となります.が,消せないようです.
仮に,消したとすると,新しい式ができ,また消すことができ・・・と無限に操作できてしまいます.答えがあったとしても,答えかどうか判定もできないですし,答えに到達できるかも不明になります.
ここで,順序および単項式の大きさが重要になるはずです.あらかじめ大きさがわかっていて,大きいもので消していけば,この点が解決されるはずです(下記,自身の無い事を参照).
先ほどの例ですが,実はF1から割ると,F2から割るときと結果が異なります.
F1で割ると,
となり,結果が異なります.はこれ以上F1,F2では割れません.
このように一般には複数の多項式で割ると,結果が一意に定まらないです.
この結果を一意に定めるには,F1,F2がグレブナ基底である必要があります.
また,結果を一意に定める多項式の集合がグレブナ基底です.
私自身,書き出したはいいものの,よく理解できてないことです.
すなわち勉強不足な点です.
前提というか,基本的に割り算のアルゴリズムでは,大きいものから割っていきます.
なぜ大きい物から割っていく必要があるのか?なのですが,正直理解できてないです.直感的には,大きい方から割る方が無駄がなさそう(計算回数が少なそう)なので,大きい方から割ることは自然にも思えますが,なぜと問われると説得力がないです.
文章を作る時に浮かんだことですが,停止性のあたりと関係ありそうです.
私が停止性をちゃんと把握できてないので,そこで理解ができていないと考えられます(要勉強).
また,このタイプのアルゴリズムでは,おそらく,係数が重要です.
というのも,係数が固定されてないと無理やり割っても何とかなるためだと思います.
上記説明のアルゴリズムでなければ,無理やり とかみたいに計算できてしまいます.
このとき,係数に着目すると,整数から有理数に係数が変化しています.
上記の割り算アルゴリズムなら,その心配はないはずです(整数-整数=整数となるはずです).
なぜ係数を固定する必要があるのか?という点は理解が足りてないですが,問題設定上係数を固定することが多いように見られます.係数を固定しているならば,無理やり割る事ができない,というわけだと思います.
今回はプログラムというより電卓です.足し算引き算して,理論の内容が実装できているように見えればOKという感じです.
次に、多項式での割り算,割る順序で結果が異なる例を計算しています.
// 割り算アルゴリズム2 print("コード見ながらの実行を推奨します。")$ print("もしくは、対話モードで実行を推奨します。")$ F1 = x*y + y*z$ F2 = x*y*z + x*y$ F = x*y*z$ /* // example2 F = xyz を割る F1 = xy + yzから割り始める xyz - (w)*(xy + yz) [...wは適当な値、変数(つまりwは単項式)] w = z とすれば、 xyz - (xyz + yz^2) = -yz^2 となって、F = xyz を消せそう また、-yz^2をF1,F2で消せない。計算終了となる。 */ R1 = F - z*F1; // R1 = -y*z^2 /* // example2 同じく、F = xyz を割る ただし、F2 = xyz + xyから割り始める xyz - (w)*(xyz + xy) [...wは適当な値、変数(つまりwは単項式)] w = 1 とすれば、 xyz - (xyz + xy) = -xy */ R2 = F - F2; // R2 = -xy /* ここでさらに、F1 = xy + yz なので、まだ割れる -xy - (v)*(xy + yz) [...vは適当な値、変数(つまりvは単項式)] v = -1 とすれば、 -xy + xy + yz = yz となって、-xy が消せそう */ R3 = R2 - (-1)*F1; // R3 = yz end$
もし,htmlが多項式になるなら,実際に作るとどうなるのか?
ということで,やってみた.
注意
今回実験的要素が多く含まれます.
さらに結果もたいしたことないので,見る価値も今一つありません.
プログラムはGitHubにあります.
一部,引用だったりコードブロックだったりしますが,引用部はhtmlがうまくコードブロックで書けなかった部分です.
+ タグを変数に,文章を定数に置換
+ 1行ずつ処理
+ 同じ行の変数と定数は積として単項式に
+ 単項式の和(つまり多項式)としてhtmlを表現
""" # 単項式にするイメージ!(Python) # 変数 -> x1 -> x2 <i><i> -> x3 </i></i> -> x4 # 定数 こんなhtml -> a1 あんなhtml -> a2 """ 単項式1 = 変換する関数(" こんなhtml ") print(単項式1) # 表示結果:x1 * a1 * x2 単項式2 = 変換する関数("<i><i>あんなhtml</i></i>") print(単項式2) # 表示結果:x3 * a2 * x4 多項式 = 単項式1 + 単項式2 print(多項式) # 表示結果:x1*a1*x2 + x3*a2*x4
+ 2つのhtml(多項式)でグレブナ基底を計算
今回使用したhtmlは
<html><body><p>ここに文章</p><i>たとえばイタリックにしたり?</i><p><strong>文章を強調</strong>してみたり!</p></body></html>
と,
<html><body><p>ここに文章</p><p><strong>文章を強調</strong>してみたり!</p></body></html>
タグ(変数)と文章(定数)は次.
x1 = “<html>”x2 = “<body>”x3 = “<p>”x4 = “<strong>”x5 = “</html>”x6 = “</body>”x7 = “</p>”x8 = “</strong>”a1 = “ここに文章”a2 = “<i>”a3 = “たとえばイタリックにしたり?”a4 = “</i>”a5 = “文章を強調”a6 = “してみたり!”
このとき,htmlを変換(タグを記号に置き換えるだけ)すると
x1 + x2 + x3*a1*x7 + a2*a3*a4 + x3*x4*a5*x8*a6*x7 + x6 + x5 , x1 + x2 + x3*a1*x7 + x3*x4*a5*x8*a6*x7 + x6 + x5
となる.
この2つの多項式でグレブナ基底を計算すると
a4*a3*a2, x1+x2+(a6*a5*x8*x4+a1)*x7*x3+x6+x5
これをhtmlに戻すと
<!– a4*a3*a2 の結果 –></i>たとえばイタリックにしたり?<i>
<!– x1+x2+(a6*a5*x8*x4+a1)*x7*x3+x6+x5 の結果 –><html><body>してみたり!文章を強調</strong><strong></p><p>ここに文章</p><p></body></html>
となる.
もうすこしタグが基底っぽく機能するようなモデルにしたかった.
おそらく,一行が一つの単項式になるのが問題で,
一行が一つの多項式になると,もうすこし基底っぽいのがでてくると思われる.
結果がちゃんとhtmlになってない.
これは,順序を正しく与えてあげればそれっぽいのはできる.
ただし,入れ子構造が崩壊しているのは避けられない.
上記と同じく,一行が一つの単項式なのが原因と考えられる.
まとめると,今回作った方針でhtmlを多項式化しても特に意味はなさそう.
だが,説明としては使えなくもない・・・のかなぁという感想.
今回は乗せると冗長だと判断したため,GitHubに掲載.
サイボウズのスケジュールからGoogleカレンダーに予定をインポートします.
サイボウズからcsv形式でスケジュールを書き出せるので,それをGoogleカレンダーに読み込ませます.そのままでは読み込めないので,csvを少し変更する必要があります.
具体的には,サイボウズから書き出したcsvのヘッダーをGoogleカレンダーで使用するヘッダーに変更することで読み込みできます.
サイボウズOffice10
基本的にはヘッダー部分を変更するだけでインポートできます.
使用できるヘッダーの詳細はGoogleのヘルプを参考にしてください.
今回は項目がない列を削除しました.
編集は,csvをテキストエディタで読み込むことでも作業できます.Excelでも作業できますが,うまく読み込めない場合は一度テキストエディタで確認してください.
編集例は次のようになります.
schedule.csv
Start Date,Start Time,End Date,End Time,Subject,Description,Location
2016/12/1,16:40:00,2016/12/1,21:40:00,バイト,ある程度前なら変更可能,
2016/12/3,16:40:00,2016/12/3,21:40:00,バイト,ある程度前なら変更可.,
カレンダーの設定に移動します.
「カレンダーをインポート」があるので,そちらからファイルを選択,インポートできます.
Sageは数学向けの計算ソフトウェアで,pythonライクに計算が可能です.
本来,SageはWindowsの対応をしていません.しかし,Windows10の機能である,Bash on Ubuntu on Windowsを使用することで,Windows上でもSageが使用できます.
Bash on Ubuntu on Windowsの導入方法やSageの細かい使用法については他に譲ります.
Bash on Ubuntu on Windowsを起動し,以下のコマンドを入力する.
少々時間がかかるので,ネット環境,ノートPCではバッテリに注意してください.
ディスク容量も多め(5GBほど?未検証です.)に空けておくとよいと思います.
sudo apt-add-repository ppa:aims/sagemath sudo apt-get update sudo apt-get install sagemath-upstream-binary
はじめ,公式ページからUbuntu用のパッケージをDLして入れようとしたのですが,いろいろ足りないものが多いらしく,Sageが起動しませんでした.
結果として足りないパッケージを補うよりも,apt-getでSageを入れる方が早かったです.
自分は,デスクトップ,ノートPCで試しましたが両方インストールできました.
通常通り,Sageコマンドでの使用も可能ですし,Sage -nと入力すればノートブック形式での使用も可能です.
大した内容ではありませんが,役に立つかもしれないのでメモ.
内容は記事作成日(2016/10/30)のものですので,レイアウトや機能など変更があるかもしれません.ご了承ください.
プラグイン等は必要ありません.
で作業完了です.編集する際には「ビジュアル」モードでも「HTML」モードでもMarkdown記法が反映されるようです.
「設定」をクリック(赤まる部分).
設定ページ上に「投稿」の項目があるのでクリック(赤まる部分).
下にスクロールすると,Markdown記法に関する設定項目があるので,チェックを入れる(黄まる部分).
上にスクロールし「設定を保存」(緑まる部分).
以上で設定終了です.
グレブナ基底を勉強していて多項式で何ができるのかという疑問が浮かんだ.
昔,Mathematicaで初音ミクを表現するという話を聞いたことがあったので触ってみました.
メモ
輪郭線を抽出し,そこから線を近似する方程式を生成するようです.輪郭線のみの情報から方程式を作成するので,色の情報とか質感とかは表現できていないみたいです.
この方程式はperson curvesと呼ばれるもののようですが,大した情報が得られませんでした.もう少し調べた方がよいかもしれないです.参考 person curves.
Mathematicaで任意画像の輪郭を数式に変換するにも書いてありますが,GitHub
任意画像の輪郭を数式に変換してプロットする (Mathematica ver.8)のコードを使います(使えます).
説明はMathematica 8用ですが,10でも実行できました.
アイコンのように色と輪郭がはっきりとしているものに対して方程式を作成するのは容易なようです.
逆に,現実の画像で同じ処理をすると,輪郭線の抽出がうまくできず,なんだかわからない線を書く方程式ができてしまうようです.
この方法ならば,任意の物体を方程式として扱えそうですが,技術的な背景やコードの内容をもう少ししらべたほうがよさそうです.
あとは,とりあえず簡単な図形を方程式にして,グレブナ基底に突っ込んで,どうなるのか気になります.
カレントフォルダを PowerShell で開くより引用します.
概要
エクスプローラからカレントフォルダを PowerShell コンソールで素早く開くには、Alt + D ⇒ powershell + [ENTER]
ちゃんとカレントディレクトリで開けるのかな?と思っていたのですが,開けました.
右クリックとかで開けるほうが敷居は低いのですが,これでも十分に楽だと思います.
何より,特殊な設定が一切必要ないので,覚えるだけでどのPCでも使えます.
Ubuntuとかだと,フォルダから直接ターミナルが開けたりします.大変便利です.
Visual Studio Code なら,直接コマンドプロンプトが開けるみたいです.でもわざわざアプリ立ち上げて,ならば初めからPowerShell起動します.
Windowsでもエクスプローラから直接PowerShell起動できないのかなと思って調べました.
これでGitとかコマンドが使いたいときに楽できます.
松尾 豊先生のサイト.最近本屋でもよく見かける有名な先生です.論文の書き方や研究について書いておられます.現在、松尾ぐみは休止し Deep Learning勉強会 が立ち上がっているようです.
プロフィールがないため正確にはわからないですが,とある大学の先生のようです.
研究活動について様々な記事を書いておられます.
随時更新できたらいいなと考えています.(2016/10/29)
以前からLANを使って,PC間の通信ができたら良いのになと思っていたのですが,ちょっと検索したら良いもの見つけました.
Microsoft Garage Mouse without Borders
DLはリンクから.詳しい使い方とかは,mouse without boredrsで検索すると日本語の紹介サイトが出ます.
WindowsのOSでないと使えないみたいですが,キーボードとマウスが1つずつあれば複数のPCを楽に扱えるようになります.
おそらく4台まで?共有することができるみたいです.
使用感ですが,マウスはほとんど遅延ない様子ですが,キーボードは安物のせいか,わずかに遅延があるように感じます.
この辺りは,環境によってまた違うと思われます.
このソフト,何が便利かってタブレットPCにキーボードとマウスをBluetooth使わずに接続できるんです.
しかも,わざわざ機器を購入する必要もない.使いたいときにちょこっとソフトを起動するだけ.
最近複数台のPCを行ったり来たりしてたので,とても助かります.