位相空間論の復習

微分形式の幾何学」(著:森田茂之)をゆっくり勉強している。 この本の§1.3 (c)の命題1.29の証明で次のような記述がある。

M多様体であるから、もちろん局所コンパクトなHausdorff空間である。 このことからO_iの中で\overline{O_i}がコンパクトなものだけを集めても 開集合の基になっていることがわかる。

ここで、\{O_i\}_iMの(可算個の元からなる)開基である。 私には全然わからなかったので、関連しそうなことをいくらか調べてここに書く。

用語の整理

Hausdorff空間

位相空間XHausdorff空間であるとは、 任意の相異なる点x, y \in Xに対して、 それぞれの開近傍U_x, U_yU_x \cap U_y = \emptysetとなるものが存在することである。

多様体

位相空間Mn次元位相多様体であるとは、

  1. MはHausdorff空間であり、
  2. Mは第二可算公理を満たし、かつ
  3. Mの任意の点に対してその開近傍で\mathbb{R}^nの開集合と同相になるものが存在する

ことである。

ここでXじゃなくてMとしたのは多様体(Manifold)だから。

被覆

集合Xの部分集合の族\{U_i\}_{i \in I}Xの被覆であるとは、 その和集合\displaystyle\bigcup_{i \in I} U_iXに等しくなることである。

開被覆

U位相空間Xの部分集合とする。このとき、U開被覆とは、Uの被覆でその元がすべて開集合のものである。

細分

集合Xの被覆\{V_j\}_{j \in J}被覆\{U_i\}_{i \in I}の細分であるとは、 任意のi \in Iに対して、あるj \in Jが存在して、 V_j \subset U_iとなることである。

コンパクト集合

位相空間Xの部分集合Uコンパクト集合であるとは、 Uの任意の開被覆に対してその有限の細分が存在することである。

コンパクト

位相空間Xコンパクトであるとは、 Xがコンパクト集合であることである。

近傍

位相空間Xの部分集合Ux \in Xの近傍であるとは、 ある開集合Oが存在して、 x \in O \subset Uが成り立つことである。

局所コンパクト

位相空間X局所コンパクトであるとは、 Xの任意の点x \in Xに対してxの近傍となっているコンパクト集合が存在することである。

基本的な性質

今日調べた基本的な性質を列挙する。

  • Hausdorff空間の部分空間はHausdorff空間である。
  • 連続写像によるコンパクト集合の像はコンパクト集合である。
  • コンパクトな空間の閉集合はコンパクト集合である。
  • Hausdorff空間のコンパクト集合は閉集合である。
  • \mathbb{R}^nは局所コンパクトである。
  • \mathbb{R}^nはHausdorff空間である。
  • 位相多様体は局所コンパクトである。

ちょっと不安な部分もあるから明日証明を書く。

Raspberry Pi Zero WHを素人なりにセットアップ

夢は「リモコン統一」!!

家の照明がリモコン操作になってから、いろんなところにリモコンがある。 中にはボタンを二度押さないと照明が消えないリモコンもあり、なんとも使いづらい。 そんな折、Raspberry Piで安くリモコンを自作する解説記事を見つけた。

qiita.com

この方法なら電子工作初心者の自分でもできそうだし、工夫次第でスマートなリモコンを作れると思い、材料を揃えてみた。 新しく購入した材料は以下の通り。

  • 赤外線受信モジュール
  • 赤外線LED
  • MOSFET (2種類) (どういうものなのか理解していない)
  • 抵抗 (2種類)
  • ピンソケット
  • ユニバーサル基板
  • ブレッドボード
  • ジャンパ・ワイヤー
  • Raspberry Pi Zero WH
  • micro SDカード 8GB

総額で4,000円もないけど、たくさん買ったから気持ち的に引き返せない。

で、意気揚々と制作開始しようとしたが、Raspberry Piの開発環境をセットアップするのに結構手間取ったのでメモることにする。

目的

