-
Notifications
You must be signed in to change notification settings - Fork 0
/
LEIAME.txt
39 lines (28 loc) · 2.35 KB
/
LEIAME.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//OTIMIZAÇÃO DOS MÉTODOS DE NEWTON PARA RESOLUÇÃO DE SISTEMAS NÃO LINEARES//
*ALUNOS*
Anderson Aparecido do Carmo Frasão
GRR 20204069
Erick Eckermann Cardoso
GRR20186075
*OBJETIVO*
O objetivo otmizar os codigos implementados no trabalho 1 (os métodos iterativos de Newton).
Foram foram otimizadas duas variantes desse método em linguagem C:
- Método Newton Padrão: Resolve o sistema linear de cada iteração utilizando o método de eliminação de Gauss;
- Método Newton Inexato: Resolve o sistema linear de cada iteração utilizando o método de Gauss-Seidell com no máximo 50 iterações;
*BUGS ARRUMADOS*
Método de Newton Modificado:
Mesmo não ultilizando a lib Newton Modificado, foi arrumado o trecho que estava incompativel com o codigos correto. Havia uma soma dos multiplicadores
na função triangLU que não deveria estar la, e ele funcionava pois tihna uma interação no vetor grad que desfazia o erro.
Método de Newton Inexato:
Foram realizadas mudanças na estrutura do código para corrigir o erro no método de resolução do sistema linear Gauss-seidel. O código original apresentava um erro
no método de parada onde a subtração de res e prox_res sempre era nula, fazendo com que o algoritmo sempre rodasse as 50 iterações. O problema constava na função
calculaIndependentes, onde o ponteiro passado por referência era copiado para um ponteiro local, porém não os valores apontados pelo ponteiro mas sim o próprio
endereço, fazendo com que a função alterasse diretamente os valores apontados pelo ponteiro passado por referência. Isso fazia com que na função Gauss-Seidel a
subtração de res e prox_res sempre fosse nula, pois prox_res recebe res em determinado ponto. Para corrigir foi feita alteração na estrutura onde na função
calculaIndependentes um novo ponteiro é alocado e retornado, e para ele são copiados os valores apontados pelo parâmetro de referência.
*EXECUÇÃO*
O programa foi implementado para ler arquivos de entrada no padrão apresentado nas expecificações do trabalho. O código compilado gera um executável newtonPC.
Ao ser executado com um arquivo de entrada, o programa imprime os resultados no próprio terminal, seguindo o padrão de impressão como expecificado.
Para compilar, executar o código e gerar os graficos
digite o comando: ~$sh geral.sh
(esse script faz tudo automaticamente)