担当授業のこととか,なんかそういった話題。

主に自分の身の回りのことと担当講義に関する話題。時々,寒いギャグ。

プライム教布教活動メモ。

2023-05-05 23:43:09 | mathematics
William Prager という連続体の物理学の研究者(おそらく大家といってよいのではなかろうか)が 1961 年に出版した "Introduction to Mechanics of Continua" は 1980 年に共立全書の一冊として日本語訳が出された。

訳書の 6 ページの中ほどに,「ダッシュのついた座標とダッシュのない座標」という言い回しにひっかかり,先を読めなくなってしまった。

残念ながら手元に原書があるわけではないのだが,幸いなことに Dover 版を Google Books で一部閲覧できた

それによると,ちょうど原著 7 ページの末尾あたりが該当箇所であるが,"the primed and unprimed coordinates" とある。

もっとも,それが 1961 年当時の記述そのままかどうかは保証の限りではない。Google Books の Dover 版は 2004 年に発行されたものらしいからである。

なお,Birkhäuzer から 1961 年に出たドイツ語版では英語版と同じく 7 ページの下の方に "der gestrichenen und ungestrichenen Systeme" とある。

訳は「プライム」で良いはずであるが,日本で当時広く使われていた「ダッシュ」をわざわざ訳語として採用した訳者の配慮は理解できるものの,それから 43 年も経った令和の現在であっても高校数学の教育現場で未だに「ダッシュ」と教えているのかと思うといたたまれない。

通常の用法とはずれているであろうが,私はこの現象を「ガラパゴス化」と呼びたい。

かつてコンピュータ上で動作するプログラムを「ソフトウェア」,略して「ソフト」と呼んでいたのが,スマホの普及とともに「アプリ」(アプリケーションの略であろう)という呼び方に取って代わられてしまった。このフットワークの軽さというか,腰の軽さを教育現場でも発揮できないものだろうか。記号の読み方をわざわざ記している教科書は少なく,口伝で継承されてしまうため,改変は非常に難しいのだろうか。

いや,今のご時勢ならばむしろ数学解説系人気 YouTuber が「プライム」と連呼していればより若い世代に浸透しそうな気がする。
こう考えれば未来は明るいといえるのかもしれない。

余談であるが,古くはソフトウェアに「紙物」,ハードウェアに「金物」という訳語を充てようという試みがみられたのだが,それらは定着せずに終わったようで,今では古文書でしかお目にかからない。

言葉というのは我々ヒトにとってコミュニケーションの根幹にかかわるものだけに,小うるさいことをネチネチ言い続けると人々の機嫌を大きく損なう恐れがあるのだが,私はせめて自分の担当授業の中ではプライム教を布教し続けていく覚悟である。

ビー・ダッシュなんて読んだら,加速してどっかに飛んで行っちゃいそうでしょ?

え,ファミコンゲームの B ボタンダッシュをご存じない・・・?

こりゃまた失礼いたしました~!(© 植木等)
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

A parent function.

2023-05-04 03:46:43 | mathematics
奥村晴彦さんの『LaTeX 2e 美文書作成入門 改訂版』(2000 年)あたりだったか,JIS では例えば数学の定数である自然対数の底(Naipier の数)e はイタリック体ではなくローマン体で記すといった情報が載っているのを見て強い違和感,より率直に言えば「なんじゃそりゃ」と反感を覚えた記憶がある。当時,敬愛する研究室の先輩との話の中でもそんな話題が出たような気がする。

それから 20 年以上経過した昨年,ふとそんな話を思い出してネットでググってみたら,そもそもの元凶(?)は ISO であることを知った。あれから歳を重ねて丸くなった(体型も髪型も)のか,もともと権威に弱い性質のせいか,たまたま交流を持つようになった物理の M 先生から伺った SI 単位系の話題もタイムリーにあいまって,なるべく ISO に沿った数式の記述を心掛けるようになった。

