昔作った問題(3) 五角形の面積の求め方を簡単な日本語で説明させる

問題

次の図形の面積を定規を用いて求める方法について説明せよ。実際に面積を求める必要はない。なお,定規は長さを測ることのみできるものとする(定規の角の部分が直角であることを用いることはできない)。

f:id:baruku07:20200606224045p:plain

背景など

多角形は三角形でぶったぎって面積を求めることができるを説明させるために作った問題である。

ここでは,ヘロンの公式を誘導したいので,直角で高さを測るというのはなしにするために「定規の角使用禁止」を明記してる。なお,業界的には定規といったら長さしか測れないのは常識だが,そういう常識を前提としない授業だったのでこういう書き方。

図をつけているところがポイントで,これでけっこうな人に手がつくようになっている。落とそうという問題じゃなくて,説明するという作業をすることで考え方を定着させようという意図の問題。

昔作った問題(2)公式集を与えて三角形の面積を計算させる

その(1)の四角形と同じ試験で出した問題である。

問題

三角形ABCにおいて, b=7, c=8, \cos A = 1/4のとき,三角形ABCの面積を求めよ。

公式集で先入観を与えるという罠

この試験では次の2つの式を書いた公式集を配っていた。

  •  S =\dfrac{1}{2} bc \sin A
  •  S = \sqrt{s(s-a)(s-b)(s-c)}, \quad s = (a+b+c)/2

この公式集,たとえば b=4, c=3, A = 120^ \circのときには

 S= \frac{1}{2}  \times 4 \times 3 \times \sin 120 ^\circ = 6 \sqrt{3}

となる,という代入するとこまで説明をつけている。

したがって,勉強してきていない人にすると,きっと代入すれば終わりだろうと考えて \cosを代入してしまうという問題である。

四角形の問題のためにヘロンの公式は与えておきたいが,さすがにそれだけ与えると四角形の問題がヘロンの公式の適用にしか見えなくなる。なのでそれを攪乱する意味もこめてこの問題を付けたわけである。

シンプルに問えるものはシンプルに問いたい

この問題,3辺から面積を求める問題の途中の問題である。

しかし,試験でその問題そのものを出すと,余弦定理でcos間違った場合の式の計算を全部負うのが面倒。なので,途中だけ切り出して出題したともいえる。

なお,ある参考書では見たことある問題である。それ見て自分で思いついたか,自分で思いついててそれで裏を取ったかは忘れたけど。公式集をつけたところがちょっとした意地悪なだけでひねった問題ではない。

いちおう課題には同じ問題を出している

この問題,課題テストだったので課題には同じ問題を出している。あくまで問題を解いてきていないが公式集に救いを求めてなんとかしようという人がばさっとひっかかるだけの問題である。私も鬼や悪魔ではないので。。。。

昔作った問題(1)冷遇されているヘロンの公式を題材にした問題

もう数学の問題や試験を作ることはないだろうということで,身バレしなさそうな範囲で過去に作った問題を公開してみる。

問題

四角形ABCDにおいてAB=4, BC = 3, CD=6, DA=7, AC=5とする。この四角形の面積を求めよ。

問いたかったこと

以下の3点が問いたいこと。

  • 与えられた辺の長さなどの状況を整理し,図を自分で描くなどして状況をつかめるか。
  • 四角形を三角形に分割すれば良いことに気付けるか(考え方だけは別の問題で教えている)。
  • ヘロンの公式が適用できることに気付く(既習 or 同時に配布した公式集)。

さらに2つのうち1つの三角形は直角三角形になので小学生でも面積計算できる,と気付けばボーナスもある。

考え方はなんとなく説明していたが,問題としては初見という状態にして出した。(数学的な見方・考え方で観点を取りたかったので)

以下背景などのマニアックな趣味の話。

ヘロンの公式を厚遇した授業をしていた

大学受験を前提にすると,ヘロンの公式は無意味だという風潮がある。3辺からcosを求める場合なら(手計算の場合)ヘロンの公式より辺の値にルートが入っても使えるし,思考力も鍛えられる,という主張である。また,ヘロンを教えると公式代入マシーンになるので教育的な意味がないともいえる。

