ポストモダン解析学: [定義13.3]分割と回転(解決)

http://ashiato45.hatenablog.jp/entry/2013/09/24/201659で夏休みから悩んでた積分の値の極限の一致なのだけれど、ついにC85の三日目の店番中に解決を見た。夜だけど書いておく。

まじめな記述については、足跡45のサイト>ポストモダン解析学の「証明メモを見る」のところにpdfで置いてある。

なんとなくの概略を書いてみるが、ちゃらんぽらんではある。

イメージとしては、fの台を囲む正方形が2つあってその上で棒グラフでfの形を近似しているという状況で、その棒グラフの体積が2つとも大体一致するよね?という話だった。しかし、正方形の分割が互いに斜めになっているかもしれないので、結局その分割したものをあわせると変な三角形とかが出てきて、その「面積」はよく分からないのでそこから先に進めないというのが問題だった。そこで、なんとかその変な図形に対して「面積」を定義するのを回避して、正方形に対する「面積」だけで片付けようと考えていたのが多分C85の1-2日目ぐらい。ちなみに、正方形に「面積」があるのはポストモダン解析学の定義13.3の積分の定義で暗に\int f(x) dx = \sum c_i (l/n)^dと、(l/n)^dの形で表れている。

結局「面積」を具体的に値にするのは最後だけで済ませて、途中に他の多角形に対する「面積」を出すにしてもそれを抽象的なσ(多角形)という実数で済ませようと思った。必要なのは「多角形の『面積』を足すと、その多角形が集ってできている元の正方形の『面積』に一致する」ということなので、それさえ満たせばもはや「面積」は僕等の直感的な面積でなくてもよくて、果ては負の数でさえよいのではないか、ということを考えると多角形の「面積」の値をどう定めるかという問題は「多角形の『面積』を足すと、その多角形が集ってできている元の正方形の『面積』に一致する」を満たすという条件を記述した連立一次方程式が解を持つかという問題に帰着される。で、解を持つかどうかだが、多角形を出鱈目に切り刻んで係数行列のほうを好きなだけ横長にすることができるので、解を持つように無理矢理することができる。あとは直感通り計算するだけ。

TeX Users Group 2013(TUG2013) 一日目レポート

講義があったり疲れて寝てたりしたので飛び飛びです。あと、英語力が足りなくてAbstractのほうが詳しいような説明しか書けない。

TiCL The prototype

LispTeXライクなものを書こうとしているらしい。本文もLISPで書けて、(section ...)みたいな感じになる。で、それをマクロをつかってどんどん不思議文法を導入していき、普通のTeXに近づけていくというお話だった。シンボルのあたりは細工をしたと聞いている。ただ、beginとendはLISPのままにしておいたほうが構造が綺麗にみえていいのではないかと思いました。

LISP on TeX: A LISP interpreter written using TeX macros

TeXマクロでLISPを実装した話。変態だー。マンデルブロー書いたりして測ると普通にマクロで書いたりLuaTeX使ったりするより100倍ぐらい遅いらしい。会議の最後のquestionで、「普通に実行して埋めこめばよくないですか」みたいなこと言われてた。

A gentle introduction to PythonTeX

一番便利そうだった。PythonTeXコードを吐き出したりできる。そういうわけで、TeX中で素数を計算したりできる。また、Pythonのモジュールが使えるので、Google Mapから地図を持ってきたり、NumPyモジュールを入れれば科学計算ができるし、SymPyを入れれば多項式の展開などの代数処理がTeX中で行なえるという話だった。

ここで講義と部会のため脱出。

Lunch

1000円はしそうな牛肉弁当だった。前が黒木先生。右のほうでTeXでのLISP実装が遅い原因とか話してた。あと、丸善出版の人に名刺もらって、丸善好きなので嬉しかった。どうも野良pdf*1だと印刷屋が受けてくれないので、このままTeXがpdf出力一本に進んでいくのは不味いという話をしていたらしい。

The incredible tale of the author who didn't want to do the publisher's job

ひどい出版社と編集者の話だけど技術的な話ではないし疲れてきたので省略。編集者からのサンプルはよく確認しようというのと、pdfからWordを作るのは気を付けましょうという話でした。

How we try to make working with TeX comfortable

ConTeXtの話だったと思うけど申し訳ない。寝てた。

ここで講義のため脱出。

How I use LaTeX to make a product catalogue that doesn't look like a dissertation

