FC2ブログ

Matrix Analysis and Applied Linear Algebra (2)

ところどころで、Carl Meyerの"Matrix Analysis and Applied Linear Algebra (2000)"を薦めていますが、ひとつ内容をご紹介しましょう。

1.6節に、"Ill-Conditioned Systems"に関する説明があります。これがなかなか、インパクトのある内容に仕上がっているのです。一次方程式系なんて、所詮は線型だから簡単!などと思っている人に、実はそうでもないですよ~、と知らしめるには、うってつけの例だと思います。

まず、以下の連立方程式を考えます(小数点左側のゼロは省いていますので、お間違えのなきよう)。

.835X + .667Y = .168 --- (1)
.333X + .266Y = .067 --- (2)

これの解は、

(X, Y) = (1, -1) --- (3)

です。検算してみてくださいね。

さて、次に以下の連立方程式を考えます。

.835X + .667Y = .168 --- (4)
.333X + .266Y = .066 --- (5)

式(1)と式(4)は全く同じです。式(5)は、式(2)の定数項.067を.066と、.001だけ減らしただけです。つまり、式(1)(2)と、式(4)(5)は、殆ど同じというわけです。しかるに、これの解は、なんと、

(X, Y) = (-666, 834) --- (6)

と、式(3)とは似ても似つかぬものとなる、という例です。

この理由は、多くの人が容易に推測されるように、式(1)と式(2)、もしくは式(4)と式(5)が殆ど平行だから、ということです。ここまではよろしいですね。でも、ここからはどうでしょう?

何故か、式(6)が、連立方程式(1)(2)の解に近いことが分かったとしましょう。そこで検算するわけですが、この値を式(1)と式(2)に代入すると、

.835 x (-666) + .667 x 834 - .168 = 0 --- (7)
.333 x (-666) + .266 x 834 - .067 = -.001 --- (8)

これで検算が終わって、式(6)は、±.001の精度で正しい、などとやってしまいそうではないですか?これは著者の言う、"...this is nowhere close to being true..."であります。引っ掛かってしまったら、本書はあなたの本です。
スポンサーサイト

今後のマラソン予定 (5)

今後のマラソン予定のアップデートです。

1)第10回さくらんぼマラソン(山形、2011年6月12日、ハーフ)
2)第6回湘南国際マラソン(神奈川、2011年11月3日、フル)

フルは、大阪・淀川と迷いましたが、やはり地元優先ですね。

2)は、<地元先行枠>(大磯・平塚・茅ヶ崎・藤沢・二宮に在住限定)というのに申し込んだのですが、申し込み開始(5月22日22時)直後にホームページにアクセスしたものの、既に二千人以上に先にアクセスされていました(ちゃんとカウンタが表示された)。フルの定員は1,800人なので、かなり微妙だったのですが、登録のための情報入力の速さで追い上げ、何とか滑り込みセーフ!

さて、以上のふたつは確定ですが、思案しているものとして、

3)第51回伊達ももの里マラソン(福島、2011年8月28日、10キロ)

昨年は、30度を超える猛暑の中、10マイルを走って、とんでもない目に遭いました(2010年8月30日付け記事ご参照)。でも、福島なので、行きたいとも思います。パンフを見ると、10マイルはさすがに無くなって、10キロが最長になったみたいですね。

特異値分解 (3)

特異値分解(SVD)は、非常に強力なツールであるにも関わらず、大学教養の線型代数範囲とはみなされていないのか、一般向けの教科書に記述を見つけるのは難しいですね。このテーマは、齋藤正彦先生著「線型代数入門」にも含まれていないのです。

というわけで、特異値分解についての記述がある書籍を、以下にご紹介しましょう。

まず、何といってもお薦めは、以下です。

1)"Numerical Recipes in C 2nd edition (1992)", pp.59-70.

2.6に"Singular Value Decomposition"という節があって、ここに詳しく書かれてあります。分解対象となる行列が、行=列(正方)のとき/行>列のとき/行<列のとき、と場合分けされていて、至れり尽くせりです。SVDを使う人は必読。もちろん、ソースコードも載っています。

応用分野では、やはり画像系が多いのですが、たとえば、

2)"Multiple View Geometry in Computer Vision 2nd edition (2004)"

本書では、さまざまな計算で、特異値分解が使われます。たとえば、2D homographyを求めるとき(4章)/カメラ行列を求めるとき(7章)/F行列を求めるとき(11章)、などですね。本書では、DLT(Direct Linear Transformation)アルゴリズムなどと呼んでいます。

より教科書的なものでは、

