切って動かしてみる(その2)
座標平面上に一辺の長さが2の正三角形ABCがある。
の直線で正三角形ABCを切っていくことを考える。
直線fが正三角形ABCと交点を持つtの範囲を求める。
t=0のときは、直線fは頂点Aを通る。
直線fが頂点Cを通るとき最大のtを得るため、そのときのtはt=(1+3√3)/3のときであることがわかる。よって、直線fが正三角形ABCと交点を持つようなtの範囲は
となる。
直線fをtの範囲で動かし、直線fと辺AB,辺BCの交点をPとし
さらに直線fと辺ACの交点をQとする。直線fが辺AB上を通るときのtの範囲を求める。
直線ABと直線fとの交点Pは (3t,0)であり、点Pが頂点Bと一致するまで直線fは辺AB上を通る。
直線fが頂点Bを通るときのtの値は、t=2/3である。 以上より、直線fが辺AB上を通るときのtの範囲はとなる
直線fが辺BC上を通るときのtの範囲を求める。
直線fと辺BC上の交点Pは点Bから点Cまで移動するため、 となる
それぞれのtの範囲における点Pと点Qの座標を求める。
- において
辺AB上にあるときの点Pの座標は先ほど求めた(3t,0)である。
直線fと辺ACの交点の座標を求める。直線ACは
であり、直線ACと直線fとの交点Qを求めると、
となる
- において
辺BC上にあるときの点Pの座標は、 直線BCと直線fとの交点である。
直線BCは であり、直線BCと直線fとの交点Pを求めると、
となる。
線分PQの長さを求める
- のとき
- のとき
t | 辺上の点 | 線分PQの長さ |
---|---|---|
t=0 | 点A(0,0) | 0 |
0≦t<2/3 | 点P(3t,0), | |
2/3≦t<(1+√3)/3 | , | |
t=(1+√3)/3 | 点C(1,√3) | 0 |
の直線のtの範囲で正方形ABCDを切っていっくと線分PQ(赤色)は以下のようになる。
最後に の直線のtの範囲でで正三角形ABCを切っていくと線分PQ(赤色)は以下のようになる。
線分PQの最大値はt=2/3のときであり、点Pが頂点Bを通るときである。
かなり楽しい時間を過ごしました。 正三角形さんありがとうございます。 もし間違いがあれば教えてください。
もっとこんな図形のこういう切り方したいっていう要望があれば、コメント欄かtwitterで申し付けてください~
機械学習(遺伝的アルゴリズム)
獲得すべき知識の探索を行うため、様々な手法が作られてきた。
まったくランダムに探索を進めるのではなく、ある方向性を持って、確率的な探索を行う手法のうち代表的な探索法として遺伝的アルゴリズムがある。遺伝的アルゴリズムは、 探索空間の複数の探索点を同時に処理することができる。
各探索点が表現している解の性質は"遺伝子"と呼ばれる情報として与えられる。 多くの場合、遺伝子は0または1の値を持つ"遺伝子座"の並びとして表現される。これらの遺伝子の全体を"遺伝子プール"といい、遺伝子プールの大きさを"プールサイズ"という。
遺伝的アルゴリズムでは、問題の条件の適応の度合いが遺伝子の評価値になる。
この遺伝子の評価値の良し悪しを計算する関数を"適応度関数(fitness function)"という。適応度が高い遺伝子ほど選択され、適応度が低い遺伝子ほど淘汰されていく。
この選択された遺伝子は遺伝的操作により、子孫を作ることができる。
遺伝的操作として、"交叉(crossover)"や"突然変異(mutation)"がある。交叉の方法にもさまざまな種類があるが、交叉によって遺伝子を組み替えることで、多様な遺伝子を作り出すことができる。
しかし、交叉で得られる遺伝子は親に依存してしまう。 そこで、親とまったく異なる情報を得るために、突然変異が必要になってくる。突然変異とはある確率で遺伝子上の情報をランダムに書き換える操作である。
遺伝的アルゴリズムとは
選択・交叉・突然変異に代表される遺伝的操作を遺伝子プールに施すことで環境に適応する遺伝子を生み出すことができる。
結果として、1つの優れた解を探索するのではなく、遺伝子プール全体を対象として平均適応度を向上させることが目的とした探索法である。 まずまずの結果を与える解を素早く求めることを目標に置かれている。ビヨーン くるくる ビヨーン
単振動しながら円運動している物体についてる、単振動しながら円運動してる物体を描いてみた。 これから、個人的に面白いなぁと思ったのを作っていきたいです。 Processing上達の具合を暖かく見守ってください。