しかし,文化的に大事なことは「3辺の長さがわかったら面積は求めることができる」というメッセージである。cosからsinのごちゃごちゃがわからなくても,ヘロンの公式であればこれを体現することができる。明らかにこっちの方が,多くの人に3辺の長さかわかったら面積は求めることができるというメッセージを伝えやすい。

また,私は秋山先生のお言葉を深く愛する人である。多角形など色々な図形は適当に三角形にぶったぎって長さ測って計算すればその面積を出せる,ということを実感しておくことが大切である,というある文庫本の記述を見て深くうなずいていた。なので,授業でもヘロンの公式は素晴らしい,という授業をしての流れのとどめとして出したのがこの問題である。

その他の事項

公式集を配布

思考問題なので,公式がわからないからできませんは封じたい。そこで,次の2つの公式を書いた紙を配布した。

  •  S =\dfrac{1}{2} bc \sin A
  •  S = \sqrt{s(s-a)(s-b)(s-c)}, \quad s = \dfrac{a+b+c}{2}

さらに,両方の公式に対して数値例を示して代入の仕方まで丁寧に説明しておいた。

周辺事項は繰り返しやった

さて,この問題を完全初見センス問題にするのは,真面目な人がかわいそうである。ゆえに,それまでの授業で準備はしておいた。

まず,多角形を三角形に分割するというアイデアは繰り返し扱った。

  • 平行四辺形や内接する多角形の面積を出す教科書問題を厚めに扱って,定期試験にも出すときっちり予告して出題。
  • 休暇前の授業では秋山先生の本のような「多角形は三角形にわけて辺をはかってこの公式にいれてやれば原理的には面積を出せるということにここで感動してほしい」みたいな話を雑談風にしつつヘロンの公式を扱っている。
  • 小テストで適当に描いた五角形の図を与えて,この図形のおおよその面積を定規を用いて求める方法を説明せよ,という問題を出しておく。

さらに,小テストや課題で単純なヘロンの公式当てはめ問題も扱っている。

そのうえでこの問題を出したわけである。習ったことで解けるわけがないと文句付けられたら,以上を全部説明するつもりだった。

頑張って解けたとしても裏があるというオチをつける

こういったかなり薄いヒントを頼りにして問題を解き切った人はほめてあげる,というのが本来の教育者である。しかし,私はそうではない。解けた人に,これ3,4,5だからヘロンいりませんと断言するのである。もちろん,直接そういう声をかける場合は人は選んでやるけどね。。。。

なお,3,4,5にしたのは作問側のテクニカルな事情もある。試験解答の図を作るときに直角が一つあると図が描きやすい(座標に持ち込む場合も楽)とか,検算しやすいとか。

なお,昔書いたtikzで3辺を指定した三角形を描く方法は,この問題の回答を描くために研究をしたものである。

自分はプログラムそのものを全く読めてないこと気付いた

JavaのSilverをやってるとなんかつらいなと感じていた。そのつらさは何からくるのだろうと考えてると少し発見があったのでまとめてみる。

日常のコード読み→人間の意図を読む

自分がコードを読むときのプロセスはこんな感じ。

  1. 問題文ややりたいとされていることをパーツ分解して,該当する箇所を探してぼんやりと意図をつかむ。
  2. プログラム数行のまとまりをなんとなく読んでその一塊の処理が何をしてるのかを推測する。
  3. 1.と2.を往復しつつ全体像を作りあげ,後は設問をつきあわせて,トレースとか細かなことをしてい

この読み方,一言でいうと「プログラムを書いた人間の意図を読むことによりプログラムを読む」というアプローチである。

Silverの問題を解くときはコンピュータになりきる

一方,Silverの試験は出題者の意図読みは難しい。まず,ストーリーなど何もない。ただの文字列が並んでる。そして,さらにコンパイルエラーとか例外とかいう選択肢が入ってくると,人間の意図読みは全く機能しない。機械のつもりでプログラムを読んでいくしかない。

もちろん,パターンをちゃんとストックしていっておけば一定のポイントを見て読むことはできるけど,そのポイントをみつけるにしても「プログラムの文字列」からそれを発見する必要がある。日本語ではない。

Silverは文法だけだから勉強で簡単?

文法だけを問われるということは,文法そのものがわからなければ終わりである。

知識がないときに,周辺文脈から類推することもできない。

勉強か経験がなければ終わりの試験である。

