Twitter

Twitterで数学に関する話題を発信しています。本家のサイトはログインしなければ閲覧できない仕様になってしまったので,当サイトに移して誰でも見られるようにしました。(2023.8.1)

新しい1234567古い
浜田昌宏 / 浜田塾@hamadajuku

関数のオーバーロードと同じで,等価演算子も多重定義できるのは型で区別ができる場合に限ります。厳密にはそうなのですが,数学はちょっといい加減で,型では区別のつかない複数の $=$ を混ぜて使うことがあります。高校数学で言えば,偏角の $=$ と不定積分の $=$ です。

浜田昌宏 / 浜田塾@hamadajuku

例えば $\arg zw=\arg z+\arg w$ と書いたとき,この $=$ は「$2\pi$ の整数倍の差を無視して等しいとみなす」という意味であり,通常の $=$ とは異なる定義で使われています。両辺の型は実数なので,どちらの定義が採られるのか区別ができません。

浜田昌宏 / 浜田塾@hamadajuku

式中に $\arg$ があれば分かるだろうということですが,それには欠点があります。

  • $\arg z=\pi$
  • $\arg w=3\pi$
  • $\arg z=\arg w$
上の3つが成り立つとき,$=$ の対称律と推移律にしたがって次も成り立つことになります。
  • $\pi=3\pi$
しかしこの式には $\arg$ がなく,両辺が偏角であることが分かりません。さすがにこの式は認め難いでしょう。

浜田昌宏 / 浜田塾@hamadajuku

このような状況に対応したのが整数の合同式で使われる $\equiv$ です。偏角の $=$ も $2\pi$ を法とする合同とみなして $\equiv$ で表せば上述のような問題は起きません。

浜田昌宏 / 浜田塾@hamadajuku

ただしこれは高校数学の話なので,そこまでの厳密さを追求するよりも簡単であることを重んじて $=$ のままやっていこうというのも十分理解できます。

浜田昌宏 / 浜田塾@hamadajuku

プログラミングだったら,$\equiv$ のような新しい等価演算子を導入するよりも,偏角型をつくって対処すると思います。$\pi=3\pi$ はこのままでは実数型で比較されて偽ですが,左右のどちらかを偏角型にキャストすれば真になるという仕組みです。

浜田昌宏 / 浜田塾@hamadajuku

$=$ が両辺の型に応じて意味を変えるのは,プログラミングで言えば演算子のオーバーロード(多重定義)にあたります。言語によりますが,新規に作ったクラスでもちゃんと定義さえ書けば $=$ が使えます。

浜田昌宏 / 浜田塾@hamadajuku

$A=B$ と書かれていても内部的には $\text{IsEqual}(A,B)$ のような真偽値を返す2変数関数に過ぎないので,関数のオーバーロードができる言語なら演算子のオーバーロードができてもそんなに特別なことではありません。

浜田昌宏 / 浜田塾@hamadajuku

$=$ も関数ということは,その定義はどんな内容にすることもできますが,わざわざ等価演算子で書くからには従うべきガイドラインはあります。数学も同様で $=$ をどんな定義にしてもいいわけではありません。例えば同値関係を満たすようにするのは必須といってもいいでしょう。

浜田昌宏 / 浜田塾@hamadajuku

$=$ が同値関係を満たすというのは,次の3つを満たすことです。

  • 反射律:$A=A$
  • 対称律:$A=B$ ならば $B=A$
  • 推移律:$A=B$ かつ $B=C$ ならば $A=C$
高校数学では集合の $=$ ,ベクトルの $=$ を定義しますが,これらをちゃんと満たしています。

浜田昌宏 / 浜田塾@hamadajuku

高校数学で使われる等号 $=$ は3種類あります。複素数用,集合用,ベクトル用です。複素数用の $=$ は算数から使っている $=$ を拡張したものです。実数用もこれに含まれます。集合用とベクトル用はそれが登場する時に新たに定義されます。

浜田昌宏 / 浜田塾@hamadajuku

つまり新しい型の相等関係に $=$ を使うのであれば,何をもって等しいとするのかきちんと定義をする必要があり,ただ「同じ」と言えるくらいの感覚で勝手に使えるものではないことに注意してください。

浜田昌宏 / 浜田塾@hamadajuku

教科書に定義が書かれていないので使いにくい $=$ があります。座標と関数です。座標が等しいことを $(a,b)=(c,d)$ と表したり,関数が恒等的に等しいことを $f=g$ と表したりできれば便利ですが。

浜田昌宏 / 浜田塾@hamadajuku

座標の方はベクトルの相等の $=$ が導入されれば,点の位置ベクトルが等しいという意味で書けるのですが,ベクトルは数学Cなので学習するのが遅いのが難点です。

浜田昌宏 / 浜田塾@hamadajuku

事象の $=$ も高校数学では定義されていません。事象は集合と同じように考えてよいのですが,あまり使い道がないので(少なくとも高校数学では),わざわざ大袈裟なことは書きたくなかったのだろうと思います。ちなみに部分事象も定義されていません。

浜田昌宏 / 浜田塾@hamadajuku

白球が10個,赤玉が $n$ 個入っている箱から,同時に2個の球を取り出すとき,白球と赤玉が1個ずつである確率を $p_n$ とします。このとき $p_n$ が最大になる $n$ を求めよという問題について,直感的には $n=10$ だろうと予想できますが,解いてみると正解は $n=10$ と $n=9$ になります。

浜田昌宏 / 浜田塾@hamadajuku

なぜ $n=9$ も答えになるのか,直感的に納得できる説明を考えてみると面白いです。

浜田昌宏 / 浜田塾@hamadajuku

直角のことを $\angle R$ と表すことがあります。例えば $\angle\text{ABC}=\angle R$ と書くと,$\angle\text{ABC}=90\deg$ という意味になります。昔は中高の数学でも使われることがあったのですが,今は全く見かけなくなりました。$R$ は right angle の頭文字です。

浜田昌宏 / 浜田塾@hamadajuku

"∟" という記号もあるらしく,$∟\text{ABC}$ と書いて $\angle\text{ABC}=90\deg$ を表すそうですが,これは実際に使われているところを見たことがありません。

浜田昌宏 / 浜田塾@hamadajuku

コンピューターで対数関数を使うとき,処理系によって log(x),ln(x),lg(x) の意味がバラバラなのが困ります。

浜田昌宏 / 浜田塾@hamadajuku

ln(x) があれば間違いなく自然対数ですが,ln(x) の代わりに log(x) が自然対数だったり,そうではなく log(x) は常用対数だったり,ln(x) と log(x) のどちらか一方しか存在しなかったり,さらに lg(x) という関数があって,それが常用対数だったり,底が2の対数だったりします。

浜田昌宏 / 浜田塾@hamadajuku

自然対数 ln(x) しかない処理系で常用対数を使いたい場合は ln(x)/ln(10) と入力してください。

新しい1234567古い