Raspberry Piを使ったことのある人にとっては当然だろうけど、こいつにはディスプレイもマウスもキーボードもついていない。 家に余ってるディスプレイなんてないし、新しく買ったら予算オーバーするのは目に見えている。 しかも、Raspberry Pi ZeroはUSB端子がUSB micro-B、つまりスマホとかによく使う小さい端子しかついていないので、 マウスやキーボードを接続するのも大変そうだ。 そこで、今持ってるパソコンとSSH接続して開発をする環境を構築したい。

参考にした記事

qiita.com

すごく参考になった。 この記事で言うところの「USBケーブル一本で電源供給+ネットワーク接続」を目指す。

環境

Raspberry Pi

Raspberry Pi Zero WH。

自分は秋月電子秋葉原の物理的店舗)で購入した。

SD カード

HIDISCというメーカーのmicroSDHC I規格のカード。 容量は8GB。 型番は字が小さくて読みたくないので省略。

どこかの記事によるとSDカードとRaspberry Piの相性というものがあるらしく、 RPi SD cards - eLinux.org で確認してから購入するのがいいらしい。 私も一応確認した。

パソコン

MacBook Pro (15-inch, 2017)

macOS Mojave ver.10.14

Wi-Fi

2.4GHz帯じゃないとRaspberry Pi Zero Wが対応していない。 規格でいうと802.11 b/g/nのいずれかが必要。

USB ケーブル

以前使っていたスマホの充電ケーブルで代用。 片側がUSB A端子(フツウのUSB)でもう一方がUSB micro-B端子のもの。

合わせて、自分のMacBookにはUSB Type-CしかついていないのでUSB A端子を挿す用のアダプタ。

古いパソコン

やっぱりMacBookにSDカードが挿さらないので大学で使っているちょっと古いMacBookでOSイメージを書き込んだ。 SDカード用のアダプターが欲しい。

手順

OSの準備

SDカードの挿さるパソコンでRaspberry Pi用のOS Raspbianを準備する。 やり方は色々あると思うけど、私は Download Raspbian for Raspberry Pi でRASPBIAN STRETCH WITH DESKTOPをいうのをzipでダウンロードした。 STRETCHというのは現行バージョン4.14の愛称らしい。 もしかしたら、自分の目的だとRASPBIAN STRETCH LITEで事足りたかもしれない。

ダウンロードしたzipファイルはブラウザ(Chrome)の機能で展開した。便利だ。 Etcherっていうのを使うと簡単にインストールできるみたいだったけど、 ちょっとプリミティブにやりたい気分だったのでEtcherは使わずコマンドラインからインストールした。

Installing operating system images on Mac OS - Raspberry Pi Documentation に従えば特に困ることはなかったと思う。

SSHの有効化

イメージファイルがSDカードに書き込めたら、カードを一旦抜いて再度接続するとbootという名前になる。 これがなんでなのかよく分からん。 とにかく、bootができるので、そこにsshという名前のファイルを置いておく。

$ touch /Volumes/boot/ssh

USB経由でのインターネット接続の有効化

/Volumes/boot/cmdline.txtに"modules-load=dwc2,g_ether"を追加するらしい。 場所はrootwaitとquietの間。 全く意味がわからん。 実は必要ないのではないかという気もする。 今度調べてみよう。

さらに、/Volumes/boot/config.txtの末尾に"dtoverlay=dwc2"を追加するらしい。 これまた意味がわからん。 追々調べよう。

ここまでできたら、SDカードをRaspberry Piの方に挿し直す。 こんなちっこいのがちゃんと動くのか不安だけど信じる。

起動!

参考にした記事だと、PCでUSB接続のインターネット共有を有効にせよとあるのだけど、 なんかそれをしなくてもできた。 インターネットの共有をしてなくてもローカルでのSSH接続はできるのかもしれない。

