2014年06月29日

ストレスを減らすには

名古屋の味噌カツは、どて煮の煮汁に串かつを漬けたのが始まりだという説があるそうです。地元なのに知りませんでした。

Twitter の LiveScience で見つけた "10 Work Stress Reduction Tips" という記事。ストレスを減らす方法について書いてありました。曰く

---

1. Accept the fact that few escape stress (ストレスから逃れられないという事実を受け入れなさい)

  「敵をよく知りなさい -- どんな形でストレスが出現するかをもっと学習しなさい」というようなことが書かれています。

2. Know for certain that you can beat stress (きっとストレスに打ち勝つことができるということを知りなさい)

  「信じる」のではなく「知る」ということが重要だそうです。インターネットなどで自分と似たような境遇にあってそれを克服した事例がないかを調べなさいと書いてありました。

3. Get comfortable with your physical, emotional and mental self-maintenance regimens (身体的・感情的・精神的な自己メンテナンス療法を使いこなしなさい)

  健全な精神・感情・肉体はストレスにも強いということでしょうか。

4. Adopt the attitude that "as one door closes, another one always opens" (「ドアが閉まっても他のドアが開く」と考えなさい)

  「ものごとには何でも理由があって、角を曲がればより良い何かがあるということを知りなさい」というようなことですが ... すみません、この内容は理解できませんでした。

5. Bring humor into your life (ユーモアを生活に取り入れなさい)

6. Adopt more positive friends and discard those that are continually negative (ネガティブ思考な人は捨ててポジティブ思考な人を友達にしなさい)

7. Bring more sunshine into your life -- literally -- (生活に太陽の光を取り入れなさい -- 言葉通りに --)

  ビタミン D3 は肉体・精神・感情の強化に有効だそうです。紫外線対策は忘れずに。

8. Adopt the thought that "this too shall pass" (「物事には必ず終わりがある」と考えなさい)

9. Eliminate the need to be right (正しい必要があるということを撤廃しなさい)

  不愉快な集団に会ったら「君たちはそれについては正しい」と言って放っておきなさいということでした。

10. Finally and most importantly ... imagine yourself living a life without stress (最後に最も重要なこと ... ストレスのない生活にある自分を想像しなさい)

---

英語が得意というわけではないので誤った訳になっているかもしれません。英語に自信がある方は原文の方を一読されることをお勧めします。

これが少しでもストレスを抑える手助けとなればいいのですが...  

Posted by fussy at 21:07Comments(0)TrackBack(0)

2014年06月28日

フェルミ問題

今日の「宇宙白熱教室」のテーマは「物事を大雑把に捉える」というものでした。

牛を球体と考えて、細かな部分は無視するといった例題からスタートして、途中から「フェルミ問題」というものが取り上げられていました。
フェルミ問題、実は名前自体は知りませんでした。Googleで採用試験に使われていたような問題と聞くとピンとくるかもしれません。「東京ドームにピンポン球を詰め込むにはいくつ必要か」といった類の問題で、物理学者のエンリコ・フェルミに由来しています。彼はこういった概算が得意で、曰く「物理学者はどんな問題にも必ず答えられなければならない」という言葉を残したそうです。
ところで、Googleの採用試験はいわゆるフェルミ問題のような突拍子もないものが多かったそうですが、今ではもう使われていないとか。試験の採点結果と仕事の出来には相関がなかったらしいです。  

Posted by fussy at 01:00Comments(0)TrackBack(0)

2014年06月26日

白と黒のとびら

「白と黒のとびら」という本を読み終えました。

副題は「オートマトンと形式言語をめぐる冒険」。オートマトンを一言で表すのはなかなか難しいですが(自分も厳密に理解しているわけではないですが)、状態がある条件に従って遷移してゆくシステムと考えればいいでしょうか。非常に難解なテーマのように感じますが、本自体は最後の方を除いてそれほど悩まずに読むことができます。パズルを解くような感じで読めばいいかと。
普通のファンタジー小説として読んでも十分楽しめるので、興味のある方は一読をお勧めします。

数学問題 bot」から一問。高校生数学コンテストということで難易度は低いです。間違っていたら恥ずかしいですが。

-----

■ 3 / p + 2 / q = 1 を満たす自然数の組 ( p, q ) を全て求めよ (08京都高校生数学コンテスト)

