프랑수아 베르제 레트 쓴 :
boulier 게임에 넷째 방법
하이 리,
JMP에는 불리라는 문제를 해결하는 데 사용할 수있는 매우 바람직한 기능이 있습니다.
- 정규 분포에서 무작위 데이터를 사용하여 색상 당 하나씩 4 개의 새로운 열로 데이터 세트 만들기 : 임의 표준 () * 3
- 5 개의 새로운 변수 y를 하나의 라인에 하나씩, y1에서 y5까지 생성하고 라인 합계와 색상을 연결하는 수식을 사용하십시오 (예 : y1 = 5black + 5blue ...)
- 색상 및 y1 - y5 결과에 대해 임의의 데이터로 100,000 개의 선 만들기
- 색상을 설명 변수로 사용하여 y1에서 y5까지 모델 피팅
- Fit 모델 플랫폼의 강조는 이펙트 스크리닝으로 각 y에 대해 12의 목표를 설정합니다 (y = 12 일 때 바람직 함 = 1, y가 12 일 때 바람직 함, y가 12가 아닌 경우 0으로 설정)
- 최대화 옵션의 수렴 허용 오차가 1E-12로 설정되어 부울 문제에 대한 정확한 수치 결과를 얻을 수 있습니다 (단 몇 밀리 초 더 길어짐).
- 바람직 함을 극대화하면 : 검정 = 5, 파랑 = 1, 갈색 = 3, 빨간색 = 1.5
필요에 따라 사용할 수있는 데이터 세트
François Bergeret (프랑스 출신)
이 블로그 게시물은 더 이상 SAS가 아닌 블로거가 작성했습니다.
내 친구들과 동료들은 나를 꽤 작은 종목으로 알고 있습니다. 나는 종종 프랑스 여행을 할 수 있습니다. 저는 현재 노스 캐롤라이나 주립대 학교에서 석사 학위를 받았습니다. 그리고 저는 모든 프랑스 신문과 잡지를 소장하고 있습니다.
르 피가로 보충 자료를 추가하는 일일 종이입니다. 르 피가로 매거진 그것의 토요일 판에. 거기에서 미술 뉴스, 칼럼니스트, 그리고 내가 가장 좋아하는 게임을 찾을 수 있습니다.
나는 프랑스 인이 우리가 극적으로 재미 있지 않다고 생각하는 것에서 게임을 만드는 방식에 일관되게 놀란다. 예를 들어, 잡지의 게임 중 하나는 블레이즈 파스칼 (Blaise Pascal)에서 동생까지 보내는 편지와 관련이 있습니다. 여기서 (a) 16 개의 단어로 편지를 완성해야합니다. (b) 16 개의 맞춤법이나 언어 오류를 수정하십시오; (c) 15 개의 변칙, 시대 착오, 또는 역사적으로 불가능한 것을 찾아라.
숫자 게임 중 하나가 저에게 뛰어 들었습니다 (말장난 의도). 여기에 원래 형태로 JMP를 사용하여 해결할 게임이 있습니다.
[ 선상의 볼의 합이 항상 12와 같다는 것을 알면서 각 색상의 볼 값을 찾습니다]
이 문제를 해결할 수있는 방법은 적어도 세 가지가 있습니다. Chez McDo 's에서 해피 밀 (Happy Meal ™)을 먹는 데 걸린 것보다 더 오래 생각한 것 같습니다.
방법 1 : 무력
매우 brute-force 접근법은 가능한 모든 색상을 반복합니다 ( 빨간색 = x , 갈색 = y , 검정 = z. 파란색 = w )는 0보다 작거나 12보다 클 수 없음을 인식합니다. 다음은이를 수행하는 JMP 스크립트입니다. 4 개의 For 루프는 0에서 12까지의 각 값을 0.5 단계로 순환시킵니다. 결과에 도달하면 결과를 로그에 씁니다.
For( x = 1, x <= 12, x += 0.5,
For( y = 1, y <= 12, y += 0.5,
For( z = 1, z <= 12, z += 0.5,
For( w = 1, w <= 12, w += 0.5,
If( 2 * z + 2 * w == 12,
If( z + 2 * y + w == 12,
If( 3 * y + 2 * x == 12,
If( z + y + 4 * w == 12,
If( z + w + 4 * x == 12,
Show( x, y, z, w );
)
)
)
)
)
)
)
)
)
결과는? 적색 = 1.5 , 갈색 = 3 , 블랙 = 5. 파란색 = 1
방법 2 : 최소 정사각형
다음 방법은 이것을 최소 제곱 문제로 인식하는 것입니다. 볼에 첨부 된 값은 선형 모델의 계수이며 볼 자체가 데이터로 사용됩니다. 그래서 저는 5 개의 행과 4 개의 색깔 볼에 관한 정보를 담고있는 JMP Data Table을 만들 수 있습니다. 위트하려면 :
JMP의 Fit Model 창을 사용하여 볼에 대한 최소 제곱 추정값을 얻을 수 있습니다. 선형 모델이 원점을 통과해야한다는 것을 알고 있기 때문에 no-intercept 모델을 사용하고 있습니다.
그처럼 ( "Bam!,"나는 나 자신에게 말한다), 결과와 퍼즐에 대한 대답을 얻는다.
방법 3. 수학 사용
지난 40 년 동안 대수 II를 공부했다면, 매트릭스라고 불리는 이러한 것들을 공부했습니다. 실제로 유용하다고 밝혀졌습니다. 그리고 퍼즐을 최소 자승법으로 인식하지 못하면 항상 수학적으로 보는 방법이 있습니다. 아무에게도 말하지 말고 실제로는 같은 접근법입니다. 아래에서 볼 수있는 수학은 JMP의 무대 뒤에서 일어나는 일입니다.
행렬 (퍼즐의 다섯 행을 나타내는 5 개의 행)을 사용하여 퍼즐 설정을 표현하면 표 자체를 이와 같이 표현할 수 있습니다 (이를 에이 ).
A = [0 0 2 2
0 2 1 1
2 3 0 0
0 1 1 4
4 0 1 1]
이 5 가지 조건이 모두 12로 합쳐진 사실은 다음과 같이 표현됩니다.
C = [12
12
12
12
12]
최종 행렬로 비 미지수를 나타내는 : 볼의 가치.
b = [x
y
z
w]
이를 해결하기 위해서는 먼저
Ab = 기음
그리고 얻다 비 방정식의 왼쪽에 혼자. 일반적으로, 우리는 양측에 에이 -1 , 이렇게 :
에이 -1 Ab = 에이 -1 기음
하지만 문제가 있다는 것을 모릅니다. 퍼즐에는 4 개의 변수와 5 개의 행이 있으므로 그 행렬 표현은 정사각형이 아닙니다. 따라서 우리는 단순한 역행렬을 사용할 수 없습니다. 비록 정사각형 행렬을 얻으려면 A를 곱하면된다. 다행히 JMP는 무어 - 펜로즈 일반 반전 함수 (이탤릭체로 소리가 잘 들까 요?). 그것을 사용하여 간단한 JMP 스크립트를 작성하여 행렬을 할당하고 문제를 해결할 수 있습니다.
A = [ 0 0 2 2, 0 2 1 1, 2 3 0 0, 0 1 1 4, 4 0 1 1];
C = [12, 12, 12, 12, 12];
ginverse(A`*A)*A`*C;
결과를 제공합니다 (반올림 오류로, 나는 정교한 반전 과정에서 가정합니다)
[1.5, 3, 5.00000000000001, 0.999999999999994]
같은 대답. 반올림 오류로 인해 heeby-jeebys가 발생하면 JMP의 Solve 함수를 대신 사용할 수 있습니다.
A = [ 0 0 2 2, 0 2 1 1, 2 3 0 0, 0 1 1 4, 4 0 1 1];
C = [12, 12, 12, 12, 12];
solve((A`*A),A`*C);