一方で,基本情報の問題は文法以外の知識・技能も求められる,と資格解説の文脈で言われている気がする。ゆえに簡単ではないともいわれる。しかし,これを裏返すと,文法以外の知識・技能でプログラムを読んでしまえば楽になる問題ともいえるのである。

どっちが楽かはあまりにも人それぞれすぎるような気がする。

今年度の入試問題を解いていて(2)

かなり前に書いた記事のお手頃な入試問題と同じ大学のお手頃問題。河合塾ではやや難。

条件付き確率の問題で,分母を簡単に取り換えると解きやすいという問題。ただ,厳密っぽく書けないから解答はそれでは書かないけど。結局,条件付き確率は。分母をなんとなくうまく取り換えられるかが全てだと思っている。その考え方は,解答は書きにくいので計算をしたふりはするけど。この感覚をつかむのは,個人的にはプログラミングのための確率・統計が一押しなんだけど,高校生にこれ全部読めは重いしなと思いつつ。

問題

まずさいころを投げる。出た目を a_1としておく。次にコインを投げる。表がでれば b_1=1となる。裏がでれば b_1 = a_1となる。これを3回繰り返して a_2, a_3, b_2, b_3を作る。

今, b_1=1, b_2=1, b_3=1の下での条件付き確率を考える。

  1.  a_1=1, a_2 = 1, a_3 = 5となる条件付き確率を求めよ。
  2.  a_1 + a_2 + a_3 = 7となる条件付き確率を求めよ。

なんとなく考えたこと

1.で考える。まず,3回のさいころをふる試行は独立。したがって,Bを b_1=1,b_2=1,b_3=1の事象を表すということにしておくと


 \displaystyle
 P(a_1 =1, a_2=1, a_3 = 5 \mid B ) = P(a_1=1 \mid B) \times P(a_2 =1 \mid B) \times P(a_3=1 \mid B)

となる。1回目のさいころの値は, b_2, b_3とは相互に一切影響がない。2回目以降も同様。したがって,求めるべき確率は


 \displaystyle
  P(a_1=1 \mid b_1=1) \times P(a_2 =1 \mid b_2=1) \times P(a_3=1 \mid b_3=1)

とできるはず。 b_1 = 1の下でのa_1の条件付き確率の分布を考える。

ここで,まず,次のような直感が出てくる。 b_1が1になるのは,

  • コインが表でサイコロの目はなんでもよしと
  • コインが裏でサイコロが1が出たとき

の2通りである。ということは,1がちょっと出やすい条件付き分布になるはずである。それを計算で確認する。それぞれの条件付きでない確率を出すと

  • 1~6のいずれかで表 :  1/6 \times 1/2
  • 1が出て裏 :  1/6 \times 1/2

でこれが全ての場合。また,1~6が出て表(6パターン)と1が出て裏(1パターン)は等確率なのがわかるので,全部足して1にするには分母を7にとってやればよい。よって, a_1の条件付きの分布は1が2/7で残りのさいころの目が1/7となることがわかる。あとは計算すると


 \displaystyle
  P(a_1=1 \mid b_1=1) \times P(a_2 =1 \mid b_2=1) \times P(a_3=1 \mid b_3=1) = \frac{2}{7} \times \frac{2}{7} \times \frac{5}{7} = \frac{4}{343}

とできる。

この考え方,1ではたいしたことがないが,2では大きく影響してくる。

2は普通にやると, a_i=1とそれ以外の分母が根本的に違うことになる。例えば, (a_1,b_1) = (1,1)の確率と (a_1,b_1)=(3,1)の確率を求めるときで,分母が違ってくる。で,場合分けして足すことになるので,計算が面倒なのである。解答速報の式を見ていると全部分母を12で揃えて


 \displaystyle
 \frac{12+12+6+3}{12^3}

としているが,こんなのやりたくない。ただ,解答にはこう書くけどね・・・

しかし,条件付き確率の扱いが中途半端なせいでただの分数計算がやっかいになってる現状って少し悲しい気もする。。。。

JavaのSilverの黒本を読むときに思ったこと

とりあえずなんとかJavaのSilverを片付けてきた。

この試験,黒本さえ仕上げれば楽勝らしい。そして,淡々とやっていけばこなせるとも書かれている。しかし,スペックの低い私は何度も挫折しかけた。なので,感じたことをだらだらと書いておく。

