답변
당신은 일반화 역 및 무어 - 펜로즈 역 개념을 살펴 봐야 찾고 있습니다.
B가 존재하지 않을 수 있으며 여러 가지 해결책이있을 수 있습니다.
또 다른 접근법은 열당 열을 해결하는 것입니다.
C++이나 메이플로 샘플 코드를 제공해 주시겠습니까? 덕분에 – shere
(필요에 따라 A와 C를 정의)
메이플
> with(LinearAlgebra):
> A:=Matrix([[0,0,0],[0,0,0],[0,0,0]]);
> C:=Matrix([[0,0,0],[0,0,0],[0,0,0]]);
> Multiply(A^(-1),C)
하지만 A는 정사각형 매트릭스가 아닙니다! 그 확인은? – shere
[이 게시물의] 질문과 답변 (https://stackoverflow.com/questions/7892990/solving-a-system-of-linear-equations-in-a-non-square-matrix)을 읽어보십시오. 이런 종류의 문제에 대해 어느 정도 이해할 수 있도록하십시오. – Marathon55
당신은 우리를 말하지 않았다 m>n
또는 m=n
또는 m<n
여부.
선형 시스템이 지나치게 결정되었는지 또는 과소 평가되었는지 또는 정확한 해결책이 있는지 여부는 알 수 없습니다.
정확한 해결책이 둘 이상있을 수 있습니다. 정확한 해결책이 없을 수도 있습니다. 정확한 솔루션은 아니지만 오류를 최소화하는 솔루션을 찾고있을 수 있습니다.
언급 된 세 가지 경우 각각 m
및 n
에 대한 값을 사용하여 다음 메이플 코드를 실험 해보십시오. (코드는 당신이 교란 C
더 정확한 해결책이 될 수 없음이 원인이됩니다 대략적인 솔루션을 얻는 효과를 볼 수 있도록 정확한 C=A.B
을 교란.)
restart;
randomize():
with(LinearAlgebra):
# Experiment with the following computations, using case each of:
# 1) m > n
# 2) n > m
# 3) m = n
m,n:=2,3;
A:=RandomMatrix(n,m, generator=-10..10);
B:=RandomMatrix(m,m, generator=-10..10);
C:=A.B;
C[2,..]:=C[2,..]*1.01: # add some error
C[..,2]:=C[..,2]*1.01: # add some error
C;
Bhat1:=LeastSquares(A, C, method=SVD);
A.Bhat1, C;
Norm(A.Bhat1 - C);
Bhat2:=LinearAlgebra:-MatrixInverse(A) . C;
A.Bhat2, C;
Norm(A.Bhat2 - C);
도대체 C++에서이 함께 할 수 있는가? – StoryTeller
죄송합니다. 당신을 얻지 못했습니다. – shere
코드없이 대수 문제는 C++과 관련이 있습니까? 당신은 C++로 태그를 붙였습니다. – StoryTeller