3)「これなら分かる応用数学教室(2003)」、pp.226-230.
4)"Matrix Analysis and Applied Linear Algebra (2000)", pp.411-428.

にも、たいへん参考になる記述があります。

特異値分解 (2)

特異値分解(SVD)の応用で有名なものに、擬似逆行列の計算があります。主に、最小二乗法で使われるものですね。

行列Aの特異値分解を、

AUDVT --- (1)

とすると、Aの擬似逆行列A+は、

A+VD+UT --- (2)

と書けます。ここで、D+は、対角成分(これが特異値)の逆数を取ったものです。Aが正方行列のときは、通常の逆行列に一致します。

擬似逆行列の計算方法は、他にもありますが、式(2)のアドバンテージは、式(1)の時点で、おのおのの特異値がどの程度ゼロに近いかを判定できることです。ゼロに近くて、逆数を取ってしまうと、非常に値が大きくなってしまうような場合、そのようなことをやっても結果は信頼できないので、式(2)において、そのような要素はゼロにしてしまうのです。大きな値をゼロにするって、ちょっと面白くないですか?

特異値分解

ある仕事で、特異値分解(SVD: Singular Value Decomposition)の話が出てきたので、本件について少しだけ書いてみます。

特異値分解の定義ですが、任意の行列A(正方でなくてもよい!)に対し、

AUDVT --- (1)

という分解をいいます。この分解は常に可能なところがすごい!もっとすごいことは、UVは直交行列で、Dは対角行列、しかも対角成分(これが特異値)が非負なことです。この性質により、さまざまな問題が解けるのです。

たとえば、画像系の諸問題では、

Ax0 --- (2)

という定式化がよく出てきます。式(2)の解は、もちろんx0という<自明な解>がありますが、これは面白くないので、そうではない解が必要です。そしてこの解は、式(1)を使えば簡単に求められる、という話です。SVDを知らないと、式(2)をどう解くか、ちょっと困りますよね...

式(2)の意味をよく考えてみれば、変換Aによって無くなってしまう空間(null-space)が解なのですが、これが、式(1)における、Dの特異値ゼロの空間に対応します。そして、その空間は、Vの中の対応するベクトルで張られるものです(式(1)で計算してみればわかります)。

Bundler

先日(2011年5月19日)、大阪大学で開催された、情報処理学会・CVIM研究会に参加いたしました。三次元復元のサーベイを聴くのが主目的です。ちょっと関連する仕事もあって...

「多視点3次元復元の研究動向」と題したこのサーベイは、非常に有益だったのですが(予稿も22ページと充実!)、なかでも驚きは、Bundlerというソフトウェアの紹介でした。私は寡聞にして知らなかったのですが、ここに参加されている人には周知だったようですね。関連論文は、三年前のものですからね。専用サイトもあります。

Bundlerに使われている要素技術それぞれは、既知のものが殆どなのですが、それらをきちんと組み合わせて、ちゃんとしたシステムを構築するのは、何故か外国の人がやってしまうんですよね。

数学出身プログラマの謎

当社<元祖>文系出身プログラマYさんより、当社Mさんのことを書いてほしいとリクエストがありましたので、トライします。

MさんはO大数学科出身で、Yさんの師匠(?)です。数学的に難しそうな仕事は、Mさんに回ってくることが多いみたいですね。私から見ても、かなりすごいことをやっていて、数学的素養がなくてはできない思考で、問題を解決します。

先日、新大阪のオフィスに出向いたとき、MさんとYさんが打ち合わせをしていて、Mさんが、「二次形式の対角化は...」などとYさんに説明していたのを聞いて、お、線型代数の講義をしている?などと思っていたら、これも純粋に仕事だったそうです。

私は大阪に行ったときは、せっかくなので、その夜は情報交換のために飲み会をやるのですが(Hさんに人集めをしてもらいます)、Mさんは忙しいにも関わらず、ほとんど来てくれるので、ありがたいのです。話も面白いですしね。

先週の飲み会でも、Mさんとたわいもないことを話していたのですが、なぜかオブジェクト指向の話となり、私がオブジェクト指向に疑問を呈したら、なにやら訳のわからない話になってきて、Mさんが「モノの定義はできなくても、そのモノ相互の関係は定義できる!」とのたまいました。

これに私がちょっとビックリしたのは、私の尊敬する数理物理学者ペンローズが、何かの本で、全く同じことを書いていたのでした。通常は、モノの定義から入るのが普通ですが、天才ペンローズは実はそうではなかった。そして、当社数学科出身Mさんもそうだったのです。もしや、数学出に共通の認識なのでしょうか。