というわけで、USBケーブルでRaspberry Piとパソコンを繋ぐ。 電源が供給されると自動的にRaspberry Piは起動して緑のLEDが光る。 LEDが光るのは楽しい。 Raspberry Piを買って良かった。 LEDは最初のうち点滅しているが、体感1分くらいで安定して光るようになる。 点滅しているのはブート処理をしてることを示しているのかな。

SSHでログイン

[MacBook]$ ssh pi@raspberrypi.local

でできる。 初期ユーザー名はpi、初期パスワードはraspberryになっている。 参考にした記事にはbonjourがどうのと書いてあったけど、よく分からないから無視した。 自分の躓きポイントがここにあって、「ラズベリー」のスペルはrasberryじゃなくてraspberryってこと。 スペルミスっててログインできず、寝た。

ログインパスワードの変更

スペルミスなどせずにログインできたら、パスワードを変更する。 初期パスワードのままインターネットに接続とかしちゃうとたぶんセキュリティ的に良くない。

[pi@raspberrypi]$ sudo raspi-config

とすると、設定をいじれる画面が出てくる。 選択はEnterキー、移動は矢印キーとかEmacsで移動するときのキー(Ctrl+{f, b, n, p})でできる。 ここを一通り眺めるだけで楽しい。 Raspberry Piを買って良かった。

Change User Passwordを選択すると、新しいパスワードを聞かれる。 確認のために二回入力するとパスワードが変更できる。

Wi-Fiの設定

Setting WiFi up via the command line - Raspberry Pi Documentation を見ながらWi-Fiの設定をする。 使うWi-FiSSIDとパスワードが必要。

設定ファイル(/etc/wpa_supplicant/wpa_supplicant.conf)を書くとき、 emacsvimがまだインストールされていないのでnanoというエディターで頑張って書いた。 大変であった。 nanoを呼ぶ時にsudoをつけてないと書き込み権限がなくて困る。 私はそれで二度同じ設定を書く羽目になった。 nanoの中で管理者権限で書き込む機能とかもありそうだけど、知らないし調べるより二度書いた方が速かった。

設定ファイルを書いてから、Raspberry Piを再起動するとWi-Fiに接続された。 再起動は

[pi@raspberrypi]$ sudo shutdown -r now

とかでできる。

接続の確認は

[pi@raspberrypi]$ ifconfig wlan0

IPアドレスが割り当てられているかを見たり、

[pi@raspberrypi]$ ping www.google.com

でグーグルのページに繋がるかを見たりした。 もっといい方法とかもありそうだけどノウハウがない。

SSHの設定

パソコンからログインする時に一々パスワードを入力するのは億劫なので、

[MacBook]$ cat ~/.ssh/id_rsa.pub | ssh pi@raspberrypi.local 'cat >> .ssh/authorized_keys'

のようにしてパソコンの公開鍵を登録しておく。 パソコンの側でも、~/.ssh/configに

Host pi
HostName raspberrypi.local
User pi

のなどと設定しておくと、

[MacBook]$ ssh pi

でログインできて大変便利。

シャットダウン

Raspberry Piも他のコンピュータと同じく電源をいきなり抜くようにはできていない。 ちゃんとシャットダウンしてからUSBケーブルを抜く。

[pi@raspberrypi]$ sudo shutdown -h now

でシャットダウンできる。 LEDが消えたらケーブルを抜いていいんだと思う。

今後のやりたいこと

  • USBを経由しないSSH接続
  • Raspberry PiにLEDを繋いでチカチカ
  • OSイメージの書き込みからもう一度やり直し
    • 不要に思えるステップは飛ばしてみたりしたい
  • RaspbianにはMinecraftが入ってるらしいのでそれで遊んでみたい
  • もちろん、リモコンの作成

微分可能多様体の定義について

位相多様体とは

位相空間 M n次元位相多様体であるとは、 次の三つの性質をすべて満たしていることである。 すなわち、

  1. Hausdorffの分離公理が成り立つ。
  2. 第二可算公理が成り立つ。
  3. 任意の点p \in Mに対して、 p局所座標系(U, \phi)が存在する。 ここで、座標近傍 U pの開近傍、 局所座標\phi: U \to \phi(U) \subset \mathbb{R}^n同相写像である。