なお,私のスペックはJava未経験,プログラミングはそんなに得意ではなく,業務でもやったことはありません,のレベルである。

各章の問題と総仕上げ問題の難易度のギャップが大きい

悪いということではない。要は総仕上げ問題までは,範囲を網羅しつつポイントを定着させることを意図した教育的な問題配列になっているということである。各章の問題はポイントがはっきりしていて,学習効果は非常に高いと思った。

問題は,そのノリで総仕上げ問題もいけると考えてしまうのが良くないということ。なお,本番の試験は総仕上げ問題レベルと感じたので,結果的にこのレベルの問題は仕上げないといけない。

勉強時間を見積もるときには,総仕上げの手前まできたからもう大丈夫,でなく,そっからもう一山あるという感じで計画を立てるのが良いと思う。

あと,この特質から考えると,総仕上げの前までは基本知識なので解法暗記気味に全範囲を速いサイクルで回数を回していって,それがきちんと仕上がってから考える形で総仕上げ問題を解く,というようにしたほうが良いとも思う。総仕上げした段階でひっかかった部分はもう一回解説に戻って塗るとか。総仕上げ問題のセット数もそんなにあるわけではないので,そうせざるをえないともいえる。

重い章と軽い章の差が大きい

これは黒本の特徴ではなく,Javaがそういうものということなんだと思う。

1章から5章まではまあ軽いといえば軽いが細かいひっかけをいろいろと学んでいくといった感じ。

6章のインスタンスとメソッド・クラスの継承,7章のインターフェース,抽象クラスは個人的にはものすごく重く感じた。そして総仕上げ問題でもこの章がからむ問題はつらい。Javaで一番大事なとこだから当然といえば当然なのだが。

8章の関数型インターフェース・9章のAPIは軽い。

章の重さで勉強順は決めた

自分は,途中でなんとなくこの構造を把握して,それで勉強順を決めた。自分は8章をまず片付けて(Stream APIの使い方を調べる中でlambdaに時間を使ったので),そっからだらだらとオブジェクト指向の7章・8章以外をやって,気合の入った日に数日かけて7章と8章に手をつけた感じ。7章と8章も,適当にまずは一度やって,そのあと何回か塗り直す感じ。

スッキリにも書かれてる,初学者がこのトピックを一度で塗りきろうとすると危険なので,3度塗りぐらいの前提で読み進めていくのが良い,というのに従った感じ。

総仕上げ問題は取りやすい問題にまずは目を向ける

合格ラインは63%である。

重い問題読んでて疲れてて軽い問題をミスしたというのは最悪である。

軽い問題の解説を完璧に読み込んで落とさないようにする,というのが最重要だと思う。

総仕上げ問題をやってると,重い問題の解説に消耗して,軽い問題の解説を適当に読み飛ばしてしまいそうに何度もなってしまう。そのたびに軽いの落としたら意味ない,と心を整えてた。

知識の全体像を入れる本ではない

個々の解説は丁寧で良く理解できる。しかし,それはある程度の全体像があったうえでのものである。著者も最初のほうでそう言ってる。教科書でなくて問題集なんだから当然。

よって,全体像をつかむのになんかもう一冊本がないと素人にはきつかった。自分はスッキリを使った。特にオブジェクト指向のとこはパーツで暗記にかかると,暗記量が爆発して大変なことになる。そういうアプローチをしていると「2つ選べ」の問題がつらいことにもなる。なので,論理で割り切れるとこは論理で割り切らないとやってられない。というか,論理なしの反復アプローチでここの部分を覚えられる人は違う意味で尊敬する。

同じ本が2冊あると勉強がはかどる

私は1冊電子版をセールで買って,1冊紙版を買ってた。特に総仕上げ問題をやるときは,問題文と解答が同時に表示できた方が良い。解説はわかりやすい。わかりやすいけど見てわかるものでもないしそういう分量でもない。読んでわかるものである。なのでちゃんと読めるように環境整備したい。

もっとも,別デバイスKindle立ち上げれば一冊でも済むが。

全部完璧にしようと気合をいれすぎない

分量に何度も死にそうになった。完璧主義で行くとこれは死ぬと思って,いろいろとごまかしながらやった。例えば,総仕上げ問題を1回目にやったときは死にそうになり,1回で間違えたとこを全部完璧になるまで復習することはあきらめるなど,自分を適度に甘やかして最後までこぎつけた。