とはいえ,行列を太字のイタリック体(ないしは斜体)で書くのは実はまだ心理的抵抗が大きくて ISO に染まり切れていない。M 先生の情報によれば,化学分野では IUPAC という組織が昔から単位や数学記号の記法について細かい取り決めを出版しており,化学学会では統制がとれているようだとのことであった。

現在ではいろいろな文書がインターネット経由で無償で手に入る。そんなありがたいサービスの一つに J Stage があるが,そこでは『日本物理学会誌』や『大学の物理教育』といった種々の学会の機関誌のバックナンバーが(ある程度古いものであれば)学会の会員でなくとも,J Stage に登録してなくとも手軽に閲覧できる。おかげで大量の日本語で読める興味深い記事にたくさん出会えているが,単位の書き方に関連した記事を検索している中で,2023 年 3 月の『日本物理学会誌』に「きちんと単位を書きましょう」と題する記事を発見した。

ところがこれはさすがにまだ公開期間前のもののため,旧友の gk 氏の研究室に突撃してこちらの思惑通りに記事を閲覧することに成功した。それは東京化学同人から出ている中田宗隆,藤井賢一両氏による共著の書評であった。さっそくとある図書館で借りることにした。その図書館に件の『日本物理学会誌』も雑誌コーナーに並んでいたので,gk 氏のリモート会議の邪魔をせずとも済んだようだったのは,また別の話である。

『きち単』(同書の表紙に,どこかで聞いたことのあるような略称(愛称?)がこう記されていたので,使わせていただく)の内容で私が最も関心を抱くのは第 2 章の「数学記号の書き方」である。それは実は国際単位系 (SI) とは無関係な部分であって,IUPAC の Green Book と呼ばれる冊子の第 4 章ないしは ISO 80000-2:2019 の内容である。そしてここは肝心なところであるが,『きち単』では「~と書いてはならない」とか「~とは書かない」といった厳しい表現が目に付くが,IUPAC の Green Book であっても "recommended" (おすすめの,望ましい,藤井氏も訳者の一人として参加されている Green Book の日本語版では「推奨されるている」と訳されている)であって,何が何でもそれに従わなければならない決定事項といった強制力は感じられないことである。こういった側面が同書を手に取るであろう初学者に誤解されるのではないかと気がかりである。もっとも,私は化学に関してはずぶの素人であって,主要な学会や論文誌の投稿規定でむしろ遵守すべき厳然たるルールとして採用されているというのなら,「こう書かなければならない」といった表現の方が妥当であろう。

ちなみに,個人的には偏微分演算子である ∂ はイタリック体というか斜体というか,それがデフォルトであって,しかもこの文字はそもそも演算子(作用素)としか使われないように思われるので,無理に立体にしなくともよいのではないかという気がしている。その点はギリシャ文字の π や δ とは事情が異なり,これらは円周率という数学定数もしくは Kronecker のデルタや Dirac のデルタ関数,変分演算子等を表す際には立体で,平面のラベルやとある正の実数などを表す際には斜体で記すといった,役割に応じて使い分けることにすれば,みだりに新しい文字を消費する必要がなくなって便利である。∂ に関しては Green Book を見てもどういう扱いなのか私にははっきりとは分からなかった。同種の演算子である d, D と同様の扱いで立体にするという解釈が常識的であろうが,ISO でどうなっているのかも確認する機会をもちたいところである。

こんな風に批判めいたことを書いておいてなんだが,今では LaTeX で立体の ∂ を実現するのは容易なようなので,使用を前向きに検討する所存である。

さて,前置きが長くなりすぎたが,ここらでようやく本題に入ろう。

それは逆三角関数の記号を解説した Green Book の記述で,"parent function" という語句を目にしたことである。

これは私にとって初めての術語であった。日本語訳ではそのまま「親関数」と訳されている。

私が授業で逆関数を取り上げる際,「元の関数」という言い回しを用いていた。それに対し,「親関数」という用語は新鮮に感じるせいかわずかに簡潔で使いやすいような気がする。