3 / p > 0 かつ 2 / q > 0 なので、p ≥ 4, q ≥ 3 である必要があります。そうしないと、3 / p と 2 / q のいずれかが 1 以上になり、左辺は 1 より大きくなってしまうからです。p = 4 のとき q = 8 という結果が得られますが、q を 8 より大きくすると 2 / q は小さくなってゆくので、左辺が 1 になるためには 3 / p を大きく、すなわち p を小さくする必要があります。しかし、p は自然数なので、4 より小さい数は 3 以下であり、このときは左辺を 1 にすることができないのは先に述べた通りです。従って、q は 8 以下でなければなりません。同様に考えると p ≤ 9 であることがわかります。p が 4 から 9 までの自然数であるときの q の値を求めると

p = 4 , q = 8
p = 5 , q = 5
p = 6 , q = 4
p = 7 は成り立たない
p = 8 は成り立たない
p = 9 , q = 3

となるので、答えは ( p, q ) = ( 4, 8 ), ( 5, 5 ), ( 6, 4 ), ( 9, 3 ) となります。  

Posted by fussy at 00:06Comments(0)TrackBack(0)数学

2014年06月22日

政治家と問題発言

今の政治家の言葉なんて信頼性はゼロに等しいですが。

よくマスコミに叩かれる問題発言の類は、そんな政治家の本音が垣間見られる気がします。最近では石原環境相の「金目」発言と、東京都議会のセクハラヤジでしょうか。後で問題になることはわかるはずなのについ言葉に出てしまうというのはなぜなんでしょうね。特にヤジの方は発言のレベルが低すぎて都議会は大丈夫かと思ってしまいました。

さて、本日アルゴリズムのコーナーを更新しました。検索アルゴリズムの「正規表現」を見直して、以前は二つのページに分けていたのを一つにまとめています。実はサンプル・プログラムを最初の予定よりも単純にしています。Bound 指定 ( "{m,n}" で m 回から n 回までの繰り返しを表すもの ) に対応するつもりでしたが、実装がかなりややこしくなったのと、ほぼ完成というところで原因不明のバグといくつかの問題点が発覚し、急遽 Bound 指定を外しています。そのうち、対応したものを別途ダウンロードできるようにするかもしれません。

「するかもしれません」という、政治家みたいに曖昧な言い方になってしまいましたが、できるだけ実現できるように善処します... って善処というのも政治家発言ですね。  

Posted by fussy at 22:30Comments(0)TrackBack(0)

2014年06月21日

宇宙白熱教室

今日は夏至でしたね。昼間が一番長くなる日です。

昨日から NHK で「宇宙白熱教室」が始まりました。第一回は宇宙のスケールの話がメインでしたが、途中で賢そうな男の子が二回ほどいい質問をしてました。将来は有名な科学者になるかもしれません。
宇宙の現在のサイズは 1026 m ほどの大きさで、誕生から 1017 秒が経過したそうです。人類の歴史なんて、宇宙の歴史から見たらほんの一瞬です。1026 m というのもちょっと想像できないですね。107 m で地球のサイズ、109 m で月の軌道、1013 m で太陽系、1016 m は約 1 光年、1021 m が銀河系の大きさで約 10 万光年、半径 130 億光年あたりが観測できる限界で、それより先は見ることができないんだそうです。逆に小さな方向では、10-10 m で原子、その 1 / 10000 で原子核となります。

少し前に話題になった「ヒッグス粒子」などにも言及されるようで、残り 3 回の放送も結構楽しみです。  

Posted by fussy at 23:59Comments(0)TrackBack(0)

2014年06月16日

すでに 5 ヶ所は刺されたようです。今のところ二匹撃退しました。

「カ」という名前、「噛まれる」とか「かしましい」とか語源にはいろいろな説があるそうですが、なぜ一文字? ということで、"あ" から "わ" まで、一文字で意味のある言葉を探してみました。

あ ... 阿吽の「阿」 (ものごとの始まり)
い ... 胃、stomach
う ... 鵜飼いの「鵜」
え ... 絵、picture
お ... 尾、しっぽ

か ... 蚊
き ... 木、tree
く ... 数字の 9
け ... 毛、hair
こ ... 子供の「子」

さ ... 差、difference
し ... 音階の「シ」
す ... 酢、vinegar
せ ... 背比べの「背」
そ ... 音階の「ソ」

た ... 田んぼの「田」
ち ... 血、blood
つ ... 地名の「津」
て ... 手、hand
と ... 戸、door

な ... 名、name
に ... 数字の 2

ね ... 根っこの「根」
の ... 野原の「野」

は ... 歯、tooth
ひ ... 火、fire
ふ ... 食べものの「麸」
へ ... おならの「屁」
ほ ... 帆船の「帆」

ま ... 間合いの「間」
み ... 音階の「ミ」
む ... 無、nothing
め ... 目、eyes
も ... 藻

