Matematicamente, a quantidade que você está perguntando é chamada de norma do operador . Infelizmente, não existe uma fórmula simples para isso. Se for uma transformação afim totalmente geral - por exemplo, se puder ter uma combinação arbitrária de rotações e escalas não uniformes, em qualquer ordem -, receio que não haja nada a não ser usar a decomposição de valores singular . Se você aplicar SVD à sua matriz, o maior valor singular será o raio máximo do elipsóide resultante. Os outros valores singulares também serão seus outros dois raios, e o procedimento SVD também pode extrair a orientação dos eixos para você.
A implementação de SVD não é para os fracos de coração, pois envolve a busca de valores próprios. Se tudo o que você deseja são os próprios valores singulares, elas são as raízes quadradas dos valores próprios de M ^ T * M. Portanto, se você tem um solucionador de valores próprios 3x3 à mão ou não se importa em escrever um, pode usá-lo. Se você deseja extrair também as orientações dos eixos, fica mais envolvido, pois você também precisa encontrar vetores próprios. Nesse artigo da Wikipedia, há uma lista de links para bibliotecas para fazer SVD, um dos quais você pode usar em seu projeto.
Se a forma da sua matriz for restrita de forma que a escala não uniforme aconteça no máximo uma vez e seja a primeira transformação aplicada, ou seja, seja a mais correta quando você estiver usando vetores de coluna, poderá simplificá-lo para apenas observar os comprimentos dos vetores de eixos transformados. Somente nesse caso - ou seja, uma única escala não uniforme seguida de qualquer sequência de rotações, reflexões e escalas uniformes - observar apenas os vetores dos eixos fornecerá a resposta certa.