SIGGRAPH[ASIA]2011

今年(2011年)のSIGGRAPH ASIAは、香港で開催されます。会期は、12月12-15日です。しかし、月曜から木曜、というのは珍しいですね。通常は、水曜~土曜、ではなかったでしょうか。

12月からM大非常勤が始まるので、この週は休講かな~などと思案していました。講義は毎週火曜日なので、この日程ではどう考えても両立できません(昨年ソウルは、水曜日の朝に発ちました)。予備日があるから補講しよう、などと思っていたら、どうも、今年の講義は9-11月の日程に変わったようです。これはラッキー!ということで、全日程参加できそうです。私にとって、香港は未開の地。

Relationship Statusの謎

FacebookのBasic Informationに、Relationship Statusという項目があります。

リストから選べるようになっていて、選択肢は以下のものです。

- Single
- In a relationship
- Engaged
- Married
- It's complicated
- In an open relationship
- Widowed
- Separated
- Divorced

何やら、人生の変遷をたどるような...

ここで面白いのが、"It's complicated"ですね。何となく状況はわかりますが、わざわざこれを選択する人がいるのでしょうか?

私がよくわからないのが、"In an open relationship"です。"It's complicate"の後に来る状況らしいのですが、残念ながら、私はこの類の経験が足りず、推測不能です。どなたか、"In an open relationship"を選択されている方、どのような状況か教えてくださいね。

Globish

約1年前の、第154回TOEIC(2010年5月30日)にて、805点(Listening415点/Reading390点)を取りました。とりあえず、800点越えを目標に受けたのですが、TOIECは初めてで、しかも事前に全く準備していなかったにしては、ぎりぎり達成したので、少し気を良くして、そのときは、「次回は900点越え!」、などと気合が入ったのですが、、、

(本BLOGに「TOIEC奮闘記」という記事を三つ書いていますので、ご覧下さいませ)

本屋さんに行くと、TOEIC受験本が溢れていて、それで興味を失ってしまった!私は、受験勉強的なものはダメなのです。

そうこうしているうちに、先日、大阪出張の帰り、新大阪駅の本屋さんで時間をつぶしていたら、「世界のグロービッシュ-1500語で通じる驚異の英語術(2011)」(原書は、"Globish The World Over (2009)")という本が積まれていました。既に英語力が飽和して久しい私としては、もしや、今後目指す方向はこちら?ということで、購入してみました。

近い将来、私の英語はGlobish化するかも知れません。あ、もしかしたら、既にそうかも知れませんね。複雑なことは言えないし、言われても理解できませんからね。

文系出身プログラマの謎 (2)

以前本BLOGで、複素フーリエ変換のプログラムが書ける、当社文系出身プログラマYさんの話を取り上げました。

ところが、今度は、ヤコビ行列が分かる、やはり文系出身プログラマSくんが登場!

ヤコビ行列というのは、多変数ベクトル関数を、偏微分してできる行列です。たとえば、3変数の3次元ベクトル関数であれば、ヤコビ行列は3x3となります。これを分析すると、この関数に対して、いろいろなことが分かるのです(分かるらしい)。

大学の微積では、ヤコビ行列が最初に現れるのは、多変数関数の積分における、変数変換だったと記憶しています。ヤコビ行列は、1変数スカラ関数(つまり通常の関数)では、普通の微分になるので、大したことはないと言えばそうなのですが、ちゃんと図に書けるのは2変数スカラ関数までなので、どうしても抽象的になります。ですから、そんなに簡単ではないと思いますよ。私も最初はよくわからなかった(今もよくわからない)。やはり、文系プログラマ、恐ろしい!

あ、そうか、Sくんは、哲学出身なので、抽象的な概念の方が理解しやすいのかも知れませんね。

どうでもいい話ですが、私にはヤコビ行列に関する思い出があります。以前、ドイツの会社と仕事をしていて、その会社の製品をカスタマイズするときに、ヤコビ行列が必要になりました。私は、その会社のドイツ人に、「アンタはヤコビ行列がわかるか?」と訊いたところ、その人は、「アタリマエだ、ワタシは大学で工学を専攻したのだ」と、自信満々でした。ヤコビ行列を編み出した数学者ヤコビはドイツ人なので、私はすっかり信用してしまったのですが、結局その人は、ヤコビ行列なんか、実は全く分からなかったという話。

もしや、日本人であれば、誰もが川端康成を読んでいると、外国の人が勘違いするのと同じ?

Real-Time Shadows

"Real-Time Rendering Blog"、2011年5月8日付けの記事にて、"Real-Time Shadows (2011)"という書籍の紹介がありました。

