숫자 넣어 때려 맞추기

누군가 a t + b sin( c t ) = d 의 해를 어떻게 구할까 라고 질문을 올렸다.
http://kldp.org/node/112110

허리도 아프고 퇴근시간도 거의 다 되었고 해서 잠시 생각해 보았다.
at + bsin(ct) = d
bsin(ct) = d - at
sin(ct) = (d - at) / b
Therefore, |(d-at)/ b| <= 1
-1 <= (d - at)/b <= 1
if b>0
-b <= d - at <= b
-b + d <= at <= b + d
if a>0
(-b + d)/a <= t <= (b + d)/a

여기서 f(t) = at + bsin(ct) -d 라고 하고
N 개로 잘라내서 f(t) 의 부호가 바뀌는 걸 확인한다면,
전체 길이가 (b + d)/a - (-b + d)/a = 2b /a
따라서 단위 t 의 길이는 ( 2b / a )/N

Java 로 만든 코드
몇몇 결과
(a, b, c, d) = (1, 1, 1, 1) 이고 N 이 10 이라면

a 1.000000 b 1.000000 c 1.000000 d 1.000000
 F(0.000000)= -1.000000
 F(0.200000)= -0.601331
 F(0.400000)= -0.210582
 F(0.600000)= 0.164642
 F(0.800000)= 0.517356
 F(1.000000)= 0.841471
 F(1.200000)= 1.132039
 F(1.400000)= 1.385450
 F(1.600000)= 1.599574
 F(1.800000)= 1.773848
 F(2.000000)= 1.909297

따라서 대충 0.4 ~ 0.6 사이에 있을 듯.

좀 더 정확히 하기 위해 N 을 100 으로 했더니
... 생략
 F(0.480000)= -0.058221
 F(0.500000)= -0.020574
 F(0.520000)= 0.016880
 F(0.540000)= 0.054136
... 생략

고로 대충 0.5xx 인 것 처럼 보인다.

하나 더,
(a, b, c, d) = (1, 2, 3, 4) 이고 N 이 20 이라면
a 1.000000 b 2.000000 c 3.000000 d 4.000000
 F(2.000000)= -2.558831
 F(2.200000)= -1.176917
 F(2.400000)= -0.012664
 F(2.600000)= 0.597087
 F(2.800000)= 0.509198
 F(3.000000)= -0.175763
 F(3.200000)= -1.148654
 F(3.400000)= -1.999749
 F(3.600000)= -2.361872
 F(3.800000)= -2.038657
 F(4.000000)= -1.073146
 F(4.200000)= 0.267246
 F(4.400000)= 1.584147
 F(4.600000)= 2.487391
 F(4.800000)= 2.731316
 F(5.000000)= 2.300576
 F(5.200000)= 1.415507
 F(5.400000)= 0.455156
 F(5.600000)= -0.175134
 F(5.800000)= -0.185319
 F(6.000000)= 0.498026

이건 대충 2.4~2.5 와 2.8 ~ 3.0, 그리고 4.0 ~ 4.2, 5.4 ~ 5.6, 5.8 ~ 6.0 사이에 있겠구만.

Posted by eoh

2010/01/26 19:34 2010/01/26 19:34
, ,
Response
No Trackback , No Comment
RSS :
http://endofhope.com/tc/rss/response/21

우연과 낚시

우연히 동전을 던진다는 것은 조작될 수 있다 란 취지의 기사를 보았다.
호주인지 영국인지 연구팀이 13 (!) 명 이라는 거대한 표본을 잡아서 300번씩 동전을 던지게 한 결과 조금의 요령으로도 "과반수" 인 7명 (전체 13명 중 7명!) 이나 앞면이 훨씬 더 (하지만 얼마나 많은 사람들이 얼마나 더 나왔는지 밝히지는 않는다) 나왔으며 또한 그 중 한 사람은 68%의 확률로 앞면이 더 나왔다고 한다.
일단 여기까지만 해도 바로 낚시 기사의 스멜이 강하게 풍겨와서 계산을 좀 해 보기로 했다.

