馬場博史『国際バカロレアの数学 世界標準の高校数学とは』(松柏社, 2016)


4775402315多くの国で大学入学資格として認められている国際バカロレア(IB)資格。その取得に必要な能力のうちの数学について解説した一冊。その特徴は,①学際的であること,②グラフ電卓が必要であること,③試験中に公式集を参照できること,であろう。

1107628423①学際的であることは,第4章で紹介されている問題に,日本の大学入試ではあまり見ない応用数学の問題が多いことに表れている。必修要件の一つ,Theory of Knowledgeの参考書Decoding Theory of Knowledge翻訳が出るらしい)にも学際性を感じる。

②グラフ電卓に必要な機能と利用できる機種のリストは http://www.ibo.org/globalassets/publications/use-of-calculators-jp.pdf にある。数式処理システム(Computer Algebra System, CAS)の機能が不可というのはちょっと中途半端ではないだろうか(紙と鉛筆だけの日本を棚に上げて)。

今後,IB認定校になる学校の数学の教員は,グラフ電卓を自由に使いこなし,指導できるようになることが求められる。(p.195)

このあたりは時代とともに変わるはずだから,日本の高校教師には,もっと先を行ってCASを自由に使いこなせるようになることを求めたい。

公式集の日本語版を見ると,日本の高校数学よりも,少し範囲は広いようだが,そのあたりの詳細な比較があるとよかった。(日本の大学入試も,もう少し範囲を広くして,その分難易度を下げた方がいいと思う。)

細かいこと

  • Mathematical Exploration(試験とは別に課されるレポート)には,所属校の教員の能力が強く影響しそう。
  • (2次元ベクトルの外積が)C言語などでも使われている(p.123)というのはどういうことなのだろう。
  • 第4章で紹介されている問題(全41問)に類題が多すぎる。
  • 周期的な時系列データに関する問題(18, 21, 22, 24, 25, 26)で,a sin (b(t-p)) +qというモデルを何の検証もなく導入しているのはよくないと思う。より悪いモデルでも,何らかの検証がある方がマシだろう。(それを高校生に求めるつもりはない。問題があまりよくない気がする。)
  • 問題40は,x=p(1-p)とすればふつうの電卓でも解ける。
  • Further Mathematics HL(最高レベルの数学科目)の話題がもっとほしかった。

ミンスキー『計算機の数学的理論』


4000059416私が初めて計算機科学を学んだ『ファインマン計算機科学』では,ミンスキーの本に掲載されているチューリングマシンを使って計算の理論を解説していました。ファインマンは何でも自分で再発明してみるタイプだったそうなので(ファインマンさんの流儀),万能チューリングマシンも自分で構成したかもしれません。しかし,解説に使ったのはミンスキーのものでした。

われわれの議論は,ミンスキー[1967]の議論を念入りにたどっている。(p.56)

このミンスキー[1967]は Computation: Finite and Infinite Machines のことで,Amazonでは見つけにくいのですが『計算機の数学的理論』という翻訳があります。

4782800541ミンスキーと言えば『心の社会』が有名で,たとえば石田晴久先生は,『コンピュータの名著・古典100冊』新版あり)の中で次のように書かれています。

節の数は全部で262もある。(中略)この262節の中には修士論文や博士論文のタネがごろごろしているような感じがする。(p.81)

『計算機の数学的理論』にも,実は博士論文のタネが埋まっていて,私はかつて,それを拾って博士論文を書きました。(タネから芽が出たとは言いませんが。)

追悼:マーヴィン・ミンスキー。MIT人工知能研を設立したAI研究の先駆者

(インテルとAMDのCPUの)三角関数は不要


インテルとAMDのCPUには,三角関数を数値的に計算するための命令が備えられていますが,その結果は正しくありません。たとえば,CPUの命令FCOSの結果とstd::cosでソフトウェア的に計算した結果を比べると,後者の方が真の値に近くなります。

再現のためのコード(FCOSを使う部分だけインラインアセンブラを使っています。)

Core i5 6600とg++ 4.8.4で試した結果はこんな感じです。

x = 0.98233490762409514385
c1 = fcos(x)     = 0.55508189550073283591
c2 = std::cos(x) = 0.55508189550073294694
c  = mp::cos(x)  = 0.555081895500732891425063460345544265145531916268
abs(c - c1) = 5.5512e-17
abs(c - c2) = 5.551e-17

c1 is better: 0
c2 is better: 25
total: 100000

(その正しさをどうやって確かめるのかという問題はありますが)Boost.Multiprecisionで計算した結果と比較すると,命令`FCOS`より`std::cos`の方が正確なようです(Visual Studioの場合はまた違った結果になるようです)。

Pentiumが割り算を間違うといって大騒ぎになったことがありましたが(Pentium FDIV バグ),数値計算はどうせ近似値だからでしょうか,この問題は,ドキュメントに注意書きが追記されただけで,根本的な解決はされないままのようです。

おまけ:

結論:CUDAのcos,FCOS,gccのstd::cos(double)の順に正確になります。もちろん,gccのcos(long double), gccのcos(__float128), boost/multiprecisionは,さらに正確です。

JavaではMath.cosとStrictMath.cosがどっちもどっちだったり,数値計算は難しいです。

参考:サイン、コサインをインテルの CPU で計算すると少しバグっているらしい

30th ANNIVERSARY ドラゴンボール 超史集


4087925056古印体ではじまるマンガ『ドラゴンボール』,公式発売日前にジャンプを売ってくれる店を探して行くほど好きでした(インターネットのない時代)。高校入試の試験当日,真冬の早朝に,発売前のジャンプを家に持ってきてくれた友人の優しさは忘れませんが,肝心の内容はほとんど忘れました。フリーザを倒した後は特に。『30th ANNIVERSARY ドラゴンボール 超史集』に掲載されている最終回を見ると,一応最後まで読んだことは思い出すのですが。

至高の靴職人


4093883912竹川 圭『至高の靴職人 関信義 手業とその継承に人生を捧げた男がいた』(小学館, 2014)

こんな話を知っているか。むかし,ヨーロッパのどっかの国でベントレーが盗まれた。もち主は泥棒に広告を打とうと思い立つ。酔狂なやつだな。が,やつが本領を発揮するのはこっからだ。その広告はなんと,クルマはくれてやるから,トランクに入っていたジョン・ロブの靴だけは返してくれって内容だったんだ。ロブっていや,紳士靴の一等賞っていわれるブランドだわな。それにしたって,ベントレー以上の価値をみとめさせたってのはちょっとすごい。

これが実際にあった話かどうかなんてのは問題じゃないんだ。

おれもそういう靴がつくりたい。客にぎゅっと両手で抱きしめてもらえたら最高だね。それにはいまもって努力が必要だ(p.180)