[email protected] 0 Posted June 3, 2020 Report Share Posted June 3, 2020 sou estudante de engenharia de Produção e este semestre estou tendo programação, porém possuo muita dificuldade e preciso criar uma função que resolva um sistema linear com n equações e n incógnitas, usando matriz inversa. Quote Link to post Share on other sites
0 Hazzu 0 Posted June 3, 2020 Report Share Posted June 3, 2020 (edited) Já desenvolvi uma função em C para resolução de sistemas lineares pelo método da Eliminação de Gauss. //Resolução de sistema linear através do Método da Eliminação Gaussiana float * Gauss(float ** M, int tam){ int i, l, j; float * S; float pivor[2]; float aux; S=AlocarVetor(tam); for (j=0; j<tam-1; j++){ pivor[0]=j; pivor[1]=M[j][j]; for (l=j+1; l<tam;l++){ //Procura do maior termo na coluna if ((float)fabs(M[l][j])>(float)fabs(pivor[1])){ pivor[0]=l; pivor[1]=M[l][j]; } } if ((int)pivor[0] != j){ for (l=j; l<=tam; l++){ //Colocando a linha com o maior termo no topo aux=M[(int)pivor[0]][l]; M[(int)pivor[0]][l]=M[j][l]; M[j][l]=aux; } } for (i=j+1;i<tam;i++){ //Escalonamento for (l=tam; l>=j; l--){ M[i][l]=M[i][l]-M[j][l]*(M[i][j]/M[j][j]); } } } //Solução S[tam-1]=M[tam-1][tam]/M[tam-1][tam-1]; for (i=tam-2; i>=0; i--){ aux=0; for (j=i+1; j<tam; j++) aux=aux+M[i][j]*S[j]; S[i]=(M[i][tam]-aux)/M[i][i]; } return S; } Onde M é a matriz ampliada do sistema e tam é o tamanho. A linguagem C oferece mais dificuldade em operações com matrizes devido a lógica de ponteiros e ausência de operações vetoriais. Edited June 3, 2020 by Hazzu Quote Link to post Share on other sites
Question
[email protected] 0
sou estudante de engenharia de Produção e este semestre estou tendo programação, porém possuo muita dificuldade e preciso criar uma função que resolva um sistema linear com n equações e n incógnitas, usando matriz inversa.
Link to post
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.