まだ発売はされていないのですが(amazon.comによると、2011年6月6日)、SIGGRAPH ASIA 2009のコース、"Casting Shadows in Real Time"をベースにしているのではないか、とのことで、推奨しています。4名の著者はまったく同じなので、この推測はあたっているでしょうね。

私は、このコースを実際に聴いたのですが(本BLOGの2009年12月17日の記事ご参照)、素晴らしい内容でした。というわけで、3DCGにおけるshadowsの技術に興味のある人には、必携とも言えるものでしょう。でも、コースノートもネットから取れるので、これを見てから考えてもよいかも知れません。148ページのもので、たいへん充実しています。

月例湘南マラソン (4)

GWまっただ中の、2011年5月1日は、久しぶりに月例湘南マラソンでした。

2月27日の、湘南藤沢市民マラソン(10マイル)のあと、3月はサボってしまい、4月は出ようと思っていたところ、震災で自粛。三カ月ぶりです。最近ちゃんと走っていないので、20キロは止めて、10キロでのエントリ。

強風で、砂が道を蔽い、走りづらいです。体力不足も相まって、前半は27分台と、かなりヤバいです。私の10キロのワーストは52分台なので、このままだとワースト更新です。これはイカんと、折り返し後、ちょっとスピードを上げました。

かなり追い抜いたのですが、50分は切れませんでした。でも、後半は5キロを23~24分で走れたので、いまのコンディションとしては、上出来でありました。

Vertex Arrays

先日、当社新大阪オフィスにて、<OpenGL勉強会>を開催いたしました。教材は、昨年(2010年)SIGGRAPH ASIA(ソウル)におけるコース、"An Introduction to OpenGL 4.0 Programming"で、Dave Shreiner氏によるものです。現時点における、ほぼ最新の情報と思います。

勉強会の前に、少し予習をしていたのですが、KhronosからのOpenGL仕様書、"2.8 Vertex Arrays"のところで、疑問が生じました。すなわち、冒頭で、"Vertex data is placed into arrays that are stored in the server's address space"、と言いきっています。もちろんこれでいいのですが、私のような古いヒトにとっては、以前は、client側でも保持できていたのです(いわゆる、"Begin/End Paradigm"、など)。私の興味は、いつからこのような断定口調となったのか、ということ。GPU進化の歴史に関連しますからね。

念のための補足としては、serverとはGPU、clientとはCPU、のことです。

どれどれと、過去のOpenGL仕様書を調べてみると、分かりました!3.0と3.1の間ですね。3.0の上記の同等の箇所には、以下のような記述があります。すなわち、"...Vertex data may also be placed into arrays that are stored in the client's address space..."

この時期は、既にGPU側に事前にデータを転送することが普通になっていたと思いますが、仕様書レベルできちんと書き換えられたのが、2008~2009年だったというわけです。結構最近ですね。

<シュレーディンガーの猫>を実証?

ちまたで、<シュレーディンガーの猫>が実証された、とのニュースが飛んでいます。東大による成果だそうです。日付は、2011年4月15日ですから、私が知らなかっただけですね。

でも、ニュースを読んだだけではよくわかりません。どなたか、わかりやすい解説をお願いします!ホントに、猫の状態が重ね合っちゃった?当家のネコを見ている限り、そのようなことは起こりそうにないんですが~

Normal Transformations Aren't Normal

"iPhone 3D Programming (2010)"は、難しい数学を控えた良書です。David Eberly氏の本などと違って、数学があまり好きではない人にもお薦めできます。

さて、vertex shaderの中で、法線ベクトルを視野座標系に変換する箇所があります。それについて、pp.131-132で、"Normal Transformations Aren't Normal"というタイトルで説明があります。すなわち、なぜ、法線ベクトルの変換に、点を変換する行列を使ってはいけないのか、ということですね。一応、inverse-transposeでないといけない、とは触れていますが、うまく図を使って、必要最低限の数学で、説明しています。

この問題は実のところ、それほど簡単ではなく、テンソル解析の教科書でも後半になって出てくる、斜交座標系における反変ベクトル/共変ベクトル、などという話になるのですが(点が反変ベクトルで、法線が共変ベクトル)、そのような話題はもちろん避けています。正規直交系では、このふたつの変換は同じになるので、正規直交系を使うに越したことはない、というわけです。

いわゆる、"Red Book"の付録にも、"Transforming Normals"として、参考になる説明がありますね。

バーゼル問題

世にも不思議なゼータ関数ζは、以下の式(1)で定義されます。

