, 왜 당신은 단순히 사용하지 않는 fsolve
기능을 ldivide
또는 \
연산자가 필요합니까? 이렇게하면 선형 시스템을 직접 해결할 수 있습니다. 다음과 같은 관계가 있음을 알 수 있습니다.
R*P1 = A
R*P2 = B
R*P3 = C
각 행렬 수식에 3 가지 제약 조건이 있음을 알 수 있습니다. 여러분이 할 수있는 것은 모든 행렬 방정식을 함께 캡슐화하여 9 개의 제약 조건을 생성하는 하나의 시스템을 생성하는 것입니다. 따라서 행렬 R
의 계수를 다른 식으로 풀 수 있도록 이것을 재구성해야합니다. 이렇게하려면 행렬 R
을 9 요소 벡터가되도록 바꿔야합니다. 즉, 우리는 다음과 같이 시스템을 재구성 할 수 있습니다
[P1 0 0 0 0 0 0] [R1] [ ]
[0 0 0 P1 0 0 0] [R2] [ A ]
[0 0 0 0 0 0 P1] [R3] [ ]
[P2 0 0 0 0 0 0] [R4] [ ]
[0 0 0 P2 0 0 0] * [R5] = [ B ]
[0 0 0 0 0 0 P2] [R6] [ ]
[P3 0 0 0 0 0 0] [R7] [ ]
[0 0 0 P3 0 0 0] [R8] [ C ]
[0 0 0 0 0 0 P3] [R9] [ ]
P * R = D
당신은 우리는 우리가 해결할 수 있도록 벡터로 재편되는 P
라는 9 X 9 매트릭스, 우리의 행렬 R
있는 것을 볼 수 있습니다 계수 및 D
은 A,B,C
이 하나의 벡터로 함께 연결됩니다. R1
~ R9
은 왼쪽에서 오른쪽으로 그리고 위에서 아래로 읽는 행렬 R
의 계수입니다.
R = P^{-1}*D
같은, 단순히과 같이 매트릭스 P
및 벡터 D
를 구성 :
따라서, 귀하의 매트릭스에 계수를 찾으려면 않는
P = [P1.' zeros(1,6); zeros(1,3) P1.' zeros(1,3); zeros(1,6) P1.'; ...
P2.' zeros(1,6); zeros(1,3) P2.' zeros(1,3); zeros(1,6) P2.'; ...
P3.' zeros(1,6); zeros(1,3) P3.' zeros(1,3); zeros(1,6) P3.'];
D = [A; B; C];
을 이제 단순히에 대한 해결 R
을 찾아 3x3 매트릭스로 다시 바꿉니다. 따라서 :
R = P \ D;
R = reshape(R, 3, 3).';
reshape
는 3 × 3 행렬로 우리의 벡터를 회전하지만 열 - 중요한 형식의 행렬을 구성한다, 그래서 당신은 당신이 reshape
를 호출 한 후 결과를 전치 할 필요가있다. 당신의 본보기로, 이것은 우리가 얻는 것입니다. 수행
P1 = [1;1;1];
P2 = [2;3;4];
P3 = [5;4;3];
A = [11;10;6];
B = [36;33;20];
C = [41;37;22];
P = [P1.' zeros(1,6); zeros(1,3) P1.' zeros(1,3); zeros(1,6) P1.'; ...
P2.' zeros(1,6); zeros(1,3) P2.' zeros(1,3); zeros(1,6) P2.'; ...
P3.' zeros(1,6); zeros(1,3) P3.' zeros(1,3); zeros(1,6) P3.'];
D = [A; B; C];
R = P \ D;
R = reshape(R, 3, 3).';
이 R
이 올바른지 확인하려면 :
A1 = R*P1;
B1 = R*P2;
C1 = R*P3;
우리는 각각 얻을 :
A1 =
11
10
6
B1 =
36
33
20
C1 =
41
37
22
그때 내가 전에에서했던 코드를 사용
P1, P2, P3, A, B, C
을 구성
이것은 예제와 일치합니다. 그러나 R
이 상태가 좋지 않다는 경고가 표시 될 수 있습니다. 이는 고유 한 역변환을 올바르게 찾을 수있는 제약 조건이 충분하지 않기 때문입니다. 고유 한 역변환을 얻기 위해 더 많은 제약 조건을 추가해야 할 수도 있지만 그렇지 못할 경우에는주의해서 사용해야합니다.
이것은 작동합니다! 도와 줘서 고마워! 나는 선형 대수학에 너무 능숙하지 않다. 이런 모습을보고 네가 본 것을 볼 수있을 때까지 나는 기다릴 수 없다. – TheTreeMan
@ TheTreeMan 내 기쁨! 선형 대수학 공식과 혼동하지 않기를 바랍니다. 그걸 얼마나 잘 알았는지 몰랐어요. 행운을 빕니다! – rayryeng