や ... 弓矢の「矢」
ゆ ... 湯
よ ... この世の「世」

ら ... 音階の「ラ」
り ... もうけの「利」

れ ... 音階の「レ」
ろ ... 溶鉱炉の「炉」

わ ... 輪、ring

見つからないものがあるだろうと思ったら意外とありました。しかし、「ぬ」と「る」だけはパッと思いつくのが見つからず。

こんなことをしていたら 30 分が経過してしまいました。そろそろお開き。  

Posted by fussy at 23:58Comments(0)TrackBack(0)

2014年06月15日

フェルメール 光の王国展

「フェルメール 光の王国展」を見てきました。

会場に到着してから写真撮影 OK なのを知ったので、カメラに収めることができませんでした。代わりに購入したグッズなどの写真を付けておきます。

「フェルメール 光の王国展」グッズ

絵は本物ではなく、キャンバス地にプリントされたものです。しかし、全作品が一同に並んでいる様は圧巻で、描かれたときの色彩を再現することを目的にしているだけあって個々の作品も非常にきれいでした。残念ながら、実際の油絵にあるような厚みというか立体感というか (こういうのをなんと表現するんでしょうかね) は感じられないですが、そこまで求めるのは酷というものなのかもしれません。「真珠の耳飾りの少女」はやはりいいですね。

それにしても、6 月に入るまでこんな展覧会が開催されていることを知りませんでした。新聞に載っていた、宣伝と「よかった」という声を見逃していたら、おそらく見過ごしていたでしょうね。危ないところでした。  

Posted by fussy at 19:01Comments(0)TrackBack(0)

2014年06月14日

今週からW杯

先週末に東京へ出張して一泊してきたわけですが、宿泊先を出張前日に予約しようとしたら全く空きが見つからず少しあせりました。なんとか空室を見つけることができたので、カプセルホテルかマンガ喫茶か、ということはありませんでしたが、その時はなぜ満室ばかりだったのか気付きませんでした。
宿泊先で朝テレビを見て気付いたのですが、おそらくW杯でブラジルに向かう人が宿泊していたのではないでしょうか。そういえば、今週から開催されたんでしたね。ネイマール、早速活躍してました。いよいよ明日は日本の初戦です。

  

Posted by fussy at 18:50Comments(0)TrackBack(0)

2014年06月08日

フィボナッチ数

夕方頃から涼しくなって、今は涼しい風が流れています。昼間の暑さがウソのようです。

6/14 (土) はいよいよ石川智晶さんのライブなんですよね。しかし、チケットは結局入手できず、今回は断念です。来年の一月に渋谷でのライブが決定したそうで、次は名古屋でのライブが再び実現するのを期待したいと思います。ちょうど今週の木曜日から金曜日にかけて出張で東京まで行く予定なんですよね。チケットさえ持っていれば、そのままライブの時間まで東京をぶらつくこともできたんですけど、残念です。

数学問題 bot」に面白そうな問題があったのでチャレンジしました。今回は非常に長いです。

---

■ { 1, 2, ..., n } の空でない部分集合のうち、隣り合う二つの数を含まないようなものはいくつあるか。(Marbel_NIKO様)

求めたい数を S(n) として、まずは、n = 1 から順に数えてみます。

n = 1 : {1}
n = 2 : {1} {2}
n = 3 : {1} {2} {1,3} {3}
n = 4 : {1} {2} {1,3} {3} {1,4} {2,4} {4}
n = 5 : {1} {2} {1,3} {3} {1,4} {2,4} {4} {1,5} {2,5} {1,3,5} {3,5} {5}
  :

よって、n = 5 までは S(1) = 1, S(2) = 2, S(3) = 4, S(4) = 7, S(5) = 12 となります。この結果からパターンを調べていきます。

n - 1 までに見つかった部分集合はそのまま n の部分集合になります。それらは n を要素に持たないので、残りは必ず n を要素に持つ部分集合になり、n - 1 までの部分集合に n を加えたものでなければなりません。なぜなら、それ以外の組み合わせは必ず隣り合う二つの数を含んでいるからです。さらに、部分集合の要素に n - 1 が含まれていると、n - 1 と n どうしが隣り合うのでこれらは除外する必要があります。例えば n = 5 のとき、その条件を満たす n = 4 までの部分集合は {1} {2} {1,3} {3} の 4 つなので、これらに 5 を加えた {1,5} {2,5} {1,3,5} {3,5} が求める部分集合になります。これは n = 3 での部分集合そのものに 5 を加えたものに相当します。最後に、n のみを要素とする部分集合 {n} を加える必要があります。
以上から、S(n) は n - 1 までの部分集合の数 S(n-1) に、その一つ前の n - 2 での部分集合の数 S(n-2) を加え、さらに 1 を加えた式

