2022年12月6日火曜日

ChatGPT(5)

ChatGPT(4)からの続き

この段階のChatGPTにあまりケチをつけても仕方がないのだけれど,記録のために若干の事例を残しておく。それは,教育用対話ツールとしての利用の可能性を探るという観点からだ。小学校の理科と算数で試した記録だ。

Q:小学校5年生の理科の単元で振り子の実験があります。重さがmのおもりに長さLの糸をつけてその一端を固定し,振り子(おもり)を振れ幅θで振らせるのです。その一往復の時間を振り子の周期といいます。振り子の周期は,おもりの重さ,糸の長さ,振り子の振れ幅のどの量によって決まるのか,小学生にわかるような言葉で説明してください。

A:振り子の周期は、おもりの重さ、糸の長さ、おもりが振れる幅によって決まります。重さが大きいほど、振り子が振るのに時間がかかります。また、糸が長いほど、振り子が振るのに時間がかかります。さらに、振り子が大きく振れる幅が広いほど、振り子が振るのに時間がかかります。したがって、振り子の周期は、おもりの重さ、糸の
長さ、振り子が振れる幅の3つの量が全て合わさって決まります。
 
Q:分数の割り算では,割られる分数に,割る分数の逆数をかけた掛け算を計算すればよいのですが,このわけが小学生にでも解るように説明してください。

A:分数の割り算は少し特殊です。通常の整数の割り算とは異なり,分子(割られる数)を分母(割る数)で割ることではなく,分母を分子で割る必要があります。

例えば,分数の2/3を分数の1/4で割りたい場合,通常の整数の割り算のように2を4で割ることはできません。その代わりに,1/4を分数の2/3で割ることができます。このように,分数の割り算では割られる数と割る数を入れ替え,逆数を求める必要があります。

具体的には,2/3を1/4で割る場合,次のように計算します。まず,分数の1/4の逆数は4/1です。つまり,2/3を4/1で割ることになります。通常の整数の割り算と同様に,分子と分母を掛け合わせることで,2/3を4/1で割ることができます。その結果,2/3を1/4で割ることができます。

まとめると,分数の割り算では,割られる分数に,割る分数の逆数をかけた掛け算を計算することで,分数の割り算を行うことができます。
質問部のていねいな導入があだになって,答えがわけのわからないことになっている。このあたりは,ChatGPTの事前学習に使うデータの選択だけでは解決しないのかもしれない。OpenAIではなく,GoogleのPathwaysをベースにしたMinervaだと,小学生レベルの算数問題のデータセットGSM8kの正答率は78.5%,高校と大学レベルの工学,化学,数学,物理学などの問題からなるデータセットMMLU-STEMの正答率は75.0%らしいので,まだ将来は明るいというかなんというか。

2022年12月5日月曜日

ChatGPT(4)

ChatGPT(3)からの続き

ChatGPTは,学習段階では2021年までの様々なテキストを読み込んでいるとして,対話段階で直接ネットの情報を直接参照することがないようだ。そのため,細かな事実関係には嘘がけっこう混入している。ところが口がうまくて極めて巧みにディフェンスする小役人的な答弁をするので,危うく騙されそうになるから本当に困ってしまう。たぶん当該分野の背景知識がなければアウトだ。まあ人間の信頼度の場合と大きく変わらないのかもしれない。

これをベースにして,問題解決システムのミネルバなどと組み合わせれば,もう少しでメタバースという言葉の生みの親であるニール・スティーブンソンダイヤモンド・エイジにでてくる教育用人工知能読本プリマーに手が届く。教育関係者は,プログラミング教育やGIGAスクール構想にうつつを抜かしている場合でなく,こぞって教育用AI対話システムのデザインと応用とさらに派生する問題の洗い出しに注力すべきだろう。

教育用AI対話システムの鍵は,このシステムがStableDiffusionの場合のようにオープンソースで無料開放されるかどうかにかかっているかもしれない。そうでなければ,これまでの多くの教育用ソフトウェア・スイートの二の枚になるだけだ。開放されて誰もが自由に開発や利用ができるとともに,その分散ネットワークをうまく制御しながら構築できた場合,今の教育産業や公教育の在り方がまるっきり違ったものに変質してしまう可能性がある。

2022年12月4日日曜日

ChatGPT(3)

ChatGPT(2)からの続き

そもそも対話型大規模言語モデルのChatGPTにどんな種類の仕事ができるかというのが,QiitaのChatGPT使い方総まとめに整理されている。
・質問-応答(〜について教えて)
・要約(以下の文章を要約して)
・Wikipedia風記事作成(〜について説明するWikipedia風の記事を出力して)
・リストからの文章化(以下を文章化して)
・タスクリスト作成(以下をタスク化して)
・スケジュール作成(この間のスケジュールを30分刻みで提示して)
・コード生成(xxするyyの関数を出力して)
・コードのドキュメント生成(以下の関数のドキュメントをxx形式で出力して)
などである。さて,今回は ChatGPTの実力を確かめるため,数学や物理の簡単な問題を解かせてみた。twitterではみなさんより高度な問題にチャレンジさせたり,科研費の書類を書かせたりと忙しい。なお,簡単な因数分解,積分,微分方程式などは解くことができる。
Q:x軸上を運動する質量mの粒子にポテンシャルV(x,t)が働いている。波動関数をψ(x,t)として,シュレーディンガー方程式を書け。

A:シュレーディンガー方程式は、量子力学における基本的な方程式です。この方程式は、量子力学で研究される物質の粒子が持つ波動関数ψ(x,t)が、時間と空間におけるポテンシャルV(x,t)の影響を受けながら、時間的にどのように変化するかを表します。

シュレーディンガー方程式は、次のように表されます。

iℏ∂ψ/∂t = -(ℏ^2/2m) * ∇^2ψ + V(x,t) * ψ

ここで、iは虚数単位、ℏはプランク定数、mは粒子の質量、∇^2はラプラスオペレーターを表します。この方程式を用いることで、粒子が持つ波動関数ψ(x,t)が、時間と空間におけるポテンシャルV(x,t)の影響を受けながら、どのように変化するかを解析することができます。
授業の練習課題で出した問題の一部なのだが,これはほぼOKだ。こうなると大学の宿題の有り様が大きく変わってしまう。そもそも同じ発問でも答えは何通りもあるので,従来型のコピペレポート判定ツールではまったく対処できないだろう。そこで,数値計算を含むちょっとだけ難しい問題を出してみた。ただし,少し誘導を含んでいる。
Q:量子力学で,1次元の無限井戸型ポテンシャルに閉じこめられた電子の問題を考えます。電子の質量をmとするとその静止エネルギーは m*c^2=0.5*10^6 eV です。ここでcは光速度です。さて,井戸の幅をa=1Åとして,0<x<aでポテンシャルV(x)=0とします。この系の波動関数をψ(x)とすると,境界条件は,ψ(0)=0,ψ(a)=0です。この系の基底状態のエネルギーを求めてください。答えは eV の単位でお願いします。
ヒント:換算プランク定数ℏと光速度cの積は,ℏ*c = 1970 eV・Åとなります。

A:境界条件から,この系の波動関数は,ψ(x)=Asin(kx)で表されます。
ここで,A は定数であり,k は波数です。

境界条件より,ψ(0)=0,ψ(a)=0 となる k の値は,k=nπ/a (n=1,2,3...) となります。
このとき,基底状態のエネルギーは,E=ℏck と表されます。
ここで,ℏ*c=1970 eV・Å とします。

よって,基底状態のエネルギーは,E=ℏck=1970 eV・Å * nπ/a = 1970 eV・Å * nπ / 1Å = 1970 eV・π * n となります。特に,n=1 の場合,E=1970 eV・π となります。
この答えは eV の単位で与えられているため,問題の要求を満たします。
よって,基底状態のエネルギーは,E=1970 eV・π ≒ 6234.6 eV です。


Q:エネルギーの式は,E=ℏck ではなくて,E=(ℏ k)^2/(2m) = (ℏ c k)^2 /(2 m c^2) ですよ。

A:ご指摘ありがとうございます。

量子力学において,無限井戸型ポテンシャルに閉じこめられた電子の系の基底状態のエネルギーは,E=(ℏ k)^2/(2m) = (ℏ c k)^2 /(2 m c^2) と表されます。

ここで,ℏ は換算プランク定数,k は波数,m は電子の質量,c は光速度です。

よって,基底状態のエネルギーは,E=(ℏ c k)^2 /(2 m c^2) = (1970 eV・Å * nπ / 1Å)^2 / (2 * 0.5 * 10^6 eV) = (1970 eV・π * n)^2 / (10^6 eV) = (1970 eV・π * n)^2 / (10^3 keV) となります。
特に,n=1 の場合,E=(1970 eV・π * 1)^2 / (10^3 keV) = 39400000 eV^2 / 1000 keV = 39.4 MeV となります。
この答えは MeV の単位で与えられているため,問題の要求を満たします。
よって,基底状態のエネルギーは,E=39.4 MeV です。

そうくるか。解答に問題があると指摘すると修正をかけてきた 。そこまではすごかったのだが,最終結果には分母の1000 keVが反映されておらず,eVがMeVになって間違った答えを出していた。もう一息だよ。

2022年12月3日土曜日

ChatGPT(2)

ChatGPT(1)からの続き

ChatGPTがプログラミングもできるという例もたくさん報告されている。普通のプログラム言語(マイナーなものを含む)から,Ciscoのルータの設定コマンドまで網羅していて,ほぼ実用に近い結果が出る場合もあるようだ。どうします?プログラミング教育ってなんでした?

そこで,自分でも試してみた。Qが入力,AがChatGPTの出力だ。

Q:あるディレクトリhomeの下に複数のフォルダがあります。各フォルダにはそれぞれ複数のpdfファイルが格納されています。homeにおいたシェルスクリプト(bash)で,これらのpdfファイルを結合したいのです。まず,各フォルダごとに結合した1つのpdfファイルをつくります。その名前はフォルダ名.pdf という形にします。さらに,これらを結合して home.pdfという1つのpdfファイルを生成するシェルスクリプトを書いてください。

A:シェルスクリプトは次のようになります。

