[아카이브] 순수수학, 물리학, 화학 등 : 거래와 무관한 두뇌 트레이닝 퍼즐 - 페이지 557

 

평면 그림에서는 모든 것이 잘 되는 것처럼 보입니다. N차원의 경우에도 효과가 있을 것 같습니다. 이의가 있으신가요?

대본을 쓸 때가 된 것 같지만, 꼭 보세요... :)

 

글쎄, 주어진 단위에 법선 벡터는 더 간단하게 구성될 수 있습니다 - 그것의 xi 좌표를 -sqrt(1-xi^2)로 교체하는 것으로 충분합니다. 이것은 실제로 i 번째 축에서 멀어지는 벡터 공간에서 90도 회전과 동일합니다(즉, 코사인을 -사인으로 바꾸면 각도 + pi / 2의 코사인을 얻음). 그 후에는 결과를 정규화하는 것만 남아 있습니다.

그러나 이러한 방식으로 집합의 나머지 모든 항목에 대해 법선인 벡터를 얻는 것이 일반적으로 가능하다는 것은 사실이 아닙니다. 다른 방법과 마찬가지로 모든 옵션에서 하나의 법선 벡터를 선택합니다...

 
alsu :

글쎄, 주어진 단위에 법선 벡터는 더 간단하게 구성될 수 있습니다 - 그것의 xi 좌표를 -sqrt(1-xi^2)로 교체하는 것으로 충분합니다. 이것은 실제로 i 번째 축에서 떨어진 벡터 공간에서 90도 회전과 동일합니다(즉, 코사인을 -사인으로 바꾸면 각도 + pi / 2의 코사인을 얻음). 그 후에는 결과를 정규화하는 것만 남아 있습니다.

그러나 이런 식으로 집합의 나머지 모두에 대해 법선인 벡터를 얻는 것이 일반적으로 가능 하다는 것은 사실이 아닙니다 . 다른 방법과 마찬가지로 모든 옵션에서 하나의 법선 벡터를 선택합니다...

정확히. 일반적으로 그렇지 않습니다.

--

현명한 해결책을 찾은 것 같습니다. 알고리즘 주제에 대해 글을 쓰고 긴장을 풀기 위해 자리에 앉았을 때 알고리즘이 저절로 떠올랐습니다.

Vopchem, 생성된 벡터 x1r에서 x0에 대한 투영을 간단히 빼면 됩니다(즉, x0*sp(x0,x1r), 여기서 sp()는 스칼라 곱).

간단히 말해서, 한 줄의 공식: x1 = x1r - x0*sp(x0,x1r);

:))

 
간단히 말해서, 한 줄의 공식: x1 = x1r - x0*sp(x0,x1r);

:))

응. 그 후에 수정하면 됩니다.

음, 어쨌든, 한 줄로: x1 = norm(x1r - x0*sp(x0,x1r));

 
MetaDriver :

평면 그림에서는 모든 것이 잘 되는 것처럼 보입니다. N차원의 경우에도 효과가 있을 것 같습니다. 이의가 있으신가요?

대본을 쓸 때가 된 것 같지만, 꼭 보세요... :)

쓰지 않으셔도 됩니다. 증거:

sX = (a1+b1,a2+b2); dX = (a1-b1,a2-b2);

벡터 a와 b는 단위이므로 해당 평행사변형은 마름모이고 대각선은 수직입니다. 즉, 합과 차가 서로 직교합니다. 따라서 모듈을 교체하는 것은 모듈 중 하나를 오른쪽으로 90도 회전하고 다른 하나는 왼쪽으로 회전하는 것과 같습니다. 데카르트 좌표에서는 첫 번째 좌표와 두 번째 좌표를 교환하여 간단히 표현할 수 있습니다.

sXtr = (a2-b2,a1-b1); dXtr = (a2+b2,a1+b1)

=>

sXtr+dXtr = (2*a2,2*a1)은 모듈로 2를 갖는 벡터이며, 분명히 벡터 (a1,a2), 즉 벡터 a에 직교합니다. 채널

 
사이클에서 실행해야 합니다. for(i=0; i<InpVectorCount; i++) {....}
 
MetaDriver :
사이클에서 실행해야 합니다. for(i=0; i<InpVectorCount; i++) {....}
아니요, 어쨌든, 모든 것은 초기에 올바른 "임의" 벡터를 선택하는 것으로 귀결되며, 이는 결국 전체 세트에 직교성을 부여합니다. 저것들. 임의성은 임의적이지 않고 상당히 균일하게 얻어진다. 다시 원하는 초기 벡터를 계산하는 방법으로 돌아갑니다.
 
alsu :
아니요, 어쨌든, 모든 것은 초기에 올바른 "임의" 벡터를 선택하는 것으로 귀결되며, 이는 결국 전체 세트에 직교성을 부여합니다. 저것들. 임의적이며 임의적이지 않습니다. 다시 원하는 초기 벡터를 계산하는 방법으로 돌아갑니다.
엉터리. 모든 단계에서 확인만 하면 됩니다. 변환 단계에서 벡터가 집합의 다음 벡터와 같은 방향이 되면 초기 임의 벡터를 다시 생성하고 절차를 반복합니다. 이 경우는 (유한 차원의 경우) 가능성이 낮기 때문에 선형 종속성을 즉시 의심하는 것(행렬의 순위 검색)보다 더 쉽습니다(저렴합니다).
 
MetaDriver :
엉터리. 모든 단계에서 확인만 하면 됩니다. 변환 단계에서 벡터가 집합의 다음 벡터와 같은 방향이 되면 초기 임의 벡터를 다시 생성하고 절차를 반복합니다. 이 경우는 (유한 차원의 경우) 가능성이 낮기 때문에 선형 종속성을 즉시 의심하는 것(행렬의 순위 검색)보다 더 쉽습니다(저렴합니다).
그것은 같은 방향이 될 수 없지만 단순히 벡터의 전체 또는 일부에 대해 비스듬한 각도로 될 수 있습니다.
 
MetaDriver :
엉터리. 모든 단계에서 확인만 하면 됩니다. 변환 단계에서 벡터가 집합의 다음 벡터와 같은 방향이 되면 초기 임의 벡터를 다시 생성하고 절차를 반복합니다. 이 경우는 (유한 차원의 경우) 가능성이 낮기 때문에 선형 종속성을 즉시 의심하는 것(행렬의 순위 검색)보다 더 쉽습니다(저렴합니다).
그리고 스칼라 곱이 여전히 계산되어야 하기 때문에 더 저렴합니다(알고리즘에 따라). 이제 1과 같으면 처음으로 재설정하고 프로세스를 반복합니다. 저것들. 각 단계에서 if(cp(a,b)! = 1.0) {}만 확인하세요.