今読んでる本によると、位相多様体は以上のように定義される。 第二可算公理は位相多様体の定義に含めないことも多いらしい。

微分可能多様体とは

位相多様体MC^{\infty}微分可能多様体であるとは、 あるアトラス \mathcal{S} = \{ (U_{\alpha}, \phi_{\alpha}) \}_{\alpha \in A} が存在して、 任意の座標変換f_{\beta\alpha}: \phi_{\alpha}(U_{\alpha}\cap U_{\beta}) \to \phi_{\beta}(U_{\alpha}\cap U_{\beta})C^{\infty}級であることである。

ここで、アトラスというのは、Mを被覆する局所座標系の集合で、 座標変換はf_{\beta\alpha} = \phi_{\beta}\circ\phi_{\alpha}^{-1}で定義される。

思ったこと

微分可能多様体というのは滑らかな多様体なんだと思うんだけど、 その定義中の局所座標関数には微分可能性を要請しないのがちょっと不思議な感じがした。 よくよく考えると、微分可能多様体を定義する時点では多様体上の関数に微分可能性が定義されていないので当然なのかもしれない。

全射と商位相

今日はC^{\infty}多様体の例を見ていて商位相が出てきたときにふと引っかかったことを書く。 商位相の定義にはいくつか流儀があるかもしれないけど、 例えば以下のように定義される。

定義

X位相空間Yを集合、p: X \twoheadrightarrow Y全射とする。 このとき、Ypによる商位相\mathcal{O}とは、\mathcal{O} = \{U \in \mathcal{P}(Y) \mid p^{-1}(U)\text{は$X$の開集合である。}\}のことである。

引っかかったこと

今朝、定義の\mathcal{O}が位相であることを証明して、 p全射であることを全然使わなかったことに引っかかった。 集合と位相の教科書(著: 斎藤毅)によると、p が一般の写像のときのこのような位相を像位相と呼び、 Yが何らかの商集合X/Rpが商写像のときに商位相と呼ぶっぽい。 一方、微分形式の幾何学の方ではp全射なら商位相と呼ぶというスタンスな感じ。

まあ、全射じゃないと商っぽさないし、全射ならpが商写像となるような 商集合X/Rを構成できるからそういうものなのだろう。

習慣づけアプリ

最近、習慣づけたいことがいくつかあって、下のアプリを使っている。

play.google.com

事柄ごとにウィジェットを作ると、ホーム画面でチェックを入れられる。 便利。

f:id:prololo:20181016224657p:plain:h300

習慣がどの程度達成できているのかも視覚的にわかりやすく表示してくれる。 便利。

ブログ投稿 スプラトゥーン 早起き
f:id:prololo:20181016225015p:plain:h300 f:id:prololo:20181016225222p:plain:h300 f:id:prololo:20181016230146p:plain:h300

ブログを毎日投稿する習慣はまだ身についていないことがわかる。 早起きはまだ微妙だけど、すこしずつできるようになってきてるように見える。 一方、スプラトゥーン2を毎日プレイする習慣は、完全にものにした感じ。 実際毎日プレイするようになって、少しずつ上達も感じられている。 早起きとブログ投稿の習慣もこんな風にしたい。

開基についてメモ

背景

微分形式の幾何学」(著: 森田茂之)という本で勉強をしている。 解析学位相空間論もちゃんとできてないのにこんなのできるのという不安はあるが、 まあ、数学は自由なのでやってみている。 ところで、この本では位相多様体を定義に第二可算公理を含めていて、その関連で開基について以下のように述べられている。

