Twitter Twitterで数学に関する話題を発信しています。本家のサイトはログインしなければ閲覧できない仕様になってしまったので,当サイトに移して誰でも見られるようにしました。(2023.8.1) 新しい567891011古い 浜田昌宏 / 浜田塾@hamadajuku2021年5月15日limは基本的には極限値を返しますが,無限大に発散する場合にはlim𝑓(𝑥)=∞という書き方が認められています。認められた以上は正しいのですが,本来あまり行儀の良い書き方ではありません。浜田昌宏 / 浜田塾@hamadajuku2021年5月15日limにとって∞や-∞は戻り値ではなく,JavaやC#で言うところの "例外" のようなものと考えられます。lim𝑓(𝑥)と書いてもコンパイルエラーにはなりませんが,参照すると戻り値が決定できずに例外が発生し,制御は例外処理に移ると考えるのが妥当でしょう。浜田昌宏 / 浜田塾@hamadajuku2021年5月15日そういう意味では「lim𝑓(𝑥)は∞に発散する」くらいに書くのが正しいと思いますが,これを「lim𝑓(𝑥)=∞」と書くことが認められています。相等関係として扱うわけではないのに「=」を使うのは違和感があります。浜田昌宏 / 浜田塾@hamadajuku2021年5月15日でもわざわざ「lim𝑓(𝑥)は∞に発散する」と書かされるのは面倒なので,ありがたく使います。浜田昌宏 / 浜田塾@hamadajuku2021年5月15日一方で,極限がない場合のlimの扱いは不明確です。あくまで学校数学の話ですが,「lim𝑓(𝑥)は存在しない」と書いている教科書(e.g.啓林館)もあれば,lim𝑓(𝑥)と書くことを避けて「𝑥→𝑎のとき𝑓(𝑥)の極限はない」と書いている教科書(e.g.数研出版)もあります。浜田昌宏 / 浜田塾@hamadajuku2021年5月15日ところが,振動する数列に関しては,調べた限りどの教科書も「lim𝑎ₙは振動する」とは書かず,「{𝑎ₙ}は振動する」と書いています。どうやらこの場合のlimは実行時の例外ではなくコンパイルエラーとみなされるようです。これはちょっとstrictすぎないかなと思います。浜田昌宏 / 浜田塾@hamadajuku2021年5月15日あくまで出版物のルールです。受験生はあまり気にしなくていいでしょう。浜田昌宏 / 浜田塾@hamadajuku2021年5月4日式には再帰性があり,型さえ合っていれば必ず入れ子にできます。浜田昌宏 / 浜田塾@hamadajuku2021年5月4日「A={1,2,3} のとき,1∈A と書くのはいいとして,1∈{1,2,3} と書いてもいいのか?」という質問を受けたことがあります。もちろんいいです。確かに教科書では見かけませんが,それは書けないということではありません。浜田昌宏 / 浜田塾@hamadajuku2021年5月4日共通テストの試行調査で,{1}⊂A と書かせる記述問題が出たことがありました。「B⊂Aは分かるが,{1}⊂A と書いてよいのか分からなかった」という人がいました。これも確かに教科書では見かけません。浜田昌宏 / 浜田塾@hamadajuku2021年5月4日{1}⊂A という表記を見たことがなくても,B⊂A と B={1} という2つの式表現を認めるのであれば,{1}⊂A も当然認められることになります。浜田昌宏 / 浜田塾@hamadajuku2021年5月4日ベクトルの内積についても言えます。ベクトルa,bの内積を a∙b と書くことと,そのベクトルを a=(1,2),b=(3,4) と表記できることの両方を認めるなら,当然その内積を (1,2)∙(3,4) とも書けることになります。浜田昌宏 / 浜田塾@hamadajuku2021年5月4日これも,教科書に (1,2)∙(3,4) という表記はありませんが,そうは書けないという意味ではありません。浜田昌宏 / 浜田塾@hamadajuku2021年5月5日以前に,集合やベクトルと同じように関数にもリテラル表記があってもいいのでは?という話をしたことがあります。例えば f(x)=2x の f だけを表現するのに,f={x↦2x} と書く話です。浜田昌宏 / 浜田塾@hamadajuku2021年5月5日これも,f(5)=10 と f={x↦2x} の両方を認めるのであれば,必ず {x↦2x}(5)=10 と書けることになります。わざわざ「書ける」と言われなくても書けます。浜田昌宏 / 浜田塾@hamadajuku2021年5月3日学校数学では,座標に相等関係も演算も定義されていません。そのため座標を代数的に扱うことはできず,リテラルとして表記する以外に何もできないという窮屈なことになっています。浜田昌宏 / 浜田塾@hamadajuku2021年5月3日例えば,(1,2)+(3,4)=(4,6)や,(4,6)/2=(2,3)とは書けません。ベクトルと考えれば問題ないのですが,座標である限りはダメということになっています。浜田昌宏 / 浜田塾@hamadajuku2021年5月3日座標を学習するのが中1,ベクトルを学習するのが高校の数学B(選択)と,カリキュラム上のギャップが大きいこともあり,学校数学では最後まで座標を代数的に扱うことができません。浜田昌宏 / 浜田塾@hamadajuku2021年5月3日中学生にベクトルが無理なのは仕方ないとしても,順序対であれば中2の連立方程式で教えるので,座標にも順序対としての相等関係くらいは導入すればいいのにと思うことはあります。浜田昌宏 / 浜田塾@hamadajuku2021年5月3日そうすると,座標を文字へ代入すること,例えばA=(1,2)という表記を認めることになりますが,A(1,2)だとAは点の名前だったのが,A=(1,2)だとAは座標そのものになり,その違いを意識させる必要はあるのかという疑問が起こります。浜田昌宏 / 浜田塾@hamadajuku2021年5月3日ただ,△ABCや∠AやABがそうであるように,ある表現が図形を指すこともあれば,そのプロパティ(面積,角度,長さ)を指すこともあるという運用をすでにやっているので,座標もそうすればいいだろうと思います。浜田昌宏 / 浜田塾@hamadajuku2021年5月3日オブジェクトとしての表記がそのプロパティも同時に表すというのはいい加減ですが,VBのdefault propertyと同じで,初学者にとっては助かる面があります。浜田昌宏 / 浜田塾@hamadajuku2021年5月3日出版物では点の名前は「𝖠」のようにローマン体で表します。それが座標を表して相等関係をもつことになれば,「𝐴」のようにイタリック体にする必要があるのでは?という問題が起こります。どうでもいいと言われそうですが,これが一番悩むところかもしれません。浜田昌宏 / 浜田塾@hamadajuku2021年5月1日本当は放物線 {(x,y) | y=x²} とか領域 {(x,y) | x²+y²<1} のように書くべきなのでしょうが,それは面倒なので,y=x² や x²+y²<1 だけ書いても図形を表すことになっています。浜田昌宏 / 浜田塾@hamadajuku2021年5月2日集合ならば,例えば曲線C上の点を (1,1)∈C のように表現してよいことになります。しかし,学校数学では「曲線C」と書いたときのCは集合ではなく単なる曲線の名前という扱いになるので,残念ながらこのような式を書くことはできません。浜田昌宏 / 浜田塾@hamadajuku2021年5月2日どうしても集合として扱いたい場合は,「C: y=x²」のような習慣的な表記に頼らず,「C={(x,y) | y=x²}」のように集合であることを明示すればよいと思います。浜田昌宏 / 浜田塾@hamadajuku2021年3月21日先日,自動車免許の更新に行った時,もらった教本の中にこのようなグラフがあったので,停止距離の式を最小二乗法で求めてみることにしました。浜田昌宏 / 浜田塾@hamadajuku2021年3月21日速さをx(km/h)とします。空走距離は速さに比例し,制動距離は速さの2乗に比例すると言われていますので,空走距離はbx(m),制動距離はax²(m)とおきます。つまり停止距離はax²+bx(m)です。浜田昌宏 / 浜田塾@hamadajuku2021年3月21日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となります。浜田昌宏 / 浜田塾@hamadajuku2021年3月21日ここから平方完成を2回行ってLが最小になるa,bの値を求めると,a=0.009293…b=0.19326…となるので,時速x(km/h)のときの空走距離は0.19x(m),制動距離は0.0093x²(m),つまり停止距離は0.0093x²+0.19x(m)でした。浜田昌宏 / 浜田塾@hamadajuku2021年3月21日実際の停止距離は人の反応時間や地面とタイヤの摩擦係数によって変わり,次のような式で表されるそうです。空走距離(m)=反応時間(秒)×速さ(m/秒)制動距離(m)=速さ(km/h)の2乗÷(254×摩擦係数)浜田昌宏 / 浜田塾@hamadajuku2021年3月21日ここから逆算すると,この教本のグラフは,反応時間は,3.6b≒0.7(秒)摩擦係数は,1÷254a≒0.42で計算しているようでした。ちなみに,人の平均的な反応速度は0.75秒,乾いたアスファルトの摩擦係数は約0.7です。摩擦係数0.42というのは路面が濡れている時の値と思われます。浜田昌宏 / 浜田塾@hamadajuku2021年3月3日集合には {n|nは素数である} のようなリテラル表記がありますが,命題や条件については一般的な表記はないようです。勝手に作ると,{3は素数である}()=真{nは素数である}(n=4)=偽浜田昌宏 / 浜田塾@hamadajuku2021年3月3日そう言えば,関数のリテラル表記も見かけません(少なくとも高校数学では)。例えば,y=2xという関数fを表現したい場合,JavaScriptのアロー関数を借りて,f={x↦2x}のように書けたら,何か便利なことがあるかもしれません。浜田昌宏 / 浜田塾@hamadajuku2021年3月3日{x↦2x}(5)=10{x↦x²}({x↦2x}(x))=4x²{x↦x²}∘{x↦2x}={x↦4x²}{x↦2x}⁻¹={x↦x/2}浜田昌宏 / 浜田塾@hamadajuku2021年3月20日合成関数 g∘f は,f の方が先に作用するのですが,それは f(x) の語順が VO であることが由来だろうと思います。ただしアロー表記は OV なので,{x↦x²}∘{x↦2x}={x↦4x²}と書くと違和感があります。浜田昌宏 / 浜田塾@hamadajuku2021年3月20日この場合は合成演算子∘ではなく,代わりにパイプ演算子を▹のように決めて,f▹g と書くのが良さそうです。関数▹関数は関数を返し,値▹関数は値を返します。{x↦2x}▹{x↦x²}={x↦4x²}5▹{x↦2x}▹{x↦x²}=100浜田昌宏 / 浜田塾@hamadajuku2021年3月21日合成関数の導関数の公式 (g∘f)ʹ(x)=gʹ(f(x))∙fʹ(x) は,=が導関数ではなく微分係数をつないでいるという不満があります。これがパイプ演算子で解消できないかと考えました。浜田昌宏 / 浜田塾@hamadajuku2021年3月21日(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ʹ)}これでとりあえず目的は果たしました。関数リテラル内に微分係数を閉じ込めただけであまり面白味はありませんが。 新しい567891011古い