アプリにしてほしい

説に臨みたい。1万ぐらいまでなら払うと思った。紙で淡々と解いてると挫折しそうになるので・・・・

スッキリの副読本として良い本だと思った

スッキリだけ読んでるとストーリーはこういう感じで良く分かった,になって結構読み流しがちだったことに気付いた。というのも,黒の解説読んでそんなん知るか,となったときにもう一回スッキリに戻ったらちゃんとここに書いてありましたね,というのが多かったので。なので,スッキリを読み流ししないための素材として黒本を使うのはいいかなと思った。

自分のように,字面読むとか反復のアプローチで暗記は無理,何かの負荷をかけないと理解・暗記できない,といった人にとっては,この勉強でスッキリの内容がそれなりに読めるようになった良かったといった感じ。問題は重箱の隅をつついてる?とも思わないこともないこともあったけど,それを解いたり解説を読むために頭を働かせた内容についてはそんなに悪くなかったと思ってる。

余弦定理を使うか座標を使うか

先週のABCの問題。

時針の長さ・分針の長さ・時刻が与えられたときに時針の先端と分針の先端の間の距離を求めよという問題。

解説が余弦定理になってて余弦定理をぐぐってる人多数だったことにびびる。

この問題で,余弦定理を使っても脳のリソースを消費しない人はすごいと思う。

厳密な意味での三角形にこだわるなら位置関係の考察が面倒

三角形を使って考察するという時点で,私の中では次の2点で頭を抱える。

  • 時針と分針の位置関係の考察が発生する
  • (挟む角度を0から180度にするように計算するなら)何らかの場合分けが発生しそう

解答はさらっと書いてるけど,解答の角度を求める式で0度・負の角・180度から360度までの角が式の形とでそう。「三角形の問題」として考えるならこれらを回避する式を立てないとということになる。

ただ,常識で考えて cos(\theta ) = cos(-\theta) とかでどうせなんとかなるに決まってるとか,余弦定理の証明は(教科書は)座標で距離でやってるので0度とか負の角とか入れてもなんとかしてくれるんじゃない?って感覚はあるけど。

図形で解くときはこういう場合分けを考えないといけないのでp計算機があるなら座標計算に持ち込むのがシンプル。そういう感覚が頭の中にあるので,余弦定理を使うとわかっても第一選択にはなりにくい,というのが私の感覚。

座標で取ると頭は使わなくて良い

まず,座標の取り方が時計回りが正の向きになるように取ってあげる必要がある。それさえ注意すれば単純作業。小数計算が多数発生するはずなので,まあ桁落ちとかなければないなと祈りながらやるぐらいか。

ただ,座標のないところに座標を書き込むのは,少なくとも偏差値がある程度以上の受験数学をやった人の感覚のような。これもこれで訓練は必要。

教科書レベルだと,座標のないところに座標を入れるのは教科書では中線定理の証明とその前後にある例題ぐらい。なので,一定以上の受験数学を経験しないと訓練回数は足らないような。

複素数って発想はなかった

複素数の絶対値なら自動で計算してくれるということで,複素数に持ち込むって発想が斬新で面白いとは思った。

7000人程度に解かれてることがびびる

どっちで解いたとしても,教科書レベルに見えてそうでもない問題といったイメージ。これが7000人に解かれてるわけでびびるな。数学弱い人がこのサイトにレートを上げるつもりで参加するのはつらすぎるとしか言いようがない。これは努力は裏切るということを意味してるわけだが,まあこの世界,元々のスペック差が相当にある世界なのでそんなものなのでしょう。

こういう問題が高校の数学の授業で扱えるといいんだけどね・・・

  • 座標と余弦定理の使い分け。メリット・デメリット。よさ。
  • 座標の距離計算から余弦定理は導けるので,本質的には同じことをやってるのだからどっちも同じ。
  • 複素数に持ち込んでみると,コンピュータの用意されている道具によっては扱いやすくなる。

あたりを題材に色々と話すことはある。ただこういうのって,自明な人には自明だし,説明しても一生理解できない人には理解できないしとなかなか扱いにくいんですよね。

数学活動とかいってる人たちは,こういうのをうまく授業に乗せて欲しいですね。(自分はもうそういう世界から降りた側)

このサイトの問題,そういう題材としてほんといい問題が多いんだよな・・・