S(1) = 1
S(2) = 2
S(n) = S(n-1) + S(n-2) + 1 ( n > 2 )

で表されます。この漸化式に対して一般項を解けば、求めたい答えが得られます。

この漸化式は、フィボナッチ数列 F(1) = F(2) = 1, F(n) = F(n-1) + F(n-2) によく似ています。従って、フィボナッチ数列の一般項を求める方法を利用することができます。まず、数列 S(n) を xn の係数とする多項式 (これを母関数といいます) を F(x) とすると、

F(x) = S(1)x + S(2)x2 + S(3)x3 + S(4)x4 + ... + S(n)xn + ...

となります。これに S(n) = S(n-1) + S(n-2) + 1 を代入すると、

F(x)
= S(1)x + S(2)x2 + [ S(2) + S(1) + 1 ]x3 + [ S(3) + S(2) + 1 ]x4 + ... + [ S(n-1) + S(n-2) + 1 ]xn + ...
= S(1)x + S(2)x2
 + [ S(2)x3 + S(3)x4 + ... + S(n-1)xn + ... ]
 + [ S(1)x3 + S(2)x4 + ... + S(n-2)xn + ... ]
 + [ x3 + x4 + ... + xn + ... ]
= S(1)x + S(2)x2
 + x[ S(1)x + S(2)x2 + S(3)x3 + ... + S(n-1)xn-1 + ... ] - S(1)x2
 + x2[ S(1)x + S(2)x2 + ... + S(n-2)xn-2 + ... ]
 + x[ 1 + x + x2 + x3 + ... + xn-1 + ... ] - x - x2
= x + 2x2 + xF(x) - x2 + x2F(x) + xG(x) - x - x2
= xF(x) + x2F(x) + xG(x)

より

F(x) = xG(x) / ( 1 - x - x2 )

となります。但し、G(x) は初項 1、公比 x の等比級数です。G(x) は

G(x) = 1 + x + x2 + ...
xG(x) = x + x2 + x3 + ...

の両式を辺々引いて

( 1 - x )G(x) = 1 より G(x) = 1 / ( 1 - x )

と求めることができるので、これを代入すれば

F(x) = x / ( 1 - x )( 1 - x - x2 )

という結果が得られます。

次に得られた式を部分分数分解します。その前に、1 - x - x2 を因数分解するため

1 - x - x2 = ( 1 - ax )( 1 - bx )

とすると、(右辺) = 1 - ( a + b )x + abx2 より a + b = 1, ab = -1 となります。b = 1 - a を ab = -1 に代入して

a( 1 - a ) = -1 より a2 - a - 1 = 0

の解を求めると、二次方程式の解の公式から

a = ( 1 ± √5 ) / 2

となるので、a = ( 1 + √5 ) / 2, b = ( 1 - √5 ) / 2 とすれば

F(x) = x / ( 1 - x )( 1 - ax )( 1 - bx )

と表すことができます。これを

F(x) = A / ( 1 - ax ) + B / ( 1 - bx ) + C / ( 1 - x )

の形にすればいいので、この式をまた一つの分数に戻すと分子部分は

( 1 - bx )( 1 - x )A + ( 1 - ax )( 1 - x )B + ( 1 - ax )( 1 - bx )C
= [ 1 - ( b + 1 )x + bx2 ]A + [ 1 - ( a + 1 )x + ax2 ]B + [ 1 - ( a + b )x + abx2 ]C
= ( A + B + C ) - [ ( b + 1 )A + ( a + 1 )B + C ]x + ( bA + aB - C )x2

となって、これが x と恒等的に等しいならば

A + B + C = 0 --- (1)
( b + 1 )A + ( a + 1 )B + C = -1 --- (2)
bA + aB - C = 0 --- (3)

が成り立ちます。(1) + (3) より

( b + 1 )A + ( a + 1 )B = 0

なので、これを (2) に代入すれば C = -1 が得られ、これを (1) (3) に代入して

