matrix retrieving given certain determinant

조회 수: 13 (최근 30일)
saleh salous
saleh salous 2018년 2월 12일
답변: John D'Errico 2021년 2월 9일
dear all i want to retrieve matrix 3x3 with given determinant thanks

답변 (2개)

Torsten
Torsten 2018년 2월 12일
편집: Torsten 2018년 2월 12일
determinant = -30;
diagonal = abs(determinant)^(1/3);
A = zeros(3);
A(1,1) = diagonal;
A(2,2) = diagonal;
A(3,3) = sign(determinant)*diagonal;
det(A)

John D'Errico
John D'Errico 2021년 2월 9일
You want to generate a random matrix with a known determinant?
n = 7; % The size of the matrix
Dtarget = 12; % My target determinant
A = randn(n);
DA = det(A);
A = A*sign(DA)*nthroot(Dtarget/abs(DA),n)
A = 7×7
0.9922 0.4403 -0.2089 -0.2847 -1.4401 -0.8839 -0.3974 0.9601 -0.5051 -0.9957 -1.5741 -0.5598 0.1125 0.6553 -1.7138 -0.6681 -0.8090 -0.3641 0.9679 -0.7558 0.1677 -0.2605 0.3534 1.4410 -0.7409 -2.2699 0.1544 -0.9737 -0.1658 -0.3712 0.7740 -0.8034 -2.3909 -0.4586 0.3298 -1.6123 -0.7431 -0.8667 0.8437 0.6098 0.9010 0.1605 -0.7253 1.2699 0.4742 1.2487 0.7657 -0.0548 -1.4604
Was I successful?
det(A)
ans = 12.0000
Do you want another solution?
n = 5;
A = rand(n);
Dtarget = 17; % My target determinant
[L,U] = lu(A);
L(1,:) = L(1,:)*sign(prod(diag(U)));
U(1:n+1:end) = nthroot(Dtarget,n);
A = L*U
A = 5×5
0.0052 0.1007 1.7623 0.7457 0.2337 0.4085 1.0351 0.5421 2.0212 0.6587 0.7567 1.9360 0.1143 0.1061 0.1833 0.8062 0.6791 1.5897 0.2229 2.2088 1.7623 0.4045 0.3056 0.0629 0.9404
det(A)
ans = 17

카테고리

Help CenterFile Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by