なんとか終了15分前ぐらいに講義から帰ってこれた。Jason Lewisは一番よく話してくれた人なので心苦しかったのだけれど、まあ少しでも見れてよかった。この方はオーストラリアで食料品の販売(たしか小売ではなかったと思う)で、そのカタログをLaTeXで作る話だった。ちょっと細かいところ聞けなかったのだけれど、どうも商品を入れてくれる人たちがデータを作るらしくて、そのためにVBAマクロ書いたりMS AccessやSQLと連携できるようにしたらしい。それでPerlTeXコードを生成する(?)か何かして、最終的なお洒落なカタログを生成していた。一行ごとに色を変えるとか、回り込みとか細かいところ丁寧で感動した。

TeX in educational institutes

かの有名な鉄緑会がTUGに参戦!数学の先生が来たらしい。鉄緑会についてひとしきり説明したあと、鉄緑会のプリントは日本史等含め全てTeXで書かれていることが明かされる。さらに、過去問データベースはTeXソースを登録するように作られていて、問題をクリックするとその場でコンパイルが通ってpdfが開くようになっていた。当然検索可能。最後のquestionで「なんだか感動的な成功談だったけれど、何か障害はなかったの」みたいな質問があったんだけど答えが聞けなかった。フランスの方が「フランスでも歴史の教師にTeX使うように言ってよwwww」みたいなこと言ってて笑った。

Online Publishing via pdf2htmlEX

明日からできる超便利TeXトリックだと思った。いままでのpdfからhtmlの生成は数式がくずれていたが、このpdf2htmlEXを使うとpdfと見分けのつかないレベルのhtmlが生成される。目次も使える。数式もきちんと出る。サイズも1/3ぐらいになってる。ハイパーリンクも効く。コピペもできる。当然右クリックからの検索もできる。オープンソース。すごい。すごすぎる。あと、開発メンバー募集中らしい。

The stony route to complex page layout

ごめん寝てた。

What is ConTeXt? A short introduction

ConTeXtに関するデモンストレーションだったんだけど、僕の英語力の問題だけでなくHagen氏の英語がどうも聞き取りづらく、ConTeXtに関する予備知識もなく、線形代数演習で割と疲れてたので寝はしなかったがどうしようもなかった。

*1:Adobe製品で出力されたものでないという意味で

ポストモダン解析学: 分割と回転(というか直交行列での変換)が分からなかった話

