Twitter

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

浜田昌宏 / 浜田塾@hamadajuku

式には再帰性があり,型さえ合っていれば必ず入れ子にできます。

浜田昌宏 / 浜田塾@hamadajuku

「A={1,2,3} のとき,1∈A と書くのはいいとして,1∈{1,2,3} と書いてもいいのか?」という質問を受けたことがあります。もちろんいいです。確かに教科書では見かけませんが,それは書けないということではありません。

浜田昌宏 / 浜田塾@hamadajuku

共通テストの試行調査で,{1}⊂A と書かせる記述問題が出たことがありました。「B⊂Aは分かるが,{1}⊂A と書いてよいのか分からなかった」という人がいました。これも確かに教科書では見かけません。

浜田昌宏 / 浜田塾@hamadajuku

{1}⊂A という表記を見たことがなくても,B⊂A と B={1} という2つの式表現を認めるのであれば,{1}⊂A も当然認められることになります。

浜田昌宏 / 浜田塾@hamadajuku

ベクトルの内積についても言えます。ベクトルa,bの内積を a∙b と書くことと,そのベクトルを a=(1,2),b=(3,4) と表記できることの両方を認めるなら,当然その内積を (1,2)∙(3,4) とも書けることになります。

浜田昌宏 / 浜田塾@hamadajuku

これも,教科書に (1,2)∙(3,4) という表記はありませんが,そうは書けないという意味ではありません。

浜田昌宏 / 浜田塾@hamadajuku

以前に,集合やベクトルと同じように関数にもリテラル表記があってもいいのでは?という話をしたことがあります。例えば f(x)=2x の f だけを表現するのに,f={x↦2x} と書く話です。

浜田昌宏 / 浜田塾@hamadajuku

これも,f(5)=10 と f={x↦2x} の両方を認めるのであれば,必ず {x↦2x}(5)=10 と書けることになります。わざわざ「書ける」と言われなくても書けます。

浜田昌宏 / 浜田塾@hamadajuku

学校数学では,座標に相等関係も演算も定義されていません。そのため座標を代数的に扱うことはできず,リテラルとして表記する以外に何もできないという窮屈なことになっています。

浜田昌宏 / 浜田塾@hamadajuku

例えば,(1,2)+(3,4)=(4,6)や,(4,6)/2=(2,3)とは書けません。ベクトルと考えれば問題ないのですが,座標である限りはダメということになっています。

浜田昌宏 / 浜田塾@hamadajuku

座標を学習するのが中1,ベクトルを学習するのが高校の数学B(選択)と,カリキュラム上のギャップが大きいこともあり,学校数学では最後まで座標を代数的に扱うことができません。

浜田昌宏 / 浜田塾@hamadajuku

中学生にベクトルが無理なのは仕方ないとしても,順序対であれば中2の連立方程式で教えるので,座標にも順序対としての相等関係くらいは導入すればいいのにと思うことはあります。

浜田昌宏 / 浜田塾@hamadajuku

そうすると,座標を文字へ代入すること,例えばA=(1,2)という表記を認めることになりますが,A(1,2)だとAは点の名前だったのが,A=(1,2)だとAは座標そのものになり,その違いを意識させる必要はあるのかという疑問が起こります。

浜田昌宏 / 浜田塾@hamadajuku

ただ,△ABCや∠AやABがそうであるように,ある表現が図形を指すこともあれば,そのプロパティ(面積,角度,長さ)を指すこともあるという運用をすでにやっているので,座標もそうすればいいだろうと思います。

浜田昌宏 / 浜田塾@hamadajuku

オブジェクトとしての表記がそのプロパティも同時に表すというのはいい加減ですが,VBのdefault propertyと同じで,初学者にとっては助かる面があります。

浜田昌宏 / 浜田塾@hamadajuku

出版物では点の名前は「𝖠」のようにローマン体で表します。それが座標を表して相等関係をもつことになれば,「𝐴」のようにイタリック体にする必要があるのでは?という問題が起こります。どうでもいいと言われそうですが,これが一番悩むところかもしれません。

浜田昌宏 / 浜田塾@hamadajuku

本当は放物線 {(x,y) | y=x²} とか領域 {(x,y) | x²+y²<1} のように書くべきなのでしょうが,それは面倒なので,y=x² や x²+y²<1 だけ書いても図形を表すことになっています。

浜田昌宏 / 浜田塾@hamadajuku

集合ならば,例えば曲線C上の点を (1,1)∈C のように表現してよいことになります。しかし,学校数学では「曲線C」と書いたときのCは集合ではなく単なる曲線の名前という扱いになるので,残念ながらこのような式を書くことはできません。

浜田昌宏 / 浜田塾@hamadajuku

どうしても集合として扱いたい場合は,「C: y=x²」のような習慣的な表記に頼らず,「C={(x,y) | y=x²}」のように集合であることを明示すればよいと思います。

浜田昌宏 / 浜田塾@hamadajuku

先日,自動車免許の更新に行った時,もらった教本の中にこのようなグラフがあったので,停止距離の式を最小二乗法で求めてみることにしました。

浜田昌宏 / 浜田塾@hamadajuku

速さをx(km/h)とします。空走距離は速さに比例し,制動距離は速さの2乗に比例すると言われていますので,空走距離はbx(m),制動距離はax²(m)とおきます。つまり停止距離はax²+bx(m)です。

浜田昌宏 / 浜田塾@hamadajuku

f(x)=ax²+bxの値と実際の停止距離yの差の2乗の総和L(a,b)を考えます。
L(a,b)=Σ(ax²+bx-y)²
ここに,(x,y)=(20,9),(40,22),(60,44),(80,76),(100,112)を適用して展開すると,
L(a,b)=156640000a²+3600000ab+22000b²-3607200a-41960b+20821
となります。

浜田昌宏 / 浜田塾@hamadajuku

ここから平方完成を2回行ってLが最小になるa,bの値を求めると,
a=0.009293…
b=0.19326…
となるので,時速x(km/h)のときの空走距離は0.19x(m),制動距離は0.0093x²(m),つまり停止距離は0.0093x²+0.19x(m)でした。

浜田昌宏 / 浜田塾@hamadajuku

実際の停止距離は人の反応時間や地面とタイヤの摩擦係数によって変わり,次のような式で表されるそうです。
空走距離(m)=反応時間(秒)×速さ(m/秒)
制動距離(m)=速さ(km/h)の2乗÷(254×摩擦係数)

浜田昌宏 / 浜田塾@hamadajuku

ここから逆算すると,この教本のグラフは,
反応時間は,3.6b≒0.7(秒)
摩擦係数は,1÷254a≒0.42
で計算しているようでした。
ちなみに,人の平均的な反応速度は0.75秒,乾いたアスファルトの摩擦係数は約0.7です。摩擦係数0.42というのは路面が濡れている時の値と思われます。

浜田昌宏 / 浜田塾@hamadajuku

集合には {n|nは素数である} のようなリテラル表記がありますが,命題や条件については一般的な表記はないようです。勝手に作ると,
{3は素数である}()=真
{nは素数である}(n=4)=偽

浜田昌宏 / 浜田塾@hamadajuku

そう言えば,関数のリテラル表記も見かけません(少なくとも高校数学では)。例えば,y=2xという関数fを表現したい場合,JavaScriptのアロー関数を借りて,f={x↦2x}のように書けたら,何か便利なことがあるかもしれません。

浜田昌宏 / 浜田塾@hamadajuku

{x↦2x}(5)=10
{x↦x²}({x↦2x}(x))=4x²
{x↦x²}∘{x↦2x}={x↦4x²}
{x↦2x}⁻¹={x↦x/2}

浜田昌宏 / 浜田塾@hamadajuku

合成関数 g∘f は,f の方が先に作用するのですが,それは f(x) の語順が VO であることが由来だろうと思います。ただしアロー表記は OV なので,
{x↦x²}∘{x↦2x}={x↦4x²}
と書くと違和感があります。

浜田昌宏 / 浜田塾@hamadajuku

この場合は合成演算子∘ではなく,代わりにパイプ演算子を▹のように決めて,f▹g と書くのが良さそうです。関数▹関数は関数を返し,値▹関数は値を返します。
{x↦2x}▹{x↦x²}={x↦4x²}
5▹{x↦2x}▹{x↦x²}=100

浜田昌宏 / 浜田塾@hamadajuku

合成関数の導関数の公式 (g∘f)ʹ(x)=gʹ(f(x))∙fʹ(x) は,=が導関数ではなく微分係数をつないでいるという不満があります。これがパイプ演算子で解消できないかと考えました。

浜田昌宏 / 浜田塾@hamadajuku

(g∘f)ʹ(x)=gʹ(f(x))∙fʹ(x) をパイプ演算子で書き直すと次のようになります。
x▹(f▹g)ʹ=(x▹fʹ)∙(x▹f▹gʹ)
左辺を (f▹g)ʹ だけにすると,
(f▹g)ʹ={x↦(x▹fʹ)∙(x▹f▹gʹ)}
これでとりあえず目的は果たしました。関数リテラル内に微分係数を閉じ込めただけであまり面白味はありませんが。

浜田昌宏 / 浜田塾@hamadajuku

真・偽も値です。命題は成り立つ,成り立たないという言い方をしますが,それは真の値を返す,偽の値を返すという意味だと考えていいです。

浜田昌宏 / 浜田塾@hamadajuku

変数を含み,それに値を代入すると命題になるものを条件といいます。つまり,変数の値に応じて真か偽の値を返すので,条件は真偽値を値域とする関数とみなすことができます。実際,条件のことを命題関数ともいいます。

浜田昌宏 / 浜田塾@hamadajuku

条件はよくpやqで表しますが,条件は関数でもあるので,p(x)やq(x)と表すこともあります。例えば,条件「xは正の数である」をp(x)と表せば,p(1)=真,p(-1)=偽となります。