Escalonamento de matrizes

Existe algum código pronto em Java que, dada uma matriz M3x3(por exemplo) qualquer retorne ela escalonada? Ou algo que me ajude a resolver esse problema de alguma forma. Grato pela atenção! :slight_smile:

Isso é um trabalho de faculdade? Se for, é provável que o professor queira que você elabore na mão o algorítmo para isso:

Até porque, os computadores não costumam a precisar desse tipo de recurso para resolver problemas com matrizes…

Sim. Tenho que fazer uma implementação bem simples em Java: Eu recebo no teclado um sistema no |R3(terceira dimensão), um subespaço vetorial F qualquer. Devo retornar como resultado um sistema no |R3, outro subespaço G que obedece a seguinte regra: |R3 = F ‘soma direta’ G.

Ou seja, a soma direta de F e G deve dar o |R3. Sacasse a ideia?

Abaixo foi o algoritmo que criei para ‘garantir’ que toda matriz 3x3 passe pelo processo de escalonamento:

[code]//deixa o x da primeira equacao com valor 1!
listaVetor[0].x > listaVetor[0].x/listaVetor[0].x;
listaVetor[0].y > listaVetor[0].y/listaVetor[0].x;
listaVetor[0].z > listaVetor[0].z/listaVetor[0].x;
//zera o x da segunda equacao!
listaVetor[1].x > listaVetor[1].x - listaVetor[1].x * listaVetor[0].x;
listaVetor[1].y > listaVetor[1].y - listaVetor[1].x * listaVetor[0].y;
listaVetor[1].z > listaVetor[1].z - listaVetor[1].x * listaVetor[0].z;
//zera o x da terceira equacao!
listaVetor[2].x > listaVetor[2].x - listaVetor[2].x * listaVetor[0].x;
listaVetor[2].y > listaVetor[2].y - listaVetor[2].x * listaVetor[0].y;
listaVetor[2].z > listaVetor[2].z - listaVetor[2].x * listaVetor[0].z;

//deixa o y da segunda equacao com valor 1!
listaVetor[1].y > listaVetor[1].y/listaVetor[1].y;
listaVetor[1].x > listaVetor[1].x/listaVetor[1].y;
listaVetor[1].z > listaVetor[1].z/listaVetor[1].y;
//zera o y da primeira equacao!
listaVetor[0].y > listaVetor[0].y - listaVetor[1].y * listaVetor[0].y;
listaVetor[0].x > listaVetor[0].x - listaVetor[1].y * listaVetor[0].x;
listaVetor[0].z > listaVetor[0].z - listaVetor[1].y * listaVetor[0].z;
//zera o y da terceira equacao!
listaVetor[2].y > listaVetor[2].y - listaVetor[2].y * listaVetor[1].y;
listaVetor[2].x > listaVetor[2].x - listaVetor[2].y * listaVetor[1].x;
listaVetor[2].z > listaVetor[2].z - listaVetor[2].y * listaVetor[1].z;

//deixa o z da terceira equacao com valor 1!
listaVetor[2].z > listaVetor[2].z/listaVetor[2].z;
listaVetor[2].x > listaVetor[2].x/listaVetor[2].z;
listaVetor[2].y > listaVetor[2].y/listaVetor[2].z;
//zera o z da primeira equacao!
listaVetor[0].z > listaVetor[0].z - listaVetor[0].z * listaVetor[2].z;
listaVetor[0].x > listaVetor[0].x - listaVetor[0].z * listaVetor[2].x;
listaVetor[0].y > listaVetor[0].y - listaVetor[0].z * listaVetor[2].y;
//zera o z da segunda equacao!
listaVetor[1].z > listaVetor[1].z - listaVetor[1].z * listaVetor[2].z;
listaVetor[1].x > listaVetor[1].x - listaVetor[1].z * listaVetor[2].x;
listaVetor[1].y > listaVetor[1].y - listaVetor[1].z * listaVetor[2].y;[/code]