ポストモダン解析学の176頁の定義13.3で、極限の存在は分かったので、「同様の議論で」の一様収束列のとりかたへ依存しないことやsupp fを含むWのとりかたに依存しないこと(一意性)を調べようと思ったのだが、一部しか分からなかったという話。一意性を示すためには、収束する階段関数の列t_nt'_nをとって、
\left|\int_W t_n(x) dx - \int_{W'} t_m(x) dx\right|\to 0,\, n,m\to\infty
を示せばよい。

2つの関数列について分割の仕方も立方体のとり方も同じ場合

階段関数の積分の定義より、
\left|\int_W t_n(x) dx - \int_{W'} t_m(x) dx\right|=\left|\sum_{i=1}^k (c_i - c'_i)l_i^d\right|であり、c_ic'_iとが近いことは、階段関数の一様収束から言えて、成り立つ。

2つの関数列について立方体のとり方は同じだが、分割の個数が一致しないとき

2つの階段関数がn等分とm等分のとき、nm等分で分割して考えれば両方が一致して上に帰着される。

2つの関数列について立方体のとり方が異なるとき

2つの立方体が平行なら立方体を広げてやればなんとかなると思っていたのだが、広げると分割の仕方が変ってしまって先の式が使えなくなってしまう。ましてや、立方体に直交行列をかましたり平行移動したりしたらお手上げ。

なんでできそうな気がしていたのか

2変数で考えたとき、図的にあまりに自明だったからだと思う。しかし、分割の方法が立方体に限るという厳しい条件のせいか、どうにもならなかった。杉浦解析入門では分割は一般に長方形でできるので、直交行列で回転みたいなことをしなければ対応できた。回転ができるようになるのは結構後のほうだったし、Jurgen Joestさんがどういう意図だったのか本気で気になる。

ほか

考えて自己解決した他の分についてはサイトに置いてあるのでよかったらどうぞ
http://ashiato45.github.io/postmodern_analysis.html

バナッハ空間での二階微分の例(フレッシェ微分)

(2018年8月31日)多分これフレッシェ微分ではないです(当時なんでそんなことを書いたのかよくわからない)

いよいよはてな記法で書くの辛くなってきたのでTeXで書いた。HTML5対応ブラウザでないと見えないかも。pdfファイルは「https://github.com/ashiato45/blog_article/tree/master/postmodern_8_13」のmain.pdf。

これは何?

ポストモダン解析学を読んでいて,バナッハ空間での微分*1が出てきて,この定義なら多変数関数に対す
る二階微分ができるはずなのだが手頃な計算例が載っていなかったので作ってみた.値を与えると関数を吐
く関数のノルムをとったりとかしなくてはいけなくて,これの扱いに慣れていなかったのがてこずった原因
だった.

本文

PDFファイルを指定します。


ご覧の環境では、object要素がサポートされていないようです。PDFファイルをダウンロードしてください

IronPython+PTVS+MonoGameでの環境構築(主にIntellisense)

これは何?

IronPython+PTVS(Python Tools for Visual Studio)+MonoGame(XNAライクなライブラリ)を使ってVS2012でゲームを作ろうとしたらIntellisenseが効かなくて悩んだ話。多分MonoGameに限らずPTVSとdllの連携でIntellisenseが効かないという話に対応すると思う。

どうするの?

とりあえずIronPythonとPTVSが入っていればIronPythonのアプリケーションが作れるはずなので、それを作る。

本題ではないけれど、とりあえずWindowsアプリということで、ソリューションエクスプローラの中でプロジェクトを右クリックして、プロパティを開く。GeneralタブのWindowsApplicationにチェックを入れて、InterpreterIronPythonにしておく。

dllの読みこみは

clr.AddReferenceToFile("MonoGame.Framework.dll")

みたいにやるわけだけど、これだけだとIntellisenseが効かなくて、

import Microsoft.

まで打っても「xna」を補ってくれないので、これが問題になっていた。ちなみにこのとき、IronPython Console(VSやPTVSとは無関係)で補完が効くのは確認していたので、VSかPTVSで問題がおきていることは分かっていた。

結局、先のプロパティページのDebugのSearch Pathのところにdllの在処(私の場合「C:\Program Files (x86)\MonoGame\v3.0\Assemblies\WindowsGL」)を入れて、保存すると、コード中で補完してくれるようになった。DebugのところとIntellisenseが関係あるとは思わなかったので全然思い付かなかったが、PTVSもオープンソースなのだしコードを読む習慣があればもっと早く解決していたのかもしれない。

結局MonoGame+IronPythonのコードがどんな感じになったか。

後述の参考の「MonoGame w/ IronPython Example - doesn't work?」を参考に。

import sys
import os
sys.path.append(os.getcwd() + '\\lib')
 
import clr
clr.AddReferenceToFile("MonoGame.Framework.dll")

from Microsoft.Xna.Framework import *
from Microsoft.Xna.Framework.Graphics import *
from Microsoft.Xna.Framework.Content import *
from Microsoft.Xna.Framework.Storage import *
from Microsoft.Xna.Framework.Input import *

 
class App(Game):
    def __init__(self):
        self.graphics = GraphicsDeviceManager(self)
        RootDirectory = "Content"
 
    def Initialize(self):
        super(App, self).Initialize()
 
    def LoadContent(self):
        self.spriteBatch = SpriteBatch(self.GraphicsDevice)
 
    #TODO: use this.Content to load your game content here
    def Update(self, gameTime):
        if GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed or \
            Keyboard.GetState(PlayerIndex.One).IsKeyDown(Keys.Escape):
            self.Exit()

        super(App, self).Update(gameTime)
 
    def Draw(self, gameTime):
        self.graphics.GraphicsDevice.Clear(Color.CornflowerBlue)

        super(App, self).Draw(gameTime)
 
game = App()
game.Run()

これで無地の青画面が出る。この1ファイル感が好きです。

コンピュータビジョンでできた偶然の産物

「実践コンピュータビジョン」読んで書いてたらこんなのできた。

元画像(http://www.ashinari.com/2010/07/23-338955.php?category=243)
f:id:sle:20100717205247j:plain
できたの
f:id:sle:20130428110859p:plain

from PIL import Image
from numpy import *
import imtools
from pylab import *

im = array(Image.open("sample/artist.jpg").convert("L"))
im2, cdf = imtools.histeq(im)

## imshow(im)
imshow(im2)
show()