英語圏でどれくらい浸透している用語なのか気になって "parent function 意味" で検索したところ,Yahoo! 知恵袋でこの語句の意味を質問している人がおり,それに対する回答は導関数の逆の概念である原始関数,もしくは逆微分のことであるというものだった。

実際にそういう意味でも使われているのかもしれないが,それならば普通に antiderivative だの primitive function だのという用語で済む話であって,parent function という用語は必要ない気がする。そこで "parent function inverse function" というキーワードで検索し直したところ,YouTube の解説動画を始め,まさに逆関数の文脈で parent function が使われているらしい証拠を複数見出すことが出来た。

知恵袋の質問では言葉の意味を聞く質問だけが記されており,どういった文脈で現れた用語なのか背景が全く記されていないためこれ以上の詮索はしようがないが,逆関数の単元にしろ,不定積分の単元にしろ,対となる概念と共に使用されているはずであるから,文脈から何らかの意味での「元の関数」であるという当たりがついたのではないかと思わなくもない。"Parent" というからには何がしかの「子」があっての話であり,その「子」が逆関数ならば元の関数,導関数ならば微分する前の関数が「親」に当たるわけである。

導関数と対になるのは「原始関数」や「不定積分」といった用語が用意されているので,私はこの文脈で親関数という言葉を導入するつもりはない。

けれども,逆関数の対になる用語は「元の関数」くらいしか思いつかないので,敢えて「原関数」だの「元関数」だのという聞きなれない独自の用語を導入するのは気が引ける。ちなみに,前者も後者も音読みするならば「げんかんすう」であるが,前者は原始関数と紛らわしいのでできれば避けたい。後者は「元の関数」を縮めた表現とも取れるので,「もとかんすう」と読むと柔らかい印象になるが,それなら「おやかんすう」にしても良いかなという気がしている。

蛇足であるが,『きく単』では逆正弦関数 arcsin を sin-1 と書いてはならない,なぜならば sin という記号は関数の名称であって,その逆数なるものは存在しないから,といった説明がなされているが,乗法の逆元としての -1 であるというよりは,逆写像や逆演算子を表す -1 であろうから,私にとっては不思議な気持ちになる説明であった。そもそも一般の関数 f について(それが逆関数を持つとして)その逆関数を表すのに f-1 と記すのが数学では伝統的かつ標準的な記法なのであるから,これを「関数 f の逆数」などと言われては困ってしまうのである。逆数と紛らわしいと言う指摘であるとみればそれはもっともであるが,逆関数を表すのに例えばわざわざ inv(f) などと書くのはものものしすぎて気が進まない。

ISO では一般の関数 f の逆関数をどう表すのか調べてみないといけないが,私の知る限り逆三角関数などの「名前持ち」の関数については arcsin と書かれるのみであって,sin-1 という表記は一切なかったようである。sin-1 と書いてはならない,という注意書きすら無かったと思う。完全にアウトオブ眼中ということなのであろう。

最後にもう一つ。ISO の組み合わせの数(二項係数)の表記を見てびっくり仰天したことがある。日本では高校で nCk という記号で「n 個の異なるものから k 個を取り出す組合せの数」を表すと習うが,ISO ではこれを Cnk と書くと記されていた。全体の個数 n と部分の個数 k の上下が逆なのではないかと誤植を疑ったが,とあるフランスの有名な組合せ論の本 (Claude Berge の本)を確認したところ,組合せの数を表すのに,縦書きベクトル型の,上に n, 下に k の記法が用いられていたが,順列の記法として Pnk が用いられていた。

場合の数の比としての分数を想起すれば,全体の数 n は分母で下に,部分の数 k は分子で上に書きたい気持ちは分からなくはない。

ところが,Green Book では Cnk とあって再びびっくらこいた。これはまさしく私が最も恐れていた事態に他ならない。