ζ(s)= (1 / 1s) + (1 / 2s) + (1 / 3s) + ... =Σ(1/ns) --- (1)

通常の意味で収束するのは、s>1のときですね(s≦1のときは、別の話題です)。

さて、s=2のとき、

ζ(2)= (1 / 1) + (1 / 4) + (1 / 9) + ... =π2 / 6 --- (2)

となることを発見したのは、かのオイラーで、1735年のことでした。これにより、オイラーは一躍有名になったのです。スイスのバーゼルで話題になっていた問題なので、<バーゼル問題>などと呼ばれます。

でも、答えに円周率が出てくるとは、何とも不思議ですね。当時もみなビックリしたそうです。

式(2)の導出ですが、アイデアはsin関数のテイラー展開と、それの因数分解にあります。このやりかたは有名なので、いろいろなところで紹介されていますが、たとえば、結城浩さん「数学ガール(2007)」にも、詳しい記述があります。

横山幸雄ショパン・ピアノソロ全212曲演奏会 (3)

先日(2011年5月3日)、横山幸雄氏による、<ショパン・ピアノソロ全212曲演奏会>に行ってまいりました。東京オペラシティ・コンサートホール(西新宿)にて。私のGW唯一の道楽です。朝8時に始まり、予定通り、翌日深夜2時、めでたく終了いたしました。ギネスの認定式もありました。演奏時間は、のべ18時間。休憩を除くと、正味14時間なり。会場を後にしたのは、深夜2時30分でした。

124曲目のスケルツォ第2番をなぜか飛ばして、前奏曲にいってしまった他は、完璧にプログラムどおりの、on scheduleでした。スケルツォは、そのあと148曲目にちゃんと弾きました。うっかりしたのか、これも計画に沿ったものなのかは不明です。

しかし、横山幸雄という人は、超人ですね。他の人で、こういうことができる人は、果たしているのでしょうか?全てを暗譜する記憶力と、もちろんそれが完璧に弾ける技術、更にはそれを一日で弾くという、気力・体力がなくてはなりません。それから、氏が奏破後のインタビューでおっしゃった、「企画しているときがもっとも楽しい」ということで、企画力も必要ですね。

今回は、未発表曲も多く含むということで、知らない曲も多かったので(最初の知っている曲は、31曲目)、さすがに、ところどころで眠たくなりました。でも、非常に贅沢な一日。滅多にない貴重な経験をさせて貰いました。

ショパンも、自身の没後160年にもなって、おそらく彼に全く縁のなかった極東の日本で、自身の全てのピアノ曲を一日で演奏するイベントが行われたなどと聞いたら、ビックリするでしょうね。

横山幸雄ショパン・ピアノソロ全212曲演奏会 (2)

明日(2011年5月3日)は、横山幸雄氏による、<ショパン・ピアノソロ全212曲演奏会>です。東京オペラシティ・コンサートホール(西新宿)にて。朝8時に始まり、翌日深夜2時終了予定。18時間の長丁場です。

今日は、夜に業界団体の会合が新宿付近でありますので、そのまま近場に泊まり、万全を期して(?)明日に臨みます!
プロフィール

加納裕(かのうゆたか)

Author:加納裕(かのうゆたか)


[略歴]
1983年3月東京工業大学工学部機械物理工学科卒業
1983年4月(株)図研入社
1987年1月同社退社
1987年2月(株)ソリッドレイ研究所を6名で設立、取締役
1994年3月同社退社
1994年4月(株)スリーディー入社
1996年10月同社取締役
1999年12月上海大学兼務教授
2002年10月同社代表取締役
2009年9月ものつくり大学非常勤講師~現在
2009年10月同社代表退任/退社
2010年1月ソフトキューブ(株)入社~現在(技術顧問)
2017年4月湘南工科大学非常勤講師~現在


[業界団体・学会活動]
電気学会・第三期次世代インタラクティブディスプレイ協同研究委員会(幹事)/最先端表現技術利用推進協会・アカデミック部会(旧:三次元映像のフォーラム)(副部会長)/日本バーチャルリアリティ学会ハプティクス研究委員会(委員)/ACM・SIGGRAPH(Professional Member)/情報処理学会(正会員、CVIM会員)/3Dコンソーシアム(賛助会員)/3DBiz研究会(個人賛助会員)/URCF(特別会員)

----------------

前職:立体映像産業推進協議会(幹事)/日本バーチャルリアリティ学会・論文委員会(委員)


[資格]
TOEIC805点
数学検定1級(数理技能)
中型・普自二免許
サッカー4級審判員

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード