屈折問題
https://gyazo.com/79edcd40b623beca68290b353527c642
これは屈折の話だったり効率の話だったり
最速の方向に光は屈折する
うまく説明できるか?
海岸で歩くときとか
光ファイバの話にも通じる
実際には連続的に変化するわけで、そのときどう歩くと良いかは興味深いはず
うまく作図する方法はあるのだろうか
プログラミングで解くとするとどうする?
二分法的試行錯誤で解けそう
普通にsin/cosで計算する方法があればそれを使うのも良い
http://masui.org.s3.amazonaws.com/7/0/706b85ee5e6f07322ffbe9d1114897c5.graffle https://gyazo.com/f38ef0e77608328bbb6c038e647cfd90
領域1は時速2Kmでしか進めないが領域2は時速4Kmで進めるとき、AからBに最短時間で行く方法を求めよ
式で計算しても良いしプログラムで計算しても良い
code:kussetsu.js
let pl = 0.0, pr = 400.0, p
let v1 = 2.0, v2 = 4.0
for(;;){
let tl = Math.hypot(100,pl) / v1 + Math.hypot(100,400-pl) / v2
let tr = Math.hypot(100,pr) / v1 + Math.hypot(100,400-pr) / v2
p = (pl + pr) / 2.0
tl > tr ? pl = p : pr = p
if(Math.abs(pl-pr) < 0.01) break;
}
alert(p = ${p})
p = 54.75
l1 = Math.hypot(100,p)
sin1 = p/l1
l2 = Math.hypot(100,400-p)
sin2 = (400-p)/l2
sin2 / sin1
$ sin1 = {p \over \sqrt{100^2+p^2}}
$ sin2 = {(400-p) \over \sqrt{100^2+(400-p)^2}}
$ sin2 / sin1 = 2
となるpを計算で求めるのは難しそうだ
code:test.js
let p = 113.87
let v1 = 2.0, v2 = 4.0
let t = Math.hypot(100,p) / v1 + Math.hypot(100,400-p) / v2
alert(t)
=> 151.55
Math.hypot(100,113.87) /2 + Math.hypot(100,400-113.87) / 4
/masui/増井俊之.icon の答 (54.75)
code:test2.js
let p = 54.75
let v1 = 2.0, v2 = 4.0
let t = Math.hypot(100,p) / v1 + Math.hypot(100,400-p) / v2
alert(t)
=> 146.86
Math.hypot(100,54.75) /2 + Math.hypot(100,400-54.75) / 4