フランスで本当に Cnk が用いられているのか気になって検索しようとしたところ,英語版の Wikipedia の "Combination" の項目に Ckn と Cnk のどちらの流儀もあって,後者はフランス,ルーマニア,ロシア,中国,そしてポーランドのテキストでは標準的だと記されていた。

組合せ論の論文は目にしたことがないが,もしその方面で論文を書く機会があれば,C 表記は避けて縦書きベクトル風の記法を用いるのが無難であろう。

話がとっちらかって収拾がつかなくなったついでにもう一つ。

国際単位系 (SI) では真空の誘電率と真空の透磁率はそれぞれ電気定数,磁気定数としても知られる (as known as) と書かれているので,どちらを用いても問題ないであろうが,前者をメインとして使用するのか,後者をメインとするのか,どちらが良いのだろうか。

どちらを用いても良いらしいわけであるから実にどうでもよい疑問であるが,私は教条主義というかなんというか,アタマがカチコチに硬い傾向のパーソナリティの持ち主でもあるので,どちらか一方に心を定めたい思いが募ってならないのである。

最新の SI では

真空の誘電率(電気定数)
真空の透磁率(磁気定数)

という表記が見られるので,私としては「真空の」派に組したい。それはもしかすると物理派ということかもしれない。

IUPAC の Green Book 第 3 版では逆に

電気定数(真空の誘電率)
磁気定数(真空の透磁率)

といった扱いである。SI 第 9 版は 2019 年,Green Book の第 3 版第 2 刷は 2012 年であるから,SI 第 8 版が鍵を握っているのかもしれない。『きち単』はどうも Green Book を根底に据え,それに SI の最新版を取り込んでできているようなので,「定数」派である。それはもしかすると化学派ということかもしれない。

話題があちこちとんでしまったので最後にまとめというか,教訓というか,私が今後どうするつもりかという宣言を記しておく。

・逆関数を考える元の関数を「親関数」と呼ぶことにする。
・逆三角関数は極力 arcsin, arccos などの名称を用いる。(ただしこれは授業の指定教科書との兼ね合いもあるため,さっそくそうするかどうか迷っている。言い訳がましいが,私はもともと arc 派であった。その後,教科書の表記に合わせる方が学生にとっては負担が少ないと考え,sin-1 に宗旨替えしたという歴史がある。)
・偏微分演算子の ∂ は立体を使うことにする。
・組合せの数は縦書きベクトル風表記を使う。(これはすでに概ね実施しているが,担当科目ではめったに使用しないし,日本では高校数学との兼ね合いもあるので,ほどほどにしている。)
・電磁気学で用いられる物理定数(不確かさを含む実測値)の μ0 と ε0 の名称としては,それぞれ真空の透磁率,真空の誘電率を推す。

どうも選挙と同じで,現状に不満があるなら自分で教科書を書くほかなさそうである。日本の高校数学の検定教科書風の,薄くてあっさりテイストの微積の教科書くらいならそんなにしんどくないかなぁ。工学系の学生向けに,一周目ないしは二周目の「数 IV 方式」(©前原昭二先生?)版で実現する方向で検討してみるとしよう。本当に書きたいのは高校数学風に言えば教科書ではなくて参考書なんだけどねぇ。昔の大学風ならば教科書こそ分厚くて何でも書いてあるという,一家に一冊あれば孫子の代まで使える treatise なのではあるが。日本に限って言えば,藤原松三郎氏の『微分積分学』,杉浦光夫氏の『解析入門』がそれにあたる。そういえばほとんど中身は見ていないが,金子晃氏の『微分積分』は二冊本+演習書アリのかなり重厚なテキストのようなので,休み明けに覚えていたら見てみよう。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Simpson 則で数値積分。

2023-05-03 22:38:46 | mathematics
世間並みに,いや,それ以上に GW な日々を過ごしている。ところによっては 5 月 1 日と 2 日は平日扱いであったろうが,私はその 2 日間が休みになっただけでなく,週末の 6 日も併せてまるっと一週間,否,期間の両端の日曜日を含めれば実に 8 日間もお休みという,名実ともにゴールデンなウィークを享受している。