A + B = 1 --- (1')
bA + aB = -1 --- (2')

(1') x a - (2') より

( a - b )A = a + 1

よって A = ( a + 1 ) / ( a - b ) で、同様にして B = ( b + 1 ) / ( b - a ) です。a, b の値を代入して

A = ( 5 + 3√5 ) / 10, B = ( 5 - 3√5 ) / 10

となり、これで F(x) を部分関数分解することができました。個々の分数を見ると、これらは G(ax), G(bx), G(x) と等しく、

1 / ( 1 - ax ) = 1 + (ax) + (ax)2 + ...
1 / ( 1 - bx ) = 1 + (bx) + (bx)2 + ...
1 / ( 1 - x ) = 1 + x + x2 + ...

なので、

F(x)
= A[ 1 + (ax) + (ax)2 + ... ] + B[ 1 + (bx) + (bx)2 + ... ] - [ 1 + x + x2 + ... ]
= ( A + B + C ) + ( Aa + Bb - 1 )x + ( Aa2 + Bb2 - 1 )x2 + ...

と表せて、xn の係数は

Aan + Bbn - 1

となります。ところがこれは S(n) でもあることから

S(n) = Aan + Bbn - 1
= [ ( 5 + 3√5 ) / 10 ][ ( 1 + √5 ) / 2 ]n + [ ( 5 - 3√5 ) / 10 ][ ( 1 - √5 ) / 2 ]n - 1

になります。これで S(n) の一般項が得られました。

ちなみにフィボナッチ数列の一般項は

F(n) = ( 1 / √5 )[ ( 1 + √5 ) / 2 ]n - ( 1 / √5 )[ ( 1 - √5 ) / 2 ]n

でこれは「ビネの公式」と呼ばれています。ビネはこの公式を 1843 年に発表しましたが、それより 100 年以上も前の 1730 年にド・モアブルによってすでに発見されていたそうです。S(n) も F(n) も [ ( 1 ± √5 ) / 2 ]n を項に持っていますが、( 1 + √5 ) / 2 > 1 に対して | 1 - √5 | / 2 < 1 なので [ ( 1 - √5 ) / 2 ]n 項は n が大きくなると無視できるほど小さくなります。よって、n が十分大きければ、S(n) も F(n) も n が 1 増加するたびにほぼ ( 1 + √5 ) / 2 倍ずつ大きくなるようになります。

■ 参考文献

「はじめての数論」 Joseph H. Silverman 著
ISBN 978-4-62106-620-1  

Posted by fussy at 20:52Comments(0)TrackBack(0)数学

2014年06月07日

C++ メモランダム (ifstream)

相変わらず急に雨が降りだしたりして不安定な天気です。体の方もいまいち調子悪いです。

プログラムに渡すデータを標準入力とファイルの両方からに対応したい場合、C 言語で fopen 等を使う場合は

FILE* fp;
char* fileName;
  :
if ( fileName != NULL ) {
  if ( ( fp = fopen( fileName, "r" ) ) == NULL ) {
    fprintf( stderr, "can't open file %s.\n", fileName );
  }
} else {
  fp = stdin;
}

とすれば可能ですが、C++ で入力ストリームを使う場合

std::ifstream ifs;
string fileName;
  :
if ( ! fileName.empty() ) {
  ifs.open( fileName.c_str() );
  if ( ! ifs ) {
    std::cerr << "can't open file << fileName << std::endl;
  }
} else {
  ifs = std::cin;
}

とはできないんですよね。std::cin は std::ifstream の基底クラス std::istream なのでそのままでは代入ができないわけです。このときは、

std::ifstream* ifs;
string fileName;
  :
if ( ! fileName.empty() ) {
  ifs = new std::ifstream( fileName.c_str() );
  if ( ! *ifs ) {
    std::cerr << "can't open file << fileName << std::endl;
  }
} else {
  ifs = &( std::cin );
}

とポインタ (または参照) を使えば解決します。以前にも同じことで悩んで調べるハメになってしまったので、忘れないようにメモしておきます。  

2014年06月01日

熱中症

非常に暑い日が続いています。熱中症で病院に緊急搬送されるというようなニュースも多く見るようになりました。

今のところ、エアコンはまだ利用していない状態ですが、どのタイミングで使い始めるか、いつも悩みます。早くから冷房が効いた環境に慣れてしまうと、これからの本格的な暑さに耐えられなくなって逆に夏バテするのではないかと考え、できるだけ利用は控えようと思いつつ、限界を超えてしまい熱中症にでもなったら意味がないという気持ちもあって、どうしようかと考えているうちに何となく使い始めたというのがいつものパターンです。

昨年は、飼い犬のクッキーが腎臓病で入院した後、暑い場所をできるだけ避ける必要があって六月くらいから冷房を毎日使っていました。犬は発汗ができないので熱中症にもかかりやすいそうです。猫は暑さに強い生き物と言われているものの、最近は猫も熱中症にかかるとのこと。人間が体調を悪くするならペットも同じということですね。ペットたちにも充分注意を払っていきたいと思います。  

Posted by fussy at 20:38Comments(0)TrackBack(0)