スキップしてメイン コンテンツに移動

フェルマーの最終定理 サイモン・シン, 青木 薫 新潮社










■紹介 
自然界の摂理を説明し、人間の知恵が詰まった定理を解く。 
数学は厳格であり、美しい学問だと言うことを、 
フェルマーの最終定理を用いて証明してくれる。 

著者(サイモン・シン)がTVディレクターということもあるのだろうが、 
一場面一場面がうまく構成されていて、 
全体としてうねるように展開されていくのがうまい。 
テレビと同じく、一度惹きつけられると離れるのが難しい。 

■抜粋(●は簡略抜粋) 
●ライフサイクルは素数のセミ(P.169-170) 
 十三年ゼミ、十七年ゼミと呼ばれるセミがいるらしい。 
 なぜ素数なのだろうかと言う問いに、 
 寄生虫との同時発生を避ける最良の策と解がなる。 
 寄生虫が仮に二年単位に発生するとしたら、 
 十七年ゼミと同時に発生するのは三十四年に一回なのだから。 

●天文学者、物理学者、数学者の厳密性(P.218) 
 天文学者と物理学者と数学者がスコットランドで休暇を過ごしている。 
 列車からふと窓を眺めるとなんとそこには一匹の黒い羊が。 
 天文学者はこれを見て、 
 「これはおもしろい。スコットランドの羊は黒いのだ」 
 物理学者はそれに対しこう応じ、 
 「何を言うか、スコットランドの羊の中には黒いものがいるということじゃないか」 
 数学者は天を仰ぐと、歌うようにこう言った。 
 「スコットランドには少なくとも一つの原っぱが存在し、 
  その原っぱには少なくとも一頭の羊が含まれて、 
  その羊の少なくとも一方の面は黒いということさ」 

○指導教官にできることは、 
 その学生が向いていそうな分野に導いてやることぐらいでしょう。(P.261) 

○問題に本格的に乗り出すには十年はかかるだろうと考えていたワイルズにとって、 
 一年半ぐらいはまだ小さな投資だった。(P.322) 

○大事なのは、どれだけ考え抜けるかです。 
 考えをはっきりさせようと紙に書く人もいますが、 
 それは必ずしも必要ではありません。 
 とくに、袋小路に入り込んでしまったり、 
 未解決の問題にぶつかったりしたときには、 
 定石になったような考え方は何の役にも立たないのです。 
 新しいアイディアにたどりつくためには、 
 長時間とてつもない集中力で問題に向かわなければならない。 
 その問題以外のことを考えてはいけない。 
 ただそれだけを考えるのです。 
 それから集中を解く。 
 すると、ふっとリラックスした瞬間が訪れます。 
 そのとき潜在意識が働いて、新しい洞察が得られるのです。(P.323)

コメント

このブログの人気の投稿

間違ったフォーマットのプログラムじゃないんだけど

以下エラーに対し、 ファイルまたはアセンブリ 'SSPI'、またはその依存関係の 1 つが読み込めませんでした。間違ったフォーマットのプログラムを読み込もうとしました。 以下環境で対応した話です。 VisualStudio2012(C# ASP.NET MVC4.0) IIS7.5 とあるところのdllを使用中 ASP.NETをIISに発行しようとしたら、上記エラーが発生。 他のプロジェクトでは問題なく発行できているのに、 何かと思ってみたら、google先生に尋ねてみると、 DLLファイルの対象プラットフォーム(32bit/64bit)が異なる とのことでした。 このサイトでは対処方法として、 運用環境のプラットフォームに合わせ、適切なランタイムファイルを配布してください。 と記載されていますが、今回の私のようにとあるところのdllを使用している場合などは、 そうもいかない場合もあるでしょう。 そこでdllを変更できない場合には、 IISのアプリケーションプールの設定で、 32bitアプリケーションを有効化してあげることで対応できます。 以下手順です。 コントロールパネル → 管理ツール → インターネット インフォメーション サービス (IIS) マネージャー を起動します。 変更したいアプリケーションを右クリックして、詳細設定を選択します。 32ビットアプリケーションの有効化をTrueに変更します。 もう一度発行します。 ここまでです。 簡単だけど知らないとなかなかはまるかなって気がしますね。 独特のくせなのかもしれません。 そして、次なるエラー発生中です・・・。

SQLServer2008でのトランザクションログの切り捨て方

SQL Server 2008でとあるDBのトランザクションログが一杯に。 BACKUP LOG DatabaseName WITH TRUNCATE_ONLY を使ってトランケートしようとしたら、 'TRUNCATE_ONLY' はBACKUP オプションとして認識されません。 との冷たい返事。2008で廃止されていたのを忘れていた。 SQL Server 2008 で廃止されたデータベース エンジンの機能@MSDN そこでヌルデバイスを使用してバックアップを取得する方法で、切り捨てを試みる。 BACKUP LOG DatabaseName TO DISK = ‘nul’ GO するとまた冷たい返事。 現在、データベースのバックアップが存在しないので、BACKUP LOG を実行できません。 2008では過去にフルバックアップを取得しておかないと、ランザクションのバックアップが取得できないことを忘れてた。てなわけで、まずはデータベースのフルバックアップを取得して、 BACKUP DATABASE DatabaseName TO DISK = ‘nul’ GO もう一度トランザクションのバックアップをして、やっと切り捨てれた。最初から単純にしておけばよかった・・・。

並列化できない非同期の話

あるバッチ処理で顧客にメール送信する場面ありますよね。そんなとき、メール送信はメールサーバに投げ込むだけなんだから、投げ込むの非同期すりゃ早くなるんじゃないって思いませんでした? 思いますよね? そんなことを考えて、C# で SmtpClinet を使ったお話です。ちなみに結論的に非同期で早くなりません。 SmtpClient.SendAsync C# でメール送信するなら、SmtpCilent クラスってのがありますと。こいつが同期でメール送信する Send だけではなく、非同期でメール送信する SendAsync ってのを持っているわけですよ。 MSDN を参照すると、 指定した電子メール メッセージを、配信用 SMTP サーバーに送信します。 このメソッドは、呼び出し元のスレッドをブロックしません。また、呼び出し元は、操作の完了時に呼び出されるメソッドにオブジェクトを渡すことができます。 とのこと。非常に Good ですね! 少しの背景と過大な期待 背景として、すでに動いているバッチが遅いって話になって、性能改善に取り組んでいました。現存しているバッチは Send で動作しています。 てことは、 SendAsync にするだけいいんじゃないの?それだけ非同期になるから早くなっちゃうんじゃないの?こんな期待感でいっぱいでした。 ところが 修正して実行すると想定以上の時間で完了しました。でもメールが飛んできません。。。よくよく見ると例外が。。。そしてよくよく MSDN を見ると、 SendAsync を呼び出した後、Send または SendAsync を使用して別の電子メール メッセージを送信する前に、電子メールの伝送が完了するまで待機する必要があります。 とのこと。 これって結局メール送信は非同期で並列になることことを許容していないってことだったんですね。 非同期と並列処理は別ですが、とは言え並列処理を許容していないとは。。。 結局 今回は Parallel.Foreach を使って、メール送信箇所は並列処理するように書き直しました。これもお手軽ですね。