私は GW が始まる前から寝正月ならぬ寝ゴルウィクを過ごすと心に決めており,今のところその計画は順調に実施できている。

とはいえさすがに起きている時間がないわけではないので,森口繁一,伊理正夫,武市正人編『Full BASIC による算法通論』(東京大学出版会)に掲げられたお題で,私にもできそうなものに手を付けて見ることにした。

この本は 1991 年に出版されたもので,「まえがき」によると東京大学教養学部の第 4 学期に,工学部へ進学予定の学生向けに開講された科目「算法通論」のための教科書として作成されたとある。

主要コンテンツは第 I 部と第 II 部で,合わせるとちょうど 15 週分の授業内容になっている。今でも東大は 1 学期の授業週が 15 週なのかどうか知らないのだが,かつての 90 分授業ではなく,1 コマ 100 分で 14 週という流行りの授業形態だとそのまま使用するわけにはいかず,アレンジが必須となる。

それはさておき,かねてよりとある連立微分方程式の数値趣味レーションをするのに,Euler 法を卒業して Runge-Kutta 法に鞍替えしようと願っていたが,ウォーミングアップに定積分の数値計算法の一つである Simpson 則で腕試しをしようと,この書の § 6 関数,6.0 数値積分法に目を付けた次第である。

ところが,この本はどうやら森口先生の『JIS FORTRAN 入門 [上]』第 3 版が手元にないとどうにも使いづらい仕様になっている。そちらのテキストの例題の Full BASIC 版のプログラムを『算法通論』の方で例題として示しているからである。そのため,例題でどのような関数の数値積分を行うかはプログラムを読まないと分からないようになっており,仕方がないので自分で勝手に関数をでっち上げてその近似計算を行うことにした。

使用する処理系はもちろん白石和夫先生の十進 BASIC である。久々なのでバージョンアップしていないか公式サイトを見に行ったら,案の定手持ちのもの (7.8.5.4) より新しいバージョン  (7.8.6.4) がリリースされていた。

さっそくインストーラなしの ZIP ファイルをダウンロードして展開し,BASIC を立ち上げてヘルプで関数定義の仕方を確認しようとしたところ,目次は表示されるものの肝心の本文が表示されない。

公式サイトに記されたトラブルシューティングを参考に,解凍したフォルダ内の BASIC.chm をダブルクリックして「常に確認する」のチェックを外し,一旦ヘルプと BASIC 本体を閉じて再度 BASIC を立ち上げ直したらヘルプの本文も無事に表示されるようになった。わーい!

今回のプロジェクトの主眼は,『算法通論』に記された Simpson 則の公式の捉え方があっているかどうかの検証である。そこには,和の最初の 3 項と,最後の 4 項が記されているが,中間の一般項がどのような規則で定められているのか,自分で類推するしかない。どうやら区間の両端の f(a) と f(b) は重み 1 で,区間の分割数 n は偶数とし,区間の両端をそれぞれ第 0 項と第 n 項とすると,中間の項のうち,奇数項は重み 4 で,偶数項は重み 2 で足し合わせるらしい。

今現在,私の身の回りには数値積分の公式が記載されている書籍が何冊かあるし,ネットで検索しても山ほどヒットするだろうが,この類推があっているかどうかを,結果が分かっている定積分で検証してしまおうというワケである。

せっかくなので円周率でも求めようと思い,1/(1+x^2) の不定積分が arctan(x) であることを利用することにした。
今この瞬間にようやく気付いたことであるが,0 から 1 までの積分が円周率の 4 分の 1 であるから,すべてが有理数の範囲内で済む話であるが,休みボケのせいか,1/√3 から √3 までの積分を使おうとしており,そうすると無理数の √3 があちこちに出てきてヤダなと日和り,スケール変換をして √3 を一回だけ乗じる形に書き換えた形で計算することにした。この記事を書き終えたら区間 [0,1] での積分にソッコーで直そう・・・。

