# Congruence of two non-positive definite matrices

Method here works only with positive definite matrices.

How to adapt it so that it works with non-positive definite matrices?

Both matrices a and b are positive definite:

a=matrix(2, 2, [5,2,2,3])
b=matrix(2, 2, [4,1,1,3])
print(a.is_positive_definite())
print(b.is_positive_definite())
x=qb.is_globally_equivalent_to(qa, return_matrix=True)
print(x)
print(x.transpose()*a*x==b)


True
True
[-1  0]
[ 1  1]
True


Here matrices a and b are not positive definite (which gives error):

a=matrix(2, 2, [6, 3, 3, 1])
b=matrix(2, 2, [6, -15, -15, 37])
print(a.is_positive_definite())
print(b.is_positive_definite())
x=qb.is_globally_equivalent_to(qa, return_matrix=True)


False
False

ValueError: not a definite form in QuadraticForm.is_globally_equivalent_to()


But there are at least these solutions for x:

[[-1,2],[0,1]]
[[-1,2],[6,-13]]
[[-1,3],[0,-1]]
[[-1,3],[6,-17]]
[[1,-3],[-6,17]]
[[1,-3],[0,1]]
[[1,-2],[-6,13]]
[[1,-2],[0,-1]]


Which can be verified by:

x=matrix([[-1,2],[6,-13]])
x.transpose()*a*x==b


True

edit retag close merge delete