2
$\begingroup$

Very much related to this question:

Checking if a symbolic matrix is positive semi-definite

Is there a way to tell for which values of symbols a matrix is positive definite? For instance if M = {{a,0}, {0,b}} the function should look like rangePositiveDefiniteQ[M, {a,b}] and return {a>0 && b>0}. I have a feeling this is extremely computationally expensive and unfeasible.

Thanks in advance!

$\endgroup$
1
$\begingroup$

For not too difficult problems, you could use Reduce + Eigenvalues:

positiveDefiniteQ[m_, v_] := Reduce[
    Thread[Eigenvalues[m] > 0],
    v,
    Reals
]

Your example:

positiveSemiDefiniteQ[{{a, 0}, {0, b}}, {a, b}]

a > 0 && b > 0

For the example in the linked question, define positiveSemiDefiniteQ:

positiveSemiDefiniteQ[m_, v_] := Reduce[
    Thread[Eigenvalues[m] >= 0],
    v,
    Reals
]

Then:

positiveSemiDefiniteQ[
    {{1,0,0,Sqrt[1-p]},{0,0,0,0},{0,0,p,0},{Sqrt[1-p],0,0,1-p}},
    p
]

0 <= p <= 2

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.