拙いソースコードは以下の通りである。
初めは分点の個数を 2^10=1024 個で様子を見たのだが,調子が良さそうだったのでお気楽に 2^20 個に増やして実行したら結果が出るまでしばらく待たされた。
単純に考えて,1000 倍の手間が掛かることになったわけだから,計算時間は 1000 倍になったはずである。しかも分点を増やした方が精度が下がるという現象まで起きる始末であった。

原因は私にはさっぱりわからないが,きっとデフォルトの桁数では 2^20 では細かすぎて却って精度が落ちたのだと考え,十進 BASIC の便利機能の一つである 1000 桁モードに変更して実行し直してみた。

ついでに,ヘルプを参照して TIME 関数を応用した実行時間の計測も行うこととした。

参考までに,1000 桁モードで n=2^10 としたときの実行時間は 0.3 秒だったのに対し,n=2^20 だと 39.5 秒かかった。1000 倍になるという理屈は当たらずとも遠からずである。
十進 BASIC の組み込み定数としての PI の値と比較すると,小数点以下 24 桁までしか合っていない。

実はこっそり区間 [0,1] 版に変えてみたのだが,n=2^20 で実行時間が 60.46 秒で,小数点以下 35 桁くらいまでは合っているようだった。

誤差が大きいのか小さいのか私にはまるで見当が付かない。『算法通論』には理論的に予想される誤差の表式も与えられているが,使用した関数の 3 次導関数もしくは 4 次関数を必要とするため,ちょっとやる気が起きない。ただ,今回使用した f(x)=1/(3+x^2) ないしは f(x)=1/(1+x^2) は導関数の漸化式を作れば要領よく計算できそうなので,そういった方面からの検証もよい演習になりそうである。

ちなみに,答え合わせ(?)として『通論』のプログラムを見てみると,私のものよりうんと洗練されたプロの香りが強く漂う(その道の大家である森口先生やそのお弟子さんの手になるものであろうから,こんな感想を述べる事すら恐れ多いことであるが)。

ちらっと頭をよぎったことではあるが,和の中間項はやはり奇数項と偶数項をセットにして足し合わせるのね。そして第 n-1 項と第 n 項は最後に別で処理するわけね。
お手本を参考に手直しすれば実行時間が短くなる可能性を感じる。伝説の大先生方の胸をお借りして改良しようと思う。

というわけで,プログラム名に "draft" という釈明を忍ばせておいた。

REM Simpson's Rule [draft]
LET t0=TIME
DEF f(x)=1/(3+x^2)
LET n=2^20
LET a=1
LET b=3
LET h=(b-a)/n
LET S=f(a)
FOR k=1 TO n-1
   LET p=MOD(k,2)
   LET a=a+h
   LET S=S+(2+2*p)*f(a)
NEXT k 
LET S=S+f(b)
PRINT S*h/3
PRINT 2*SQR(3)*S*h
PRINT PI
PRINT TIME-t0;"秒かかりますた。"
END


[付記:2023 年 5 月 5 日]
戸川隼人『数値計算』(情報処理入門コース7,岩波書店,1991 年)8-2 では Simpson 則(シンプソンの公式と呼んでいる)をより一般的な Newton-Cotes の公式の特別な例として取り上げている。そこでは計算例として f(x)=4/(1+x2) の区間 [0,1] における定積分が挙げられており,あらかじめ関数 f(x) の分子に 4 を掛けておくという実にもっともな取り扱いがなされていた。

上記の私の拙いプログラムをそのように修正して末尾の PRINT 文のうち不要になったものを省いて 1000 桁計算したところ,59.92 秒で小数第 37 位まで正確な数値を得た。分点はもちろん 220 のままである。

戸川氏の本ではプログラム例は FOTRAN で示されているので,一応それも学んだ上で,拙プログラムを改良するのに参考になる点があれば取り入れたいと思う。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする