Twitter

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

浜田昌宏 / 浜田塾@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)=偽となります。

浜田昌宏 / 浜田塾@hamadajuku

「集合Aのすべての要素xについて条件pが真である」という形をした命題を全称命題といいます。
命題「p⇒q」は「全体集合Uのすべての要素xについて条件p̅∨qが真である」という意味なので,全称命題の一種です。

浜田昌宏 / 浜田塾@hamadajuku

全称命題「集合Aのすべての要素xについて条件pが真である」が偽であることを示すには,Aの要素であってpが偽である,すなわち,Aの要素であってp̅が真であるものの存在を示します。これを反例といいます。

浜田昌宏 / 浜田塾@hamadajuku

つまり,命題「p⇒q」が偽であることを示すには,全体集合Uの要素xであってp̅∨qが偽である,すなわち,p∧q̅が真であるものの存在を示します。

浜田昌宏 / 浜田塾@hamadajuku

命題が偽であることを示すには反例の存在を1つ示せばよいと言われますが,それは全称命題の場合です。存在命題の場合は,真の場合と偽の場合で示し方が全称命題とは逆になります。真であることを示す場合に存在の例を挙げます。

浜田昌宏 / 浜田塾@hamadajuku

存在命題は「集合Aの要素xであって条件pが真であるものが存在する」という形をした命題です。もちろん,それが真であることを証明するには,条件pが真となるxの存在を1つ示せばいいです。
このときの例を反例とは言いませんが,その代わりになる名前も付いていないと思います。(たぶん)

浜田昌宏 / 浜田塾@hamadajuku

変数yが0≦y≦1を満たすことと,yの変域が0≦y≦1であることと,yの最小値が0かつyの最大値が1であることは,どれも同値ではありません。

浜田昌宏 / 浜田塾@hamadajuku

y=2x で 0<x<1 のとき,「yの変域は y<2」はアウトですが,単に条件として「y<2」というなら間違いではありません。y≦2 でも y<10 でも正しいです。