A maior rede de estudos do Brasil

Algoritmo de eliminação de Gauss?

Alguém ai possui um algoritmo implementado em C ou JAVA com a eliminação de Gauss?

Cálculo Numérico

UNICENTRO


4 resposta(s) - Contém resposta de Especialista

User badge image

RD Resoluções Verified user icon

Há mais de um mês

Para responder essa pergunta devemos colocar em prática nosso conhecimento sobre Cálculo Numérico.


gaussSolver(An×n, bn)

para k = 1 até n - 1

max = |A(k, k)|

maxIndex = k

para i = k + 1 até n

se(max < |A(i, k)|)

max = |A(i, k)|

maxIndex = i

fim_se

fim_para

se(maxIndex = k)

para j = 1 até n

temp = A(k, j)

A(k, j) = A(maxIndex, j)

A(maxIndex, j) = temp

fim_para

temp2 = b(k)

b(k) = b(maxIndex)

b(maxIndex) = temp2

fim_se

se(A(k, k) = 0)

//o sistema é impossível ou não tem solução única

//det A = 0

retorne NULL

senão

para m = k + 1 até n

F = (-1) * A(m, k) / A(k, k)

A(m, k) = 0 //evita uma iteração

b(m) = b(m) + F * b(k)

para l = k + 1 até n

A(m, l) = A(m, l) + F * A(k, l)

fim_para

fim_para

fim_se

fim_para

inicializar vetor X[1...n]

X(n) = b(n) / A(n, n)

para i = n - 1 até 1 decremento de 1

X(i) = b(i)

para j = i + 1 até n

X(i) = X(i) - X(j) * A(i, j)

fim_para

X(i) = X(i) / A(i, i)

fim_para

retorne X

fim_gaussSolver


Portanto, apesar do código estar em portogol, é fácil visualizar a lógica do programa e de seu funcionamento, para que assim, caso seja de interesse, não haveria maiores dificuldades em transformar o algoritmo apresentado em uma linguagem de programação desejada.

Para responder essa pergunta devemos colocar em prática nosso conhecimento sobre Cálculo Numérico.


gaussSolver(An×n, bn)

para k = 1 até n - 1

max = |A(k, k)|

maxIndex = k

para i = k + 1 até n

se(max < |A(i, k)|)

max = |A(i, k)|

maxIndex = i

fim_se

fim_para

se(maxIndex = k)

para j = 1 até n

temp = A(k, j)

A(k, j) = A(maxIndex, j)

A(maxIndex, j) = temp

fim_para

temp2 = b(k)

b(k) = b(maxIndex)

b(maxIndex) = temp2

fim_se

se(A(k, k) = 0)

//o sistema é impossível ou não tem solução única

//det A = 0

retorne NULL

senão

para m = k + 1 até n

F = (-1) * A(m, k) / A(k, k)

A(m, k) = 0 //evita uma iteração

b(m) = b(m) + F * b(k)

para l = k + 1 até n

A(m, l) = A(m, l) + F * A(k, l)

fim_para

fim_para

fim_se

fim_para

inicializar vetor X[1...n]

X(n) = b(n) / A(n, n)

para i = n - 1 até 1 decremento de 1

X(i) = b(i)

para j = i + 1 até n

X(i) = X(i) - X(j) * A(i, j)

fim_para

X(i) = X(i) / A(i, i)

fim_para

retorne X

fim_gaussSolver


Portanto, apesar do código estar em portogol, é fácil visualizar a lógica do programa e de seu funcionamento, para que assim, caso seja de interesse, não haveria maiores dificuldades em transformar o algoritmo apresentado em uma linguagem de programação desejada.

User badge image

Rodrigo Senna

Há mais de um mês

Não seu energumeno!!!!

User badge image

Andre Smaira

Há mais de um mês

Para responder essa pergunta devemos colocar em prática nosso conhecimento sobre Cálculo Numérico.


gaussSolver(An×n, bn)

para k = 1 até n - 1

max = |A(k, k)|

maxIndex = k

para i = k + 1 até n

se(max < |A(i, k)|)

max = |A(i, k)|

maxIndex = i

fim_se

fim_para

se(maxIndex = k)

para j = 1 até n

temp = A(k, j)

A(k, j) = A(maxIndex, j)

A(maxIndex, j) = temp

fim_para

temp2 = b(k)

b(k) = b(maxIndex)

b(maxIndex) = temp2

fim_se

se(A(k, k) = 0)

//o sistema é impossível ou não tem solução única

//det A = 0

retorne NULL

senão

para m = k + 1 até n

F = (-1) * A(m, k) / A(k, k)

A(m, k) = 0 //evita uma iteração

b(m) = b(m) + F * b(k)

para l = k + 1 até n

A(m, l) = A(m, l) + F * A(k, l)

fim_para

fim_para

fim_se

fim_para

inicializar vetor X[1...n]

X(n) = b(n) / A(n, n)

para i = n - 1 até 1 decremento de 1

X(i) = b(i)

para j = i + 1 até n

X(i) = X(i) - X(j) * A(i, j)

fim_para

X(i) = X(i) / A(i, i)

fim_para

retorne X

fim_gaussSolver


Portanto, apesar do código estar em portogol, é fácil visualizar a lógica do programa e de seu funcionamento, para que assim, caso seja de interesse, não haveria maiores dificuldades em transformar o algoritmo apresentado em uma linguagem de programação desejada.

User badge image

Andre Smaira

Há mais de um mês

Cálculo Numérico


Para responder essa pergunta devemos colocar em prática nosso conhecimento sobre Cálculo Numérico.


gaussSolver(An×n, bn)

para k = 1 até n - 1

max = |A(k, k)|

maxIndex = k

para i = k + 1 até n

se(max < |A(i, k)|)

max = |A(i, k)|

maxIndex = i

fim_se

fim_para

se(maxIndex = k)

para j = 1 até n

temp = A(k, j)

A(k, j) = A(maxIndex, j)

A(maxIndex, j) = temp

fim_para

temp2 = b(k)

b(k) = b(maxIndex)

b(maxIndex) = temp2

fim_se

se(A(k, k) = 0)

//o sistema é impossível ou não tem solução única

//det A = 0

retorne NULL

senão

para m = k + 1 até n

F = (-1) * A(m, k) / A(k, k)

A(m, k) = 0 //evita uma iteração

b(m) = b(m) + F * b(k)

para l = k + 1 até n

A(m, l) = A(m, l) + F * A(k, l)

fim_para

fim_para

fim_se

fim_para

inicializar vetor X[1...n]

X(n) = b(n) / A(n, n)

para i = n - 1 até 1 decremento de 1

X(i) = b(i)

para j = i + 1 até n

X(i) = X(i) - X(j) * A(i, j)

fim_para

X(i) = X(i) / A(i, i)

fim_para

retorne X

fim_gaussSolver


Portanto, apesar do código estar em portogol, é fácil visualizar a lógica do programa e de seu funcionamento, para que assim, caso seja de interesse, não haveria maiores dificuldades em transformar o algoritmo apresentado em uma linguagem de programação desejada.

Essa pergunta já foi respondida!