300번 동전을 던져 앞면이 68% 이상 나올 확률을 계산해 보자.
동전의 앞면이 나올 확률은 1/2 인 이항분포이고 300번이 상당히 많은 수행 이라고 하면 B(300, 1/2) -> N(300*(1/2), 300*(1/2)*(1/2)) 이므로
N(150, (8.6)^2) 가 되어 Z = (X-150)/8.6 가 된다.
300회의 68% 면 204회이므로
Z=(204-150)/8.6  => 6.2 가 되는데 3 이상은 표준 정규 분포표에도 나오지 않는 굉장히 희박한 확률이다. 그렇다면 300번 정도의 시행으로는 정규 분포를 이루지 않거나 정규 분포를 이루었다면 300번에 68% 의 확률로 앞면이 나온 것은 굉장히 일어나기 어려운 일이라는 결론이 났다.

여기서 그럼 이 기사는 낚시가 아니네 라고 생각하다가 300회는 적당히 크려니, 따라서 정규분포려니 하는 생각을 접고 그냥 쌩으로 확률을 계산해보자 란 생각이 들었다.

일단 300회 시행에 모두 앞면이 나올 확률은 300C300(1/2)^300 이고
299번 앞면이 나올 확률은 300C299(1/2)^299
...
204번 앞면이 나올 확률은 300C204(1/2)^300 이다.
이걸 구하려고 script 를 하나 짰더니 overflow 가 났다.

Math::BigFloat 를 급하게 수배해서 새로 계산해 보니 결과값 0.000000000212505...
이게 뭐야 무서워...

오케이 인정. 300번 던져서 200번 앞면 나오게 하면 용자 인정!

오늘의 교훈
  1. perl 의 변수 한계는 메모리에만 있다 라고 줏어들은 지식으로 수치계산 하면 inf 만난다.
  2. 아무리 잊어버릴 것 같지 않은 것 이라도 안쓰면 바로 레테 건넌다. B(n, p) N(np, npq) 가 생각 안 날 줄이야.
  3. 이건 낚시다 라는 감에만 의존하면 이런 포스팅 하게 된다 ㅡ.ㅡ;

이쉥퀴 구라까고있네 라고 생각한 사람을 위해 준비했다.

Posted by eoh

2009/12/10 18:22 2009/12/10 18:22
, , , ,
Response
No Trackback , No Comment
RSS :
http://endofhope.com/tc/rss/response/15

나라고 특별한 건 없다.

퇴근길 지하철을 기다리다 기둥에 1608이란 숫자가 쓰여있는 걸 봤다.
1608은 8과 201이고 201은 자릿수의 합이 3인걸 봐서 3과 67로 분해했다.
67은 64와 81 사이이니 2,3,5 7 4개만 보면 되는데, 홀수이니 2는 아니고 자릿수의 합이 13이니 3도 아니며 끝자리가 7이니 5도 아니고 마지막으로 70-3 이니 결국 소수인걸 알아냈다.
정리하자면
1608 = 8*3*67
그래도 지하철이 오지 않아서 n,n+1 스타일의 수는 몇개가 소수인지 세었다.
23은 맞고 짝수는 아니고 45는 9*5 이고 67은 방금 한 놈이고 89는 소수더라.
지하철은 이후로도 한참을 더 기다려야 했고 갑자기 이런 짓을 한 이유는 엑셀에서 2차 다항식의 근을 구하는 함수를 못 찾아서 손으로 계산하려 했었는데 갑자기 근의 공식이 생각나지 않아 유도했다.
그런데 예전처럼 당연하고 매끄럽게 되지 않고 버벅거린 것에 충격을 받았기 때문이다.

고등학교 산수 문제 정도는 언제라도 쉽게 풀 자신이 있었는데, 오늘 일을 겪고 나니 알수 없이 슬퍼졌다.

Posted by eoh

2009/10/21 01:42 2009/10/21 01:42
,
Response
No Trackback , No Comment
RSS :
http://endofhope.com/tc/rss/response/8


블로그 이미지

말할 수 있는 것은 분명하게 말해질 수 있다. 말해질 수 없는 것에 대해서는 침묵해야 한다. 논리 철학 논고 - 루드비히 비트겐슈타인.

- eoh

Archives

Authors

  1. eoh

Recent Comments

Recent Trackbacks

Calendar

«   2012/05   »
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Site Stats

Total hits:
20059
Today:
44
Yesterday:
47