......  M の可算個の開集合  U_1, U_2, \dots があって、任意の開集合  U とその上の点  p に対し、ある  i が存在して  p \in U_i \subset U となるようにできる ......

 U_1, U_2, \dots が可算個と言っているのは第二可算公理の言明なので開基であることとは関係がない。 この表現は私の知っている開基の定義とは違ったので、二つの定義が同値であることを証明してみる。

開基の二つの定義

前提として、  X位相空間 T X の開集合全体の集合、  B = \{ B_i \} _{i \in I} T の部分集合(つまり  X の開集合の族)とする。 このとき、次の二つの主張が同値であることを示す。

  1.  \forall U \in T, \exists J \subset I, s.t. U = \bigcup_{j \in J} B_j
  2.  \forall p \in \forall U \in T, \exists i \in I, s.t. p \in B_i \subset U

背景での引用では  U_i だったものを  B_i と表現していることに注意。

証明

1.  \Rightarrow 2.

 X の開集合  U とその上の点  p を任意にとる。 仮定より  U = \bigcup_{j \in J} B_j となるような  J \subset I が得られる。  p \in U より、 i \in J \subset I p \in B_i となるものが存在する。  i \in J だから  B_i \subset U でもあり、2.が成り立つ。

2.  \Rightarrow 1.

 X の開集合  U を任意にとる。 選択公理と仮定により、 U 上の点  p に対して、 p \in B_i \subset U を満たす  i \in I を返す関数  \phi : U \to I が存在する。  J として  U \phi による像  \phi (U) を考え、  U = \bigcup_{j \in \phi (U)} B_j を示す。 まず、  p \in U とすると、 p \in B_{\phi(p)} \subset \bigcup_{j \in \phi(U)} B_j なので  U \subset \bigcup_{j \in \phi(U)} B_j である。 一方、 各  B_j U の部分集合であることから  U \supset \bigcup_{j \in \phi(U)} B_j が従う。 よって、  U = \bigcup_{j \in \phi(U)} B_j であり、1.が成り立つ。

疑問

2. \Rightarrow1.の証明で選択公理を使ったけど、本当に必要なのかわからん。

以下のツイートが私のTLに流れてきた。

確かに一読の価値があるというか、 投稿者サナギさんの危機感を読み取れるツイート群だった。 このツイート群の概略と、読んだ感想を書く。 当然のことながら、概略は私の主観を通してまとめたものなので、 それがサナギさんの意見なのだと思わないで欲しい。

概略

生活保護ケースワーカー(CW)に任命されたサナギさん生活保護やその受給者に良いイメージを持っていなかった。 しかし、CWとして働くうちに人間の弱さを痛感し、 受給者を見下すことはなくなっていた。 そんな中、「生きるべきでない人間がいる」という動機で重度障害者が殺害された事件や、 ネット上でもリアルでも語られる 「生活保護受給者は人権を制限されても仕方がない」 「生活保護は本当に必要な人だけに与えるべきだ」 といった意見から日本社会の不寛容さを感じ取る。 有識者は行き過ぎた自己責任論者の悪質な言論に反論していき、 この不寛容さによる生活保護申請の心理的ハードルを下げるべきだと論じる。

読んだ感想

サナギさんがCWとして働いてきた中で 日々心に積もった日本社会に対する危機感をさらけ出したような印象。 「〜べきだ」という文はあるものの、全体としては意見ではなくて感じたことを書いている感じなので、 ツイッターという媒体に適した内容と言える。 こういう文章を読むと自分以外にも心を持った何者かが存在するように感じられて良い。

特に印象に残った点は、『行き過ぎた自己責任論者の存在』。 私の周りでは直接そのような人たちを観測できていないが、 サナギさんは多くの人たちが重度障害者や生活保護受給者の人権の制限や、 死刑制度を容認していると考えているようだ。 おそらくサナギさんは正しくて、私の観測範囲が偏っているのだろう。 多数派の意見に同調しようとは思わないが、それをちゃんと知っておき、 時には適切に反論できるようになっていないといけない。 そうしないと、社会がおかしな方向に進むことを止められなくなってしまう。