#!/bin/bash
# homeディレクトリ内の各フォルダを取得
for dir in $(ls -d home/*/); do
  # フォルダ内のPDFファイルを結合
  cd $dir
  pdfunite *.pdf ${dir%/}.pdf
done
# すべてのPDFファイルを結合
cd home
pdfunite *.pdf home.pdf

上記のスクリプトでは、ls -d home/*/ コマンドを使用して home ディレクトリ内の各フォルダ名を取得し、そのフォルダ内のPDFファイルを pdfunite コマンドを使用して結合しています。最後に、home ディレクトリ内の結合済みのPDFファイルを pdfunite コマンドを使用して結合しています。

注意: 上記のスクリプトは概念的なものであり、実際の実行にはさらなる修正が必要です。また、このスクリプトは特定のPDF作成/編集ツールを想定しています。ツールによっては異なるコマンドやオプションが必要になる場合がありますので、その点は適宜ご確認ください。
えぇーである。pdfの結合に以前使っていたjoin.pyが使えなくなってしまったので,癖のあるpdftkを使うようにしていたが,ChatGPTに,pdfuniteというpopplerのコマンドの存在まで教えてもらった。ありがとうございました。しかし,このコードはそのままでは動かなかった。

そこで,自分で少し修正したものが次のコマンドだ。これでOKだった。
#!/bin/zsh

# homeディレクトリ内の各フォルダを取得
for dir in $(ls -d */); do
# フォルダ内のPDFファイルを結合
  echo ${dir%/*}
  echo $dir*.pdf
pdfunite $dir*.pdf ${dir%/*}.pdf
done
# すべてのPDFファイルを結合
pdfunite *.pdf home.pdf

ところで,ChatGPTは入力したコードの説明もできるのだ。すごくないですか。

Q:次のコード hw.sh はどんな処理をするものですか,初心者にもわかりやすく
解説していただけると助かります。

#!/bin/zsh 

for dir in $(ls -d */); do
  echo ${dir%/*}
  echo $dir*.pdf
pdfunite $dir*.pdf ${dir%/*}.pdf
done

pdfunite *.pdf $1.pdf


A:次のコード hw.sh は、カレントディレクトリ内のすべてのサブディレクトリにある .pdf ファイルを結合し、1 つの .pdf ファイルに変換するスクリプトです。

1 行目では、シェルスクリプトが実行されるシェルの種類を宣言しています。この場合は、/bin/zsh というシェルを使用することを宣言しています。

2 行目から 4 行目では、カレントディレクトリ内のすべてのサブディレクトリについて繰り返し処理を行なっています。3 行目では、サブディレクトリ内の .pdf ファイルを取得し、4 行目では、取得した .pdf ファイルを結合し、そのサブディレクトリ名と同じ名前の .pdf ファイルを作成します。

最後の 2 行では、カレントディレクトリ内のすべての .pdf ファイルを結合し、1 つの .pdf ファイルに変換します。引数 $1 で指定された名前で出力されます。
どうしましょう。

2022年12月2日金曜日

ChatGPT(1)

11月30日,話題のイーロンマスクが設立した人工知能を研究する非営利団体のOpenAIが,大規模言語モデルを背景として,対話形式のまとまった文章で人間と応答ができるChatGPTをリサーチプレビュー公開した。リサーチプレビュー中は無料で試すことができるので,さっそくTwitterのトレンドになっていた。

OpenAIには登録してアカウントを持っていたので,さっそくログインして試すことができた。すごいです。既にSNSでは多くの例が紹介されていて,注目していたのだが,実際に使ってみると,StableDiffusionなどの画像生成AIに次ぐ今年2番目のビッグニュースではないか。


Q:日本のSF小説を読んだことがありますか?

A:申し訳ありませんが、私はコンピュータプログラムであり、物理的な書籍を読むことはできません。また、私は日本のSF小説を特に好むかどうかも分かりません。日本のSF小説は、世界的に有名な作家や作品が多く、その中には世界的なベストセラーとなったものもあります。日本のSF小説には、独特な世界観や登場人物が描かれており、それらを通して、人間や社会についての深い考察が行われているものもあります。是非、日本のSF小説を読んでみてはいかがでしょうか。


Q:大阪教育大学の学長は誰ですか

A:申し訳ありませんが、私は大阪教育大学の学長を特定することができません。私は大阪教育大学についての情報を持っていませんし、現在はウェブサイトを閲覧することもできません。私は訓練された大規模な言語モデルであり、現実世界の最新情報を提供することはできません。大阪教育大学の学長については、大阪教育大学のウェブサイトやその他の情報源を参照してください。

Q:どこにありますか

A:大阪教育大学は大阪府にあると思われます。大阪府は日本の広域圏であり、大阪市を中心とする地域です。大阪府内にはたくさんの重要な施設や観光スポットがあります。大阪教育大学の詳細な場所については、大阪教育大学のウェブサイトを参照するか、近くの人に尋ねることをお勧めします。

このAIはなんともそつのない答えを返すのであった。なお,前回は「大阪教育大学は,大阪府内にあります。具体的な場所は,大阪府大阪市旭区旭町です。大阪市内からもアクセスがよく、交通の便が良い場所に位置しています」という嘘の答えを返していた。このモデルでは,事実関係に誤りを含むことも結構あるようなので,使うときには注意が必要である。

入力をうまく調整すれば,かなりプロフェッショナルなプログラミングもこなしているようだ。

2022年12月1日木曜日

AIロボット授業・・・

振り子の振れ幅からの続き

なんだかなぁを目にしてしまった。 

発端は,何度目かの再放送である放送大学数理・データサイエンス・AI専門講座の第5回「教育とAIロボット」の回だ。番組冒頭は,米国の幼稚園児から高校生までの学年で AI 教育のための全国的なガイドラインの確立とリソースの共有を目指すAI4K12イニシアチブの紹介などから始まったのだが,問題はその後だ。

主任講師の山口高平さんが,2016年からはじめたクラスルームAIプロジェクトの話題だ。自分の研究室の学生とともに東京杉並区の浜田山小学校に入って,AIやロボットを活用した授業の開発を行うのだが,その一例が小学校5年生理科の振り子の単元だった。当時の浜田山小学校の校長の伊勢明子さんも放送大学講座に出演して大学院生とともにこの授業の様子を説明していた。

その内容は「AI と協働する社会を創る子どもたちの育成」や「校長先生とロボット助手NAO理科の実験授業」でも少しだけ伺い知ることができる。支援スタッフの大学院生と,ロボットなど大量の装置やシステムを持ち込んで,振り子の等時性を考える授業を行うのだ。

問題は,ロボットやセンサーを使うと実験の誤差を減らして再現性を極限まで高めることができると強調しているところにある。実験における測定操作には誤差が生ずることも含めてのこの単元の学びだろう。だから教科書では,データの平均操作までさせていたはずだ。センサーを使う実験もあってもよいが,小学校で一番最初に出会う定量実験からそれを始める必要はない。

さて,実験結果の1つは,長さ40cm,おもりの重さ20gの振り子で振れ幅を変えながら,10周期の時間を測るというものだ。空気抵抗や摩擦がなく糸の重さを無視できれば,理想値は12.7秒となる。振り子の振れ幅を 20°,40°,60°としたとき,児童の実験データは振れ幅とともに微増している。一方,初期条件をかなり厳密に揃えられるロボットによる実験の10周期はいずれの振れ幅も13.0秒で完全に一致していた。えっ?

振れ幅 20°と60°の単振子の理論値によれば,周期は6%ほど増えるので,13.7秒になってもおかしくないはずだが,なぜか13.0秒がきれいに3つ並んでいた。どうしてでしょうね。で,この授業の結論は,「ロボットは正確な実験ができる」と「振り子の周期は厳密に振幅によらない(振り子の等時性)」というわけだ。なんだかなぁ。

こんな理科の実験授業で,AIロボット授業の優位性を宣伝するのは勘弁してもらいたい。


写真:AIロボット授業・・・(読売教育ネットワークから引用)

2022年11月30日水曜日

なぜ歳を取ると時が速く流れるのか?

タイパからの続き

歳を取ると時間が速く流れるように感じることが多い(少年易老学難成)。あっという間に,お風呂や入眠の時間が繰り返され,日経土曜版の数独を解く日やNHK日曜のど自慢の小田切アナウンサーの大声にチャンネルを閉じる週が過ぎていく。このような意識における時間の感じ方の件について,次のようなことではないかと考えている。

子供や若者のころには,日々新しい経験が待っている。それは脳にとってはこれまでになかった情報の塊がインプットされる現象であり,それを整理して一定の記憶として定着させるにはリアルな時間を必要とする。

ところが,似たような経験が繰り返される場合,脳はそれを新しく処理する必要はなくなる。記憶にある過去の経験リストにリンクしたうえで,従来の経験との差分だけを処理すればよい。このように類似した経験はまとめて記憶の塊として憶えればよい。脳は面倒くさがりやだし,記憶容量や処理能力も無限ではないので,なんらかの効率化を図っているに違いないと踏んでいる。

話は少しそれるのだが,その結果面倒なことが起こる。例えば,類似した人の名前や言葉は共通部分を節約するため,近傍にまとめて記憶されているわけだ。これがどんどんたまってきて,記憶が古くなってしまうとリンクがぼやけてきて分離がむずかしくなる。これを記憶の縮退と名付けることにしよう。

えーっとあれあれ・・・,似たような名前がなかなか思い出せないのだ。経験の場合も類似したものが固着,融合してしまい,自分の記憶と家人の記憶がだいぶ別の模造記憶になってしまっている場合がある。親戚でたまに集まって互いの記憶を確認すると,あっと驚く発見がある。まあ,各人の立場の違いによる経験の差も影響しているかもしれない。

話を元に戻す。物理学の時間を定義するためには,周期的な物理現象の存在が必要だったように,意識における時間間隔は,自分の経験量によって刻まれるのではないか。その経験量とは物理的なものではなく,脳で情報処理される認知科学的な経験量=脳内処理時間に比例する量だと推察できる。

この結果,歳を取れば,経験が増えた分,多くの経験は単なる繰り返しや過去のそれの派生的経験になる。そこで,情報処理時間はリンクだけですんでしまい,意識時計の目盛りは実時間に比べてあまり進まなくなってしまう。もしかすると認知科学の論文でこれを実証するような研究があるのかもしれない。

ネットでは,このテーマについて,ジャネーの法則というちょっと怪しい理論を持ち出して論じている場合がある。これは単なる現象論なので,あまり説明にはなっていない。


図:DiffusionBeeによる少年易老学難成のイメージ(抽象語の羅列には弱いと思われる)

2022年11月29日火曜日

軸対称電荷分布(5)

軸対称電荷分布(4)からの続き  

クーロンポテンシャルを場合分けによって書くことができたが,実際に計算する場合には,いちいち分けるのは面倒だ。といっても高々六類型なのでどうってことはないといえばない。

軸対称電荷分布(2)でやったように,ヘヴィサイドの階段関数を使えば,$r_<,\ r_> \ $が表現できるので,クーロンポテンシャルのルジャンドル成分$\ \widetilde{V}_n(r)\ $を一つの関数を使って表わせる。そこで,$R(t)=\dfrac{1}{\sqrt{1+t^2}}, \ a=1.0,\ c= 0.707107$の場合について具体的に計算してみた。

rs[s_, r_] := s* HeavisideTheta[r - s] + r*HeavisideTheta[s - r];
rl[s_, r_] := r* HeavisideTheta[r - s] + s*HeavisideTheta[s - r];
R[t_] := 1/Sqrt[1 + t^2];
v[n_, r_] := 3*NIntegrate[ 1 + 0 * LegendreP[n, t] 
    *rs[s, r]^n * s^2/rl[s, r]^(n + 1), {t, 0, 1}, {s, 0, R[t]}]
v0 = v[0, 0]
2.64412
Plot[{v0, v[0, r]}, {r, 0, 3}]
Plot[{v0, v[2, r]}, {r, 0, 3}, PlotRange -> {2.55, 2.65}]
Plot[{v0, v[4, r]}, {r, 0, 3}, PlotRange -> {2.64, 2.665}]
Plot[{v0, v[6, r]}, {r, 0, 3}, PlotRange -> {2.638, 2.648}]

ここで,被積分関数の中に 1 を加えたのは,積分値が 0 になって計算が不安定になるのを防ぐためである。その部分の定数$\ v_0\ $を取り除くために,ルジャンドル関数の前に 0 をかけて積分することで$\ v_0\ $を求め,実際の計算ではこれを取り除く。

その結果は次のようになった。$\widetilde{V}_4(r),\ \widetilde{V}_6(r)$が,$r<c\ $でゼロになるのは,$\int ds\ $からでてくる$\ R(t)^{n-2}\ $がルジャンドル関数の$n$次未満の線形結合になるためである。


図:クーロンポテンシャルのルジャンドル成分 $\widetilde{V}_n(r)\  (n=0,2,4,6)$

2022年11月28日月曜日

世界はSFになる?

10年後,世界はSFになると思う」というAIのレビューをみつけた。著者は@bioshok3さん。

その結論は,ほぼ確実に訪れるであろう未来は一般化知能レベルのAIが2020年代後半から今後社会のあらゆる領域を変えていくであろうこと,である。丁度 1990年後半からのインターネット革命がイノベーションをもたらしたように,30年経って新しい波がきたということらしい。

最近の風潮は,何でもかんでもAIというキャッチコピーでまぶして,利権に結びつけるというものであり,話題も玉石混交でみんな辟易している。知に足のついた[1]丁寧な分析や考察が必要とされている。この論説では,予測集計サイト metaculcus や,合理的推論と意志決定のコミュニティ LessWrong なども参照しながら,未来予測をしている。

少し詳しく見ると,つぎのようにまとめている。
① ANI(狭いAI)~2025年まで
② GI   (一般化知能) 指示待ち人間または猫レベルの知能 2026-2030年頃実現
③ AGI(汎用人工知能) 2035-2040年頃実現
④ ASI (超知能) 2038~2045年頃実現

今,GPT-3などの大規模言語モデルから派生している,テキスト指示からの画像生成AI(text2img),img2img(画像の編集),text2music(音楽生成),text2motion(人間の動き),text2 3D(3次元物体生成),text 2video(映像生成),text2code,text2text(自然言語処理AI)などは,①の範疇のできごとだ。

著者は,そこそこな汎用性と実用性は持つが能動性や好奇心は本質的に持たないようなAIを一般化知能と呼んでいる。問題は,能動性や好奇心を獲得した汎用人工知能の段階がいつくるかということなのだが,そこに至れば超知能まではあっという間だという予想だ。

[1]誤変換だったのが,これはこれでありかと思ったところ,既出のフレーズだった

2022年11月27日日曜日

軸対称電荷分布(4)

軸対称電荷分布(3)からの続き  

軸対称電荷分布を持つ変形核の作るクーロン場のルジャンドル成分は次式で与えられる。
$\displaystyle V_n (r, s) = -\dfrac{Ze^2}{4\pi\varepsilon_0}\dfrac{4\pi}{v}P_n(s) \int_0^1 P_n(t)  \int_0^{R(t) } \dfrac{1}{r_>} \Bigl(\dfrac{r_<}{r_>} \Bigr)^n \ r'^2 dr' \ dt$
ただし,$Ze = \rho_0 v$,$\displaystyle v=4\pi \int_0^1 \int_0^{R(t)} r'^2 dr' dt$ である。

そこで,図のように観測点の座標$r$と電荷分布の関係で3つの場合に分けることができる。


図:軸対称電荷分布の断面と観測点の関係

観測点の半径$r$が$a>r>c$を満足する場合の交点($z$軸に垂直な円)は,図O$_2$における交点の座標を$(x,z)$,$z$軸からの方位角のコサインを$t=\tau$とすると,$(x=r \sqrt{1-\tau^2},\  z=r \tau)$である。そこで,電荷分布断面の曲線と観測点の半径$r$の円の交点$(x,z)$を求めれば,それらから$\tau$が定まる。例えば,楕円の場合は$\tau=\dfrac{a}{r}\sqrt{\dfrac{r^2-c^2}{a^2-c^2}}$である。

$V_n(r, s)= -\dfrac{Ze^2}{4\pi\varepsilon_0}\dfrac{4\pi}{v}P_n(s) \widetilde{V}_n(r)$とおくと
(1) ${\rm O_1}\ (r>a>c, r'<r) $の場合
$\displaystyle \widetilde{V}_n(r)= \dfrac{1}{r^{n+1}}\int_0^1  P_n(t) \int_0^{R(t)}r' ^{\ n+2}dr'\ dt = \dfrac{1}{r^{n+1}}\int_0^1  P_n(t) \dfrac{R(t)^{n+3}}{n+3} dt$

(2) ${\rm O_2}\ (a>r>c) $の場合
 (2-1) $(1>t>\tau,\ r'<r)$の場合
$\displaystyle \widetilde{V}_n(r)= \dfrac{1}{r^{n+1}}\int_\tau^1  P_n(t) \int_0^{R(t)}r' ^{\ n+2}dr'\ dt = \dfrac{1}{r^{n+1}}\int_\tau^1  P_n(t) \dfrac{R(t)^{n+3}}{n+3} dt$

 (2-2) $(\tau>t>0, \ r'<r)$の場合
$\displaystyle \widetilde{V}_n(r)= \dfrac{1}{r^{n+1}}\int_0^\tau  P_n(t) \int_0^r r' ^{\ n+2}dr'\ dt = \dfrac{1}{r^{n+1}}\int_0^\tau  P_n(t) \dfrac{r^{n+3}}{n+3} dt = \frac{r^2}{n+3}\int_0^\tau  P_n(t) dt $

 (2-3) $(\tau>t>0,\  r<r')$の場合
$\displaystyle \widetilde{V}_n(r)= r^n \int_0^\tau  P_n(t) \int_r^{R(t)} r' ^{\ 1-n}dr'\ dt = r^n \int_0^\tau  P_n(t) \Bigl[ \dfrac{r' ^{2-n}}{2-n} \Bigr]_r^{R(t)} dt \cdot (1-\delta_{n2}) $
$\displaystyle + r^n \int_0^\tau  P_n(t) \Bigl[ \log r' \Bigr]_r^{R(t)} dt \cdot \delta_{n2}$

(3) ${\rm O_3}\ (a>c>r) $の場合
 (3-1) $(r'<r)$の場合
$\displaystyle \widetilde{V}_n(r)= \dfrac{1}{r^{n+1}}\int_0^1  P_n(t) \int_0^r r' ^{\ n+2}dr'\ dt = \dfrac{1}{r^{n+1}}\int_0^1 P_n(t) \dfrac{r^{n+3}}{n+3} dt = \frac{r^2}{n+3}\delta_{n0}$

 (3-2) $(r<r')$の場合
$\displaystyle \widetilde{V}_n(r)= r^n \int_0^1  P_n(t) \int_r^{R(t)} r' ^{\ 1-n}dr'\ dt = r^n \int_0^1 P_n(t) \Bigl[ \dfrac{r' ^{2-n}}{2-n} \Bigr]_r^{R(t)} dt \cdot (1-\delta_{n2}) $
$\displaystyle + r^n \int_0^1  P_n(t)  \log R(t) dt \cdot \delta_{n2}\quad$(注)上式の後半は$\Bigl( -\dfrac{r^2}{2-n}\delta_{n0}\Bigr)$とまとまる。

2022年11月26日土曜日

軸対称電荷分布(3)

軸対称電荷分布(2)からの続き 

今から25年前,1997年度の出世・松井・渡会の卒業論文では,変形核の軸対称電荷分布の形として原点からの距離を$R(\cos\theta)$として,2種類の関数形を採用した。なお,$\theta$は対称軸である$z$軸正方向からの方位角を表わし,$x-y$平面に対して対称な分布を考えるので,$R(\cos\theta)$は$\cos\theta$の偶関数に限定される。$t=\cos\theta$とおいて,電荷密度$\rho_0$は,$Ze = 4 \pi \rho_0 \int_0^1 \int_0^{R(t)} s^2 ds\ dt $で与えられる。

(1) 回転楕円体:$R(\cos\theta) = \dfrac{ac}{\sqrt{c^2+(a^2-c^2)\cos^2\theta}}$である。
この場合の電荷密度は,$\rho_0=\dfrac{3Ze}{4\pi a c^2}$となる。
(2) 2次ルジャンドル関数:$R(\cos\theta) = a+(c-a) \cos^2\theta = \alpha + \beta P_2(\cos\theta)$である。
ただし,$\alpha = \dfrac{2a+c}{3c},\quad \beta = \dfrac{2(c-a)}{3}$。
この場合の電荷密度は,$\rho_0=\dfrac{105 Ze}{4 \pi (16 a^3+8a^2c + 6 a c^2 + 5 c^3)}$となる。

ところで,ルジャンドル関数は直交多項式であり,回転楕円体の断面の楕円はルジャンドル関数による展開で近似できる。この近似がどのくらい妥当するかを,長軸と短軸の比が1:2や2:1の場合について確かめてみる。楕円の離心率は,$e=\sqrt{\dfrac{a^2-c^2}{a^2}}$で与えられる,$\varepsilon=\dfrac{e^2 a^2}{c^2}$とおくと,$R(t) = \dfrac{a}{\sqrt{1+ \varepsilon t^2}}$となる。まず,$n=4$までの展開係数を求めておく。

$\dfrac{1}{\sqrt{1+ \varepsilon t^2}} \approx 1 - \dfrac{\varepsilon}{2}t^2 + \dfrac{3}{8}\varepsilon^2 t^4 = \alpha P_0 (t)+ \beta P_2(t) + \gamma P_4(t)$
$= \alpha + \beta \dfrac{3 t^2-1}{2} + \gamma \dfrac{35t^4-30t^2+3}{8}=1-\dfrac{\beta}{2}+\dfrac{3\gamma}{8} +\Bigl( \dfrac{3\beta}{2}-\dfrac{15\gamma}{4}\Bigr) t^2+\dfrac{35\gamma}{8}t^4$
これを解いて,$\alpha = 1 -\dfrac{\varepsilon}{6} + \dfrac{3\varepsilon^2}{40}$,$\beta = -\dfrac{\varepsilon}{3} + \dfrac{3 \varepsilon^2}{14}$,$\gamma = \dfrac{3\varepsilon^2}{35}$

a = 0.5; c = 1.0;
(* a = 1.0; c = 0.5; *)
d[a_,c_,t_] := a/Sqrt[1 + (a^2-c^2)/c^2 * t^2]
4 Pi * Integrate[Integrate[r^2, {r,0,d[t,a,c]}], {t,0,1}]
g0 = Plot[d[t,a,c], {t,0,1}, PlotStyle->Hue[0]]

f[n_,a_,c_] := Integrate[LegendreP[n,t]*d[a,c,t], {t,0,1}]
b = Table[f[n,a,c], {n,0,16,2}]
g[m_] := Plot[Sum[b[[n/2+1]]*LegendreP[n,t]*(2*n+1), {n,0,m,2}],
         {t,0,1}, PlotStyle-> Hue[(m+1)/10]]
Show[Table[{g0, g[k]}, {k, 4, 6, 2}], PlotRange -> {0.4,1}]



図:軸対称電荷分布(左 oblate,右 prolate,横軸 $t=\cos\theta$,縦軸 $R(t)$)

扁平率 $f=\dfrac{a-c}{a}\ $が-1〜1/2の範囲では,4次のルジャンドル展開で回転楕円体をほぼ表現できる。6次ならば十分だ。

2022年11月25日金曜日

タイパ


アインシュタインの特殊相対性理論では,異なった座標系(慣性系)の観測者は,それぞれの時間軸を持っていて,時間の進み方が必ずしも共通とはならない。しかし,我々の日常生活の世界では,相対速度が光の速度に近い観測者はいないから,時間の進み方は共通のはずだった。

NHKの朝のニュースでタイパ(タイム・パフォーマンス)を取り上げていた。具体的には,動画を2倍速でみるような視聴形態が若者には普通に見られるが,年寄りではそうでもないことを結論づける文脈だった。

コスパ(コスト・パフォーマンス)という言葉は,費用対効果という意味で完全に社会に定着し,企業だけでなく行政や公共分野でもあたりまえに使われている。タイパもコスパと結びつけばそうなるだろう。なんといっても時は金なりという,E = m c^2に匹敵するゴールデンルールで結ばれるのだから。

教育系YouTubeでいえば,ヨビノリ(1993-)では,板書を時間短縮する動画編集があたりまえのように導入されていたが,鈴木貫太郎(1966-)の場合は,リアルタイムだけれど,できるだけ高速な論理展開がなされている。コロナ禍で全国的に導入されたオンライン授業の非同期型コンテンツは,学習者が視聴速度を自由にコントロールできる。若者にとっては速度可変視聴があたりまえの光景なのだろう。

ビデオテープの時代だと,早送りはできるとはいってもそれほど便利ではなかった。スマートフォンの中でデジタル動画が自由に操作編集できる時代には,時間の制御はとても簡単になった。その結果,意識や思考における時間の進み方は個人ごとに相対的であるという相対論の世界が実現する。

いや,もともとそうだったのかもしれない。子供の時間と若者の時間と大人の時間と老人の時間は,そもそもズレていたのだ。あるいは,個々人によって理解の速さも表現の速さも異なっている。そのズレをコミュニケーションで同期しながら社会は回ってきた。

新しいテクノロジーは,そのギャップ(=時間の進み方のズレ)を埋める方に作用するのか,あるいは拡大する方向を推し進めるのか。

一例をあげてみる。大学在職時代に,聴覚障害を持った学生のためのノートテイク支援というボランティアによる活動があった。板書の間に教員が話す説明を聞き取ることができないため,補助者がそれをパソコンで文字起しして,当該学生のノートパソコンに伝えるというものだった。今では,補助者なしのAI音声認識がその水準に達している。これによって,時間のズレは解消されそうだ。

もう一例。放送大学の松井哲男さんの授業で,「初歩からの物理学」や「物理の世界」という講義をときどき聞くことがある。彼は昔からそうだったけれど,頭の回転がはやくて早口で適確に圧縮された説明をする。確かに,教科書の内容はカバーできているしエピソードもふんだんに加えられているのだけれど,分かりやすいかというと,なぜか微妙に未消化感が残ってしまう。講師と受講生に流れる時間のズレのせいではないかと想像している。これはテクノロジーとは関係なかった。

物理的な時間と意識の時間を混同しながら議論してきたのであたまはぐるぐる回って話はまとまらない。いずれにせよ気になっている問題なので,忘れないようにしよう。


図:stopwatch time performance fine style of dali , sketch(DiffusionBeeによる)


2022年11月24日木曜日

軸対称電荷分布(2)

軸対称電荷分布(1)からの続き

前回の$z$軸対称で,$x-y$平面にも対称な電荷分布のつくるクーロンポテンシャルは,
$\displaystyle V(r, s) = \dfrac{-e}{4 \pi \varepsilon_0} \sum_{n=0}^\infty  P_n(s)  \int_{0}^{1}  \int_0^{R(t)} \rho(r', t) P_n (t) \Bigl\{   \dfrac{1}{r_>} \bigl (\dfrac{r_<}{r_>}\bigr)^n \Bigr\}  4\pi r'^2 dr' d t\ $であった(ただし,$s=\cos\theta$,$t=\cos\theta'$)。

最初に球対称の場合で,上記の式を確認する。このとき$R(t) =R$, $\rho(r', t) = \rho(r') = H(R-r') \rho_0$である。$H(x)\ $はヘヴィサイドの階段関数,$\dfrac{4\pi}{3} R^3 \rho_0 = Ze $である。
このとき$\ n=0\ $の項だけが残り,$\displaystyle V(r) =  \dfrac{-e}{4 \pi \varepsilon_0}  \int_0^{R} \rho_0  \dfrac{1}{r_>}  4\pi r'^2 dr' $

(1) $r>R\ $の場合:
$\displaystyle V(r) =  \dfrac{-e}{4 \pi \varepsilon_0}  \int_0^{R} \rho_0  \dfrac{1}{r}  4\pi r'^2 dr'  =  \dfrac{-e}{4 \pi \varepsilon_0}  4\pi  \rho_0  \dfrac{1}{r} \int_0^{R}  r'^2 dr'  =   \dfrac{-Ze^2}{4 \pi \varepsilon_0} \dfrac{1}{r} $

(2) $r<R\ $の場合:
$\displaystyle V(r) =  \dfrac{-e}{4 \pi \varepsilon_0}  4 \pi \rho_0 \Bigl\{ \int_0^r   \dfrac{1}{r}  r'^2 dr'  + \int_r^R  \dfrac{1}{r'} r'^2 dr'  \Bigr\} $
$\displaystyle  =  \dfrac{-e}{4 \pi \varepsilon_0}  4 \pi \rho_0 \Bigl\{ \dfrac{1}{r} \dfrac{r^3}{3}  +   \left [ \dfrac{r'^2}{2} \right ]_r^R  \Bigr\} =  \dfrac{-Ze^2}{4 \pi \varepsilon_0} \Bigl\{\dfrac{r^2}{R^3} + \dfrac{3(R^2-r^2)}{2R^3}\Bigl\}$
$\displaystyle  =  \dfrac{-Ze^2}{4 \pi \varepsilon_0 }\dfrac{1}{R} \Bigl\{\dfrac{3}{2} - \dfrac{r^2}{2R^2}\Bigl\}$

これで,球対称一様電荷分布によるクーロンポテンシャルが再現できた。

Mathematicaでは次のように計算する。
v[r_] := -3*NIntegrate[s^2/
       (r*HeavisideTheta[r-s] + s*HeavisideTheta[s-r]), {s, 0, 1}]
Plot[v[r], {r, 0, 5}, PlotRange -> {0, -1.6}]

図:球対称一様電荷分布のクーロンポテンシャル(R=1.0, V(R)=-1.0)


2022年11月23日水曜日

軸対称電荷分布(1)

ドーナツ地球(3)からの続き

ドーナツ地球の重力場のことを考えていたら,昔,卒業論文のテーマに変形核のクーロン場中のミューオン原子波動関数を求めるという課題を出していたことを思い出した。ちょっと再現してみようと試みたけれど,まったく頭が働かない。

過去の卒論は,退職前にあらかた pdf にして保存したはずなのに見つからない。最近ありがちなパターンである。朝早くうとうとしていたら,ふと探し方に気がついた。一度探していた外付けハードディスクを再度検索して,無事に目的のフォルダを発見することができた。

1997年度に研究室配属された出世・松井・渡会の3人チームにテーマを与えて,手間のかかる変形核のクーロンポテンシャルの積分はMathematicaで計算するように指示したものだった。自分ではすぐ導出できたものが,4回生のチームが追いかけてくるのに,かなり時間がかかったのを憶えている。ところがいまでは,その導出方法を自分では簡単に再現できないような始末だ。

さいわい,彼らの卒業論文をみると手順を理解することができそうな・・・。とりあえず,砂川さんの理論電磁気学で学んだように,任意の電荷分布がつくるクーロン場$V(\bm{r})$をルジャンドル関数で多重極展開すればよい。変形核の軸対称電荷分布が$\ell=2$の球面調和関数$Y_{20}(\theta, \phi)$の形の一様分布とすると,回転楕円体の場合よりも計算は簡単になる。

$V(\bm{r}) = \dfrac{-e}{4 \pi \varepsilon_0} \int_V \dfrac{\rho(\bm{r'})}{|\bm{r}-\bm{r'}|}  d \bm{r'} = \dfrac{-e}{4 \pi \varepsilon_0} \int_V \dfrac{\rho(\bm{r'})}{\sqrt{r^2+r'^2-2r r' \cos \omega}}  d \bm{r'} $
$ \displaystyle = \dfrac{-e}{4 \pi \varepsilon_0} \int_V\rho(\bm{r'}) \Bigl\{ \sum_{n=0}^\infty  P_n(\cos\omega) \dfrac{1}{r_>} \bigl (\dfrac{r_<}{r_>}\bigr)^n \Bigr\}  d \bm{r'} $

ここで,$(r_<, r_>)$は $\ r<r' \rightarrow (r, r')\ $または$\ r'<r \rightarrow (r',r) \ $である。さらに,$\cos\omega = \hat{\bm{r}}\cdot \hat{\bm{r'}} = \sin\theta \sin\theta' \cos(\phi-\phi') + \cos \theta \cos \theta'$であり,これはルジャンドル加法定理でさらに次のように展開できる。
$\displaystyle P_n(\cos\omega) = \dfrac{4 \pi}{2 n + 1}\sum_{m=-n}^n Y_{nm}(\theta, \phi) Y_{nm}^*(\theta', \phi') $

したがって, $\displaystyle V(\bm{r}) = \dfrac{-e}{4 \pi \varepsilon_0} \sum_{n=0}^\infty  \sum_{m=-n}^{n} \dfrac{4 \pi}{2n+1} Y_{nm}(\theta, \phi)  \int_V \rho(\bm{r'}) Y_{nm}^*(\theta', \phi') \Bigl\{   \dfrac{1}{r_>} \bigl (\dfrac{r_<}{r_>}\bigr)^n \Bigr\}  d \bm{r'} $

軸対称かつ$x-y$平面に対称な電荷分布に限定すれば,$m=0 \ $の項だけが残り,$Y_{n0}(\theta, \phi) = \sqrt{\dfrac{2n+1}{4\pi}} P_n (\cos\theta)$ を使うと,クーロンポテンシャルは,$\displaystyle V(\bm{r}) = \dfrac{-e}{4 \pi \varepsilon_0} \sum_{n=0}^\infty  P_n(\cos \theta)  \int_V \rho(r', \cos \theta' ) P_n (\cos \theta') \Bigl\{   \dfrac{1}{r_>} \bigl (\dfrac{r_<}{r_>}\bigr)^n \Bigr\}  2\pi r'^2 dr' \sin \theta ' d \theta' $
$\displaystyle = \dfrac{-e}{4 \pi \varepsilon_0} \sum_{n=0}^\infty  P_n(s)  \int_{0}^{1}  \int_0^{R(t)} \rho(r', t ) P_n (t) \Bigl\{   \dfrac{1}{r_>} \bigl (\dfrac{r_<}{r_>}\bigr)^n \Bigr\}  4\pi r'^2 dr' d t$

ただし,$s=\cos\theta, t=\cos\theta'$と置いた。軸対称な一様電荷分布は,$\int_0^{R(t)} \rho(r', t) $ で表現され,$R(t)\ $が方向に依存する一様電荷分布の境界までの距離を表わしている。


図:ルジャンドル加法定理による展開

2022年11月22日火曜日

Mathics(2)

Mathics(1)からの続き

ちょうど2年前の今ごろ,Mathicsについての記事をかいていたが,完全に記憶の彼方に跳んでいた。別の記事を復習していてたまたま目に付いたのである。

Mathicsは,Pythonベースのフリーでオープンソースの汎用計算機代数システムであり,Mathematica®と互換性のある構文と関数を特徴としている。早速,MacBook Air M1で動かしてみると動かない。pip3 install Mathics で簡単に復活した。
Mathics 5.0.2
on CPython 3.10.8 (main, Oct 13 2022, 09:48:40) [Clang 14.0.0 (clang-1400.0.29.102)]
using SymPy 1.10.1, mpmath 1.2.1, numpy 1.23.4

Copyright (C) 2011-2022 The Mathics Team.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions.
See the documentation for the full license.

前回より,かなりバージョンがあがっている。 GUIの画面も実装しているようなので試してみたが,これがなかなか難渋する。どうやら,Three.jsというJavascriptによる三次元グラフックシステムを利用しているらしい。これも7-8年前に流行ったようだが全く知らなかった。MathicsのGUI版の方は,Mathics-Djangoという名前で,PythonのウェブフレームワークのDjangoの上で動いていた。

pip3 install Mathics-Django 
cd mathics-django-master/mathics_django
*You have 21 unapplied migration(s). 
python3 manage.py migrate
python3 manage.py runserver 
*error AttributeError: module 'scipy.linalg' has no attribute 'inv'
pip3 install scipy-stack
python3 manage.py runserver
*error sqlite3.OperationalError: unable to open database file
*error django.db.utils.OperationalError: unable to open database file
mkdir ~/.local/var/mathics 
djangoは,作業ディレクトリ(~/mathics-django-master/mathics_django)で,manage.py runserver を実行すると,ローカルのウェブサーバー( http://127.0.0.1:8000/)が立ち上がる仕組みになっている(エラーが出たら指示に従ってディレクトリに必要なファイルを持ってくる)。最初のエラーは,scipy-stackのインストールで,次のエラーは,データベースの場所の問題だったが,~/.local/var/mathicsというデフォルトのディレクトリを作成することでようやく解決することができた。

早速実行してみたが,相変わらず,計算量の制限は大きく,1500!(10進 4114桁)くらいまでしか計算できない。本物のMathematicaならば,10000000!(10進 65 657 059桁)でも平気で計算できるのだけれど。

なお,List of computer algebra systems には無事に掲載されていた。


図:MacBook Air M1にインストールしたMathics GUI版

2022年11月21日月曜日

マストドン(4)

マストドン(3)からの続き

マストドンについては,5年前にすこし齧っただけだった。そこで,初心者として一から勉強してみることにした。

(1) 入門テキストはいろいろあったけれど,マストドンWikiがよかった。

マストドンはメールとよく似ている。複数のメールサーバは,共通のプロトコル(SMTP)に基づいて,異なったサーバの登録ユーザ同士が互いにメールをやりとりできる仕組みを提供している。一方,マストドンとは個人や組織が運営する複数のサーバの連合(Federation)間の共通のプロトコル(ActivityPub)で記事(ポスト)をやりとりする仕組みのことだ。SNSの特徴であるフォロー関係は自サーバだけでなく,連合に属する他サーバのユーザに及んでいる。

マストドンの記事における文字数上限は,ツイッター(140字)の3.5倍の500字である。ツイート(トゥート)やリツイート(ブースト)はできるが,引用リツイートはできないし,記事内容の全文検索もない。タイムラインには三種ある。(1) ホーム:自分のフォロー関係(連合を含む),(2) ローカル:所属しているマストドンサーバの利用者全体,(3) 連合:所属サーバが連合しているすべてのサーバの利用者の全体。

ツイッターは(他の主なSNSもそうだけれど),一企業(組織)が運営する一つのサーバシステムの元にすべてのユーザが登録されている。このサーバシステムの運営が終了すればそれでおしまい。そんなわけで,イーロン・マスクの動きで不安になったユーザがエクソダスの準備を始めた。マストドンは,一つのサーバの運営が終了しても,そのアカウントはフォロー関係を維持しながらサーバ間で引っ越すことができる(できない部分もある?)。フェデレーション環境は全体として存続しているので,相対的には安心な仕組みだ。

(2) マストドンの公式統計資料は探してもなかなか出てこなかったが,Mastodon instances and network APIを使った,What goes on Mastodon というサイトが見やすかった。そこにある図から読み取ったマストドンサーバの登録者数と投稿数は次のとおり。
サーバ           ユーザ数 ポスト数
mastodon.social 87.7万 42.3M
pawoo.net         77.9万 67.3M
mstdn.jp            28.8万 62.0M
mastodon.cloud   22.8万 4.5M
mastodon.online 16.5万 2.5M
mas.to               12.7万 1.7M
mastodon.world    7.4万 0.2M

図:1700個のマストドンサーバーの分布(横軸: ユーザ数,縦軸: 投稿数)

イーロンマスクは,6兆円を使ってツイッターを買収してCEOになった。その目的の一つが右寄り(≒差別的)言論の開放であり,そのシンボルとしてトランプ元大統領のアカウントを復活させた [1]。しかしトランプ本人はツイッターに戻るつもりはないらしい。

[2]The FederationFediverseについて)

2022年11月20日日曜日

マストドン(3)

マストドン(2)からの続き

そもそも現在のSNS事情はどうなっているかを復習してみた。国内で月当りアクティブユーザ数(MAU)の多い7つのSNSを順に並べると以下のようになる(Social Media Lab 2022.11)。
                国内(MAU) 世界(MAU)
LINE       9,200万 1億9,300万
YouTube     7,000万 20億
note       6,300万  −  
Twitter   4,500万 3億3,300万
Instagram 3,300万 10億
Facebook   2,600万 29億3,000万
TikTok              1,700万 10億

なお,世界的にはこれらの他に,WhatsApp(20億,メタ=米国) ,WeChat(13億…中国国内分,テンセント=中国)などもある。

7つのSNSすべてについて自分のアカウントを作っている。LINEは家族連絡用のみ,YouTubeは情報検索・情報入力用,noteは無料コンテンツに誘導された場合だけ,Twitterは世の中の動きをみるため(エコーチェンバーになっているのであまり意味がないかも),Instagramは散歩スナップの発信用,高齢者ユーザが多いFacebookでは友人・知人の様子がわかる,若者向けTikTokはほとんど使っていない。

マストドンには,分散サーバ(インスタンス)の数が1650ほどある。その合計ユーザ数が700万人だ。各サーバ平均4000人だが,フォローしていればどのインスタンスのユーザでも自分のタイムラインに見える。ただし,Twitterに比べて1桁小さい規模である。Twitterでは900人ほどをフォローしフォローされているが,5年前のマストドンで自分がリンクしていたのは200人ほどであったが多くは休眠状態だ。そんなわけで,タイムラインを眺めていても世界の様子を知ることはまだできない。


図:SNSのイメージ(by DiffusionBee)

2022年11月19日土曜日

弾道ミサイルの軌道(5)

弾道ミサイルの軌道(4)からの続き

NHKの報道によれば,11月18日(金)午前10時14分,北朝鮮のICBMが発射され,午前11時23分に北海道渡島大島の西200kmの海上に落下した。飛行時間は69分,飛行距離は1,000km,最高高度は6,100km,速度はマッハ22とされている。

また,弾頭質量によっては15,000kmを越える射程となり,米国本土を狙えるとあった。しかし,今回の実験もロフテッド軌道だったので射出角は90度にかなり近いはずだ。これをより低い角度にすれば質量を変化させなくても十分到達できると思うけれどどうなのか。とりあえず,自分のモデルで計算して確かめてみよう。

g = 0.0098; R = 6350; τ = 87; p = 0.75; a = 0.0446; s =  45 Degree; T = 5100; 
g = 0.0098; R = 6350; τ = 87; p = 0.75; a = 0.0446; s =  86.2 Degree; T = 4140; 

fr[t_, τ_] := a*Sin[s]*HeavisideTheta[τ - t]
ft[t_, τ_] := a*Cos[s]*r[t]*HeavisideTheta[τ - t]
fm[t_, τ_] := -p/(τ - p*t)*HeavisideTheta[τ - t]
sol = NDSolve[{r''[t] == -fm[t, τ]*r'[t] + h[t]^2/r[t]^3 - g R^2/r[t]^2 + fr[t, τ], 
r[0] == R, r'[0] == 0, h'[t] == -fm[t, τ]*h[t] + ft[t, τ], h[0] == 0}, {r, h}, {t, 0, T}]
f[t_] := r[t] /. sol[[1, 1]]
d[t_] := h[t] /. sol[[1, 2]]
Plot[{6350, f[t]}, {t, 0, T}]
Plot[{f[t + 1] - f[t], d[t]*R/f[t]^2, d[t]/f[t]}, {t, 0, T},  PlotRange -> {-4, 8}]

tyx[T_] := {T, f[T] - R, NIntegrate[R d[t]/f[t]^2 , {t, 0, T}]}
v[T_] := Sqrt[(f[T] - f[T - 1])^2 + (R d[T]/f[T]^2)^2]
{tyx[T], v[T]/0.340}
{{4140, 41.9866, 1036.42}, 22.9628}
g0 = ParametricPlot[{NIntegrate[R d[t]/f[t]^2 , {t, 0, tt}],  f[tt] - R}, {tt, 0, T}]

このモデルの仮定は次のようなものである。(1) 距離の二乗に反比例する万有引力が働く極座標での運動方程式を解く。(2) コリオリの力や空気抵抗は考えない。(3) 推進剤の燃焼噴射によって,投射体の速度ベクトルの方向に等加速度(a=0.0446 km/s^2)を発射時から一定時間加える。これにより投射体の質量は燃料が0になるまで一定の割合で減少する。(4) 多段式ロケットは考えず,一段式として全質量に対する燃料比(p=0.75)を与える。このとき,運動方程式は全質量に依存しない。(5) 飛行時間の観測値を与え,投射角度と推進加速時間を主パラメータとして,飛行時間と最高高度の観測値が再現されるように調整する。

結論としては,弾頭質量(というか全質量に対する燃料比)を変化させなくても,射出角を86.2度から45度に変更すれば,飛行時間5100秒(85分)で到達距離が14,600kmになる。なお,ロフテッド軌道の場合の弾道ミサイルの最高速度はマッハ23となり,報告されたマッハ22をほぼ再現した。


図:同一パラメタで射出角と飛行時間だけを変えた場合の弾道軌道

P. S. 11月19日の北朝鮮の朝鮮中央通信によれば,このロフテッド軌道の弾道ミサイルは,新型大陸間弾道弾「火星17」の試験発射であり,最高高度 6,040.9 km ,飛行距離 999.2 km ,飛行時間 4135 秒とのことだ。なお,同じ火星17は,今年の3月24日には,最高高度 6,248.5 km ,飛行距離 1090 km ,飛行時間 4052 秒で飛行している。

[2]北朝鮮のミサイル等関連情報(続報第2報,防衛省・自衛隊)
  (防衛省からは,わかった部分から順に発表されている。発表時刻を入れるべきでは)


2022年11月18日金曜日

マストドン(2)

マストドン(1)からの続き

イーロン・マスク(1971-)が,2022年10月31日にツイッター社を買収完了してCEOに着任してから混乱が始まっている。なぜかWikipediaの日本語版記事には,ツイッター買収後の話題はほとんどない。

社員の半数の3500人に解雇通告を出したため,モデレーションが機能しなくなり,差別的な投稿内容がほぼ野放し状態になってしまったようだ。また,本人確認アカウントが有料化されて,公式マークと分離されたことで,ニセ公式アカウントが横行しているらしく,この方針はペンディングになっているらしい。さらに,11月18日には,本社オフィスが従業員に対して11月21日まで閉鎖されるという告知がきた。

リバタリアンであるイーロン・マスクが,言論の自由というときには,大きな副作用がともなう。公共セクターが私的所有されることは,メディアだけでなく,エネルギーや交通その他の社会インフラでもこれまでに長い歴史があるのが,マスクは7兆円で買ったツイッターを玩具のようにいじくり回しているようだ。

これに危機感をいだいたユーザや広告主のツイッター離れが進んでいる。その行き先の一つが,マストドンである。2016年にはじまり,2017年の前半にブレイクしたもののあっというまにしぼんでしまった分散型 Twitter 類似SNSだ。数学記号を自由に使えるmathtod.online の方はときどきアクセスしていたが,5年ぶりに日本で最大規模のユーザをかかえるサーバのひとつであるmstdn.jpに帰ってみた。もっかのはやりは,フェディバードらしい。

結城浩や,るまたんなどごく少数のアクティブユーザが帰還しているだけなので,まだどうなるのかわからない。


図:.mastodonの公式イメージかな?

2022年11月17日木曜日

無敵

「無敵」というのは,スタニスラフ・レム(1921-2006,今ではスタニスワム)のSF小説,砂漠の惑星(1964)の原題である。エデン(1959),ソラリスの陽のもとに(1961),砂漠の惑星が,レムのファーストコンタクト三部作とよばれている。フランク・ハーバート(1920-1986)のデューンシリーズの第一作が砂の惑星(1965)と訳されたので,なんだか紛らわしくて困る。早川書房がわるいのか。

そのレムは,サイバネティックスに大きな影響を受けていて,砂漠の惑星では,砂つぶのようなサイズで全体として知能を持ち自己増殖する自動機械の集合体が登場する。それがいよいよ現実の存在になろうとしている。

コーネル大学のグループが,アリの頭よりも小さな電子脳(1000トランジスタのCMOSクロック回路)をマイクロロボット(40 μm × 70 μm)に搭載し,外部からの制御なしに自律的に動くことを可能にした。ロボットの脚は白金ベースのアクチュエーターで,回路と脚の両方が太陽光発電で駆動している。

このマイクロロボットは半導体製造プロセスのような手法を用い,シリコンウェーハで大量生産できる。光センサーや化学物質センサーを搭載して体内に注入すれば,ロボットは折り紙の原理で変形して,その集合体が標的となるガン細胞を取り囲むような将来イメージも描かれている。ほとんど,アイザック・アシモフ(1920-1992)がノベライズした映画のミクロの決死圏(1966)の世界でもある。


写真:コーネル大学のマイクロロボットの顕微鏡写真(2020)

2022年11月16日水曜日

三宅雪嶺記念館

好きな作家を三人あげなさいといわれたら,最近ならば町田康がその一人に入るような気がする。飯田橋文学会では,日本文学の作家のインタビューシリーズの動画を制作しているが,その最近号に町田康がでてきて,聞き手はちょっといやだったけれど,面白くまじめな話をしていた。

それで,気がつくと三宅雪嶺(1860-1945)を検索していた。別に町田康がその名前を出していたわけではないので,因果関係は特にない。なんだかよくわからない。三宅雪嶺の名前は金沢出身の文筆家ということで意識の片隅にあった。町田康のインパクトで意識空間にさざ波が立ったのかもしれない。

三宅雪嶺記念資料館が,流通経済大学に設けられていて,10年ほど前に10周年を迎えたという記念誌が発刊されていた。雪嶺の孫の三宅立雄名誉教授が雪嶺の資料を寄贈したことで開設に至った。金沢市の新堅町に生まれた三宅雪嶺の資料は,金沢ふるさと偉人館にもある。雪嶺は15歳で金沢を離れ,名古屋の愛知英学校を経て東京開成学校(東京大学)に進学する。

金沢泉丘高等学校の前身の石川県尋常中学校(後の金沢第一中学校)が設立されるのが1893年なので,雪嶺の学生時代とは重ならない。泉丘高校の前庭にあった厳霜碑は明治41年に日露戦争で亡くなった一中卒業生の慰霊碑だ。現在は全物故同窓会員の慰霊の碑となっており,その碑文を三宅雪嶺が書いている。3年間この慰霊碑を目にしており,前でクラス写真を撮ったりしたけれど,それが何かまったく理解していなかった。

三宅雪嶺は,哲学者,国粋主義者,評論家である。その妻の三宅花圃(1869-1943)は,明治時代の初めての女性小説家であり,同門の樋口一葉の誕生に影響を及ぼしている。右翼,ジャーナリスト,政治家の中野正剛は,雪嶺の娘婿である。ナチスに近い右翼政党の東方会を設立した中野正剛は東条英機と激しく対立し,中野正剛事件で自殺に至っている。


写真:金沢泉丘高校の厳霜碑(三宅雪嶺の碑文)

2022年11月15日火曜日

80億人の日

世界人口デーからの続き

2022年11月15日に世界の推計人口が80億人を超えたというニュースが流れている。その内容は,7月11日の世界人口デーに公開された国連人口基金世界人口推計で示されていた。

11月15日は,「80億人の日」と命名されたらしい。そもそも世界人口をちゃんと数えられているかという問題もある。日本では国勢調査も行っているので,それなりの精度があるのではないかと昔は思っていた。が,昨今の政府の統計偽装か改竄からすれば,日本の公的なデータの信頼性も眉唾でかからないといけないような時代になった。

世界人口時計によれば,1日に34万人生まれ,17万人亡くなっているので,人口の有効桁数だけでなくゆらぎも考慮する必要があるかもしれない。11月15日とピンポイントで指定しているのは,動物園の1000万人目入場者おめでとうみたいな,象徴的な意味だけなのだろう。

国連は,世界人口の場合の○○億人目の節目の赤ちゃんを選んでいるらしい。まあ,エイヤっと決めるのだろうけれど。仮想世界で完全に世界の情報が把握できている場合は,すべての誕生アバターには,その誕生時刻における世界の総アバター数をリンクすることができる。そこで,総アバター数から逆リンクをたどれば,これに対応する誕生アバターの集合が得られる。つまり,○○億人目のアバターはゆらぎのせいで(あるいは単調増加関数でないため)一意的に定まらないということになる。


図:世界人口80億人のスクリーンショット


2022年11月14日月曜日

Intel Fortran

量子物理学の授業は,前期の復習モードが終わりつつある。1次元の有限井戸型ポテンシャル問題の解となるエネルギー固有値と固有関数を求めるというものだった。とりあえず,普通の教科書にあるような,$y=-\frac{x}{\tan x}$と,$x^2+y^2=r^2$のグラフを描いて交点からエネルギー固有値を求めようというお話で終るわけだ。

ところで,現代的な量子力学の教科書ではどうなっているのだろうか。サクライの教科書では,井戸型ポテンシャルは,付録のシュレーディンガー方程式の解の例のところで,結果だけがほんの1pにまとめられていた。堀田さんの教科書では,第11章の粒子の量子的挙動の演習問題にチョロッと顔を出しているだけだった。まあそういうことだ。

気分を変えて1次元ポテンシャルの一般的な数値解法がないかと探してみると,インテルのフォートランを使った解説ページが見つかった。インテルのフォートランは有償だと思っていたけれど,どうやら無償で使えるし,macOSにもかろうじて対応しているようだ。そこで参考サイトにしたがって,早速インストールしてみた。

(1) Intel OneAPI Toolkitsで,Intel oneAPI Base Toolkit とIntel oneAPI HPC Toolkit の2つのパッケージをダウンロードする。その際にユーザ登録が必要となるが無償である。
(2) それぞれのToolkitを展開する(ネットワークインストール版を使った)。
(3) 下記の場所にある環境設定スクリプトに誘導されるのでこれを実行する。
https://www.intel.com/content/www/us/en/develop/documentation/get-started-with-intel-oneapi-base-hpc-macos/top/before-you-begin.html?cid=oth&campid=iags_install&source=installer?cid=oth&campid=iags_install&source=installer

. /opt/intel/oneapi/setvars.sh

 (4) 簡単なプログラム a.f を作って実行してみた。

      implicit complex*16(a-h,o-z)

      write(*,*) "input a,b,c"

      read(*,*) a,b,c

      x1=(-b+sqrt(b**2-4*a*c))/2

      x2=(-b-sqrt(b**2-4*a*c))/2

      write(*,*) " x1= ",x1," x2= ",x2

      end


$ ifort a.f

$ ./a.out

 input a,b,c

$  1,1,1

$   x1=  (-0.500000000000000,0.866025403784439)  x2= 

 (-0.500000000000000,-0.866025403784439)


できた。


SIN基底とQUADPACKによる1次元時間依存しないシュレーディンガー方程式のページの例題も試してみる。調和振動子のエネルギー準位が再現できた。なお,行列の対角化ライブラリがはいっているインテル・マス・カーネルライブラリのオプション -mkl を -qmkl にせよとの警告がでていた。


$ ifort -qmkl quadpack.f90 main.f90

$ ls

a.out main.f90 quadpack.f90

$ ./a.out

           1  0.499999999999997     

           2   1.50000000000004     

           3   2.50000000000008     

           4   3.50000000000073     

           5   4.50000000003176     

           6   5.50000000018886     

           7   6.50000000502383     

           8   7.50000002123218     

           9   8.50000037227348     

          10   9.50000121353051   


2022年11月13日日曜日

ホール・アース・カタログ

NHKの映像の世紀で先日放映された「世界を変えた“愚か者”フラーとジョブズ」がすごく面白かった。

フラーはアメリカの思想家,建築家であるバックミンスター・フラー(1895-1983)。宇宙船地球号という概念の提唱者であり,ジオデシック・ドームを考案した。1985年に見つかった炭素の同素体のフラーレン(buckminsterfullerene,buckyballs)はフラーにちなんで名付けられている。一方,ジョブズは(Apple)のスティーブ・ジョブズ(1955-2011)である。

この二人の愚か者が,ホール・アース・カタログを経由して強く結ばれていたというのが放送のテーマだった。2005年6月12日にスタンフォード大学の卒業式に招かれたジョブズのスピーチは,簡単な挨拶の後にMy story is about death から始まるが,とても印象深いものだった。その結びの言葉である,Stay Hungry. Stay Foolish. は彼が大きな影響を受けたホール・アース・カタログの最終号からきている。

ホール・アース・カタログは,スチュアート・ブラント(1938-)が創刊したヒッピー文化やハッカー文化などのカウンターカルチャーの雑誌だった。そのブラントが,バックミンスター・フラーの多大な影響を受けていた。カタログの最初には,フラーの4冊の本が取り上げられ,The insights of Buckminster Fuller are what initiated this catalog.とあった。(スチュアート・ブラントが後に原発推進の立場になっていたのはまた別の話,松岡正剛の千夜千冊を参照

ホール・アース・カタログが1974年に終刊を迎えたとき,余剰金の2万ドルをどうするかが議論となり,それは結局,平和活動家のフレッド・ムーア(1941-1997)に託された。そのフレッド・ムーアは,1975年3月にメンロパークで立ち上げられたホームブリュー・コンピュータ・クラブ(1975-1986)の創設に加わる。ジョブズはアップルの共同創業者となるスティーブ・ウォズニアック(1950-)とともにこのクラブに参加していたのだった。

2011年にジョブズは,MacやiPhoneやiPadを残し膵臓ガンで亡くなった。彼が生前に計画していた,ノーマン・フォスター(1935-)のデザインによるアップル・パーク本社の特徴的なドーナツ型の建物は,2017年にできあがった。ノーマン・フォスターはバックミンスター・フラーの弟子でもあった。


写真:アップルパークのアップル本社(Wikipediaから引用)

2022年11月12日土曜日

一谷嫩軍記

久々の国立文楽劇場で,第二部の一谷嫩軍記を観劇する。

弥陀六内の段(睦太夫・團吾)から,脇ヶ浜宝引の段(織太夫・燕三),熊谷桜の段(希太夫・清丈)まで気持ちよく寝てしまった。織太夫は病休の咲太夫の代演だったようで,ここはちゃり場だとはいうものの,声が大きいだけで粗っぽくあまり聞く気にはならなかった。家人によれば希太夫が良かったということだが,これは残念ながら聞き逃してしまった。

熊谷陣屋の段の前半が竹本錣太夫と竹澤宗助。モチモチした語り癖はあるとはいうものの,うまく語り分けていて,熊谷次郎直実と妻相模と敦盛の母の藤の局のややこしい話が進んでゆく。後半の切は豊竹呂太夫と鶴澤清介。語り始めの三味線の前奏部分は,似たようなメロディだけれど,宗助に比べると清介の音の方が一段と澄んでいる。バチ捌きはともにするどい。呂太夫は相変わらず声が出ていない。瞬間的なバーストがあったものの,なんだか残念だ。

熊谷陣屋の段は何度か見ているはずだけれど,いまだに物語が飲み込めていなかった。義経が出した桜の前の制札にある「一枝を伐らば一指を剪るべし」の後半の「一指」が「一子」にかかっていて,敦盛を討取ったと見せかけて自分(熊谷直実)の子どもの小次郎の首を差し出すことにせよと解釈するところまではよい。そこに絡む藤の局と相模の関係とか,弥陀六の位置づけがわからなかった。今回,肝腎のその説明部分で寝ていたのだけれど,最終盤で義経を挟んで弥陀六,藤の局,相模,熊谷次郎直実の5人が対称的に並んで見得を切っていたのでなんとなく雰囲気はわかった。

今日は珍しく花道が設置されていたが,第三部に弁慶の勧進帳があるからだった。


図:一谷嫩軍記の熊谷次郎直実(Wikipediaから引用)

2022年11月11日金曜日

最小交換硬貨枚数(2)

最小交換硬貨枚数(1)からの続き

前回の結果からいくつかの疑問がでてきた。最小交換硬貨枚数の平均値が最小となる中間硬貨は5円でよいのだろうか。5の倍数以外だと,ドルでは25セント,ユーロでは,0.02ユーロ,0.2ユーロ,2ユーロなどの硬貨がある。中国(元,角)や韓国(ウォン)は日本と同じで5の倍数だけだ。

そこで,2円〜9円までの中間硬貨を設定したときの最小交換硬貨枚数の平均値を求めてみることにする。ついでに,硬貨種類別の交換枚数の合計や情報エントロピーも合わせて計算する。なお,1円から1000円までの一円刻みの商品の支払いを硬貨のみで行い,手持ち硬貨数やおつりの硬貨数は冗長性をはぶいた最小の値の範囲で考える。

function foop(m,y)
    nmin = 100
    mm = div(9,m)
    c=[1,m,10,10*m,100,100*m]
    k=[0,0,0,0,0,0]
    t=[0,0,0,0,0,0]
    for k[1] in -(m-1):(m-1)
    for k[2] in -mm:mm
        for k[3] in -(m-1):(m-1)
        for k[4] in -mm:mm
            for k[5] in -(m-1):(m-1)
            for k[6] in 0:mm+1
                z = 0
                n = 0
                for j in 1:6
                    n = n + abs(k[j])
                    z = z + c[j]*k[j]
                end
                if z==y
#                   println(z," : ",k," : ",n)
                    if n < nmin
                        nmin = n
                        for l in 1:6
                            t[l] = abs(k[l])
                        end
                    end
                end
            end
            end
        end
        end
    end
    end
    return nmin,t
end

function main(m)
  p=[0.,0.,0.,0.,0.,0.]
  s=[0,0,0,0,0,0]
  t=[0,0,0,0,0,0]
  a=zeros(Int,1000)
  sum=0
  for i in 1:1000
    (n,t) = foop(m,i)
    a[i]=n
    sum = sum + n
    for j in 1:6
        s[j] = s[j] + t[j]
    end
#    println(i," ",n)
  end
  inf = 0.0
  for j in 1:6
     p[j] = s[j]/sum
     inf = inf -p[j]*log2(p[j])
  end
  @printf("%.3f : %04d %04d %04d %04d %04d %04d -> %.3f\n",
          inf,s[1],s[2],s[3],s[4],s[5],s[6],sum/1000)
#    println(a)
  plot(a)
end


for i in 2:9
    print(i," ")
    main(i)
end

2 2.301 : 0500 1025 0445 1000 0455 2275 -> 5.700
3 2.473 : 0753 0747 0601 0758 0547 1611 -> 5.017
4 2.552 : 0700 0738 0564 0728 0826 1118 -> 4.674
5 2.487 : 1254 0446 1020 0450 1000 0956 -> 5.126
6 2.466 : 0984 0500 0814 0500 1530 0690 -> 5.018
7 2.491 : 0900 0600 0793 0600 1518 0636 -> 5.047
8 2.458 : 1358 0614 1065 0640 1640 0545 -> 5.862
9 2.314 : 2054 0446 1644 0442 1650 0510 -> 6.746

等比数列の中間値である√10や根拠はないけれどネピア数e 近辺あたりの3円がよいのかと思いきや,4円にすると平均交換硬貨枚数が 4.67枚となって,5円の5.13枚よりも小さくなるのだった。ただし,情報エントロピーの最小値は2円の 2.30なのである。どういう意味かまではわかっていない。


図:1円から1000円までの交換硬貨枚数(中間硬貨は5円)

2022年11月10日木曜日

最小交換硬貨枚数(1)


2025年度の大学入学共通テストに新規参入する「情報I」の試作問題が,日経の朝刊に掲載されていた。

退職前には,監督に当たるのはこれ以上体力的精神的な限界をはるかにこえてもう絶対無理と思っていた大学入学センター試験だ。これが,大学入学共通テストと看板を替えて,教科「情報」を新しい試験科目として追加採用してしまった。情報教育関係の大学や高校の教員の皆さんはお喜びのようであるが,なんだかなぁの案件である。

60分で全問必答の大問が4問出題されている。掲載されていた第3問がプログラミングの問題だったので,さっそくチャレンジしてみた。その問題のテーマは最小交換硬貨枚数だ。最近は,PayPayで支払うことが増えてきたが,財布の硬貨数の制御は老人の認知症防止のために最適である。おつりが増えすぎないように,少し硬貨を加えて切りのよいおつりにするあれね

例えば,46円の支払いだと,10円×4 + 5円×1 + 1円×1 でもよいし,50円×1 + 1円×1 - 5円×1 もある。ここで,マイナスはお店から戻ってくる硬貨を表わしている。前者の交換硬貨枚数は6枚であり,後者では3枚となり,後者の方が交換硬貨枚数は少ない。

問題の誘導部分を読む前に,さっそくプログラムを作ってみたが,肝腎の多めに払っておつりが返ってくるところに不備がありまくりだった。

function pay(m,y)
    n = 0
    c=[500,100,50,10,5,1]
    d=[y]
    for i in 1:6
        while y-c[i] >= 0
            y = y - c[i]
            n = n + 1
            push!(d,c[i])
        end
    end
    push!(d,-(m+n))
    println(d)
    return m+n
end

function change(y)
    m = 0
    n = 0
    c=[1,5,10,50,100,500]
    d=[y]
    pay(0,y)
    for i in 1:5
        while mod(y,c[i+1])!=0
            y = y + c[i]
            n = n + 1
            push!(d,c[i])
        end
        m1 = m + n
        if m1!=m
            push!(d,-m1)
            print(d)
            pay(m1,y)
            n=0
            deleteat!(d,length(d))
        end
        m = m1
    end
end

change(46)
[46, 10, 10, 10, 10, 5, 1, -6]
[46, 1, 1, 1, 1, -4][50, 50, -5]
[46, 1, 1, 1, 1, 50, -5][100, 100, -6]
[46, 1, 1, 1, 1, 50, 100, 100, 100, 100, -9][500, 500, -10]

そこで,1000円以下なら数もしれているということで,方針を変えて総当たりで確認するアルゴリズムに変更した。全くスマートではないのである。この中から最小値を探すのは目の子でできる。出力される配列 [ ] の中身は,交換される硬貨枚数が並んでいて,マイナスがついたものは店から客へのバック分を表わしている。最後の出力値が交換硬貨枚数だ。

function foop(y)
    c=[1,5,10,50,100,500]
    k=[0,0,0,0,0,0]
    for k[1] in -4:4
    for k[2] in -1:1
        for k[3] in -4:4
        for k[4] in -1:1
            for k[5] in -4:4
            for k[6] in 0:2
                z = 0
                n = 0
                for j in 1:6
                    n = n + abs(k[j])
                    z = z + c[j]*k[j]
                end
                if z==y
                    println(z," : ",k," : ",n)
                end
            end
            end
        end
        end
    end
    end
end

foop(46)
46 : [-4, 0, 0, -1, -4, 1] : 10
46 : [-4, 0, 0, -1, 1, 0] : 6
46 : [-4, 0, 0, 1, 0, 0] : 5
46 : [1, -1, 0, -1, -4, 1] : 8
46 : [1, -1, 0, -1, 1, 0] : 4
46 : [1, -1, 0, 1, 0, 0] : 3
46 : [1, 1, -1, -1, -4, 1] : 9
46 : [1, 1, -1, -1, 1, 0] : 5
46 : [1, 1, -1, 1, 0, 0] : 4
46 : [1, 1, 4, 0, 0, 0] : 6

ここまでくるのに2時間くらいかかったので,とてもじゃないけれど自分の場合60分で大問4問も解けそうにはない。ループ変数を配列にするなんていうのは初めての経験だった。


写真:日本の通常硬貨(造幣局から引用)


2022年11月9日水曜日

ブルーダイアリー

久々に家人の所用で梅田まで出る。冬に入り来年の手帳を買う季節がやってきた。

手帳を使い始めたのは,中学校のころだ。父が,北國銀行の古い手帳の残部をくれることがあって,なんとなく持ち歩いていた。手帳というのは,自分が必要とする知識をコンパクトに収めて携帯するものだと認識していた。田舎の中学生に行事や業務の予定はない。

理科の図鑑を沢山読んでいた小学校低学年のころ,宇宙の重要なデータを小さな紙に書きまとめ持ち歩いていたことがある。最も重要だと考えたのが光の速度で,1秒間に30万km,2秒で60万km など,かけ算のテーブルよろしく表にしていた。他に何を記載していたかよく憶えていないが,太陽や月や惑星のデータだったかもしれない。まあ,こども理科年表ですね。

理科で月を扱う単元の最初の時間(小学校2年),「月について知っていることはありますか」との先生の発問に,ハイハイハイと大きな声いっぱいに手を上げて無事あてられたものの,「月は地球の衛星で・・・」と頭でっかちの思いばかり先走り,その後の言葉が続かなかった。

高校時代,米島君に北國銀行の手帳を見せて自慢していたら,彼は,タナベ経営ブルーダイアリーをどこからか探し出してきた。確かにそちらの方がスマートで機能的だった。自分でこのブルーダイアリー・ジュニアを毎年買うようになったのは大学に入ってからだろうか。それ以来50年は使っていることになる。手元の引き出しには1990年からの30年分が置いてある。

ブルーダイアリーはその後,行事予定記録帳やパスワードメモ帳として活用されるのだが,定年前後から書くべき予定もなくなってしまい,アイディア計算ノートに変貌してしまった。それでも毎年購入していないと落ち着かない。

阪急百貨店のこじゃれた文房具コーナーで探すものの,高橋書店の手帳や能率手帳しか置いていない。しかたなく,紀伊国屋書店までひとっ走りしたのだが,ここも高橋書店やモレスキンやシステム手帳に占領されている。店員さんに尋ねて探し回った結果,ようやく隅の方に埋もれていたブルーダイアリー・ジュニアが発掘された。

ネットで検索してみると,タナベコンサルティングのブルーダイアリーは店頭販売から撤退してネット販売だけになっていた。ようやく買い求めることができた2023年のブルーダイアリーは外装がシックな紺の網目に変更されていた。手書きの手帳はいつまで続くことだろう。


写真:外装が濃青から紺に変更されたブルーダイアリー・ジュニア