1) Implementar uma função que resolve sistemas de equações lineares pelo Método da
Eliminação de Gauss. Incluir a estratégia de pivoteamento e a possibilidade do sistema
apresentar nenhuma e múltiplas soluções. Nestes casos, deve-se informar ao usuário
sobre o ocorrido. O seu programa deve retornar o vetor solução x e o tempo de
computação (tempo que o computador levou para resolver o sistema usando seu
programa). Esta função deve receber argumentos A e b que são, respectivamente, a
matriz dos coeficientes e o vetor de constantes.
2) Implementar os algoritmos de Gauss-Jacobi e de Gauss-Seidel. As funções devem
retornar o vetor solução, o número de iterações e o tempo de computação. Os
parâmetros de entrada são a matriz dos coeficientes (A), o vetor das constantes (b), o
vetor com a estimativa inicial (x0), o número máximo de iterações (itmax) e a tolerância
de convergência (tol). Essas funções devem verificar se o sistema informado tem
convergência dependente da estimativa inicial, utilizando para isso os critérios
apresentados na disciplina. Assim, essas funções devem informar ao usuário sobre
possíveis situações que exigem atenção especial.
Análises:
a) Estudar as eficiências do Método da Eliminação de Gauss (direto) e dos métodos
iterativos. Para isto execute seus programas utilizando sistemas com dimensões
cada vez maiores. Comece com um sistema 2x2, depois 5x5, depois 10x10, 20x20,
50x50, 100x100, e vá aumentando a dimensão até o limite da sua memória ram.
Desenhe gráficos onde no eixo x tem a dimensão do sistema (exemplo: sistema 4x4
a dimensão é 4) e no eixo y o tempo de computação. Numa mesma figura deve
haver um gráfico para cada algoritmo de solução: Met. Elim. Gauss; Met. G. Jacobi;
Met. G. Seidel. Inclua um quarto gráfico com o tempo de solução no caso de se
utilizar o algoritmo de solução do próprio MatLab/Octave.
b) Estudar a influência da distância entre a estimativa inicial e a solução do sistema no
número de iterações (basear suas conclusões em um gráfico distância versus
número de iterações - vide figura a seguir). Assumir, para a estimativa inicial, 10
distâncias diferentes a partir da solução obtida pelo Método da Eliminação de Gauss
ao longo de n direções de sua preferência (adote a aplicação das distâncias pelo
menos em 3 componentes, mas sempre nas mesmas componentes). Sendo assim,
você terá 10 diferentes estimativas iniciais, cada uma mais distante da solução.
Para cada estimativa inicial, execute seu programa e determine o número de
iterações utilizadas para se atingir a tolerância especificada (a mesma para todos os
1
10 casos). Para gerar esse gráfico utilize o sistema com dimensão 10x10 utilizado
na letra a). Para este mesmo sistema, adotar as tolerâncias de 10-6, 10-8 e 10-10 para
os dois métodos iterativos e um número máximo de iterações muito grande (por
exemplo, 10000). Você terá um gráfico (formado por 10 pontos) para cada método e
para cada tolerância adotada, ou seja, serão 6 gráficos (2 métodos e 3 tolerâncias).
1) Elaborar uma função para solução de sistemas de equações não-lineares pelo método
de Newton-Raphson. Usar a forma [x t] = newtonraphson(fun,jac,xo), onde fun é o
nome da função que calcula o vetor de funções, jac é o nome da função que calcula a
matriz jacobiana e x0 o valor inicial para as variáveis. Esta função retorna o vetor x,
solução do sistema não linear e o escalar t, tempo de computação (tempo que o
computador levou para rodar seu programa). Elaborar também uma segunda função
para solução de sistemas de equações não-lineares pelo método de Newton-Raphson
Modificado. Usar a forma [x t] = newtonraphsonmod(fun,jac,xo), onde fun é o nome da
função que calcula o vetor de funções, jac é o nome da função que calcula a matriz
jacobiana e x0 o valor inicial para as variáveis. Esta função também retorna o vetor x,
solução do sistema não linear e o escalar t, tempo de computação. Os valores da
tolerância e do número máximo de iterações devem ser definidos internamente em
cada uma das funções, não sendo necessário que o usuário os defina. Obs.: Utilize o
algoritmo do MatLab/Octave para a solução dos sistemas lineares de cada iteração de
Newton.
Análises:
a) Verifique o desempenho de cada um dos métodos para um dado sistema não linear
usando um gráfico tolerância x tempo. Compare esses tempos de computação com
o tempo de computação do algoritmo do MatLab/Octave (função fzero). Fica a seu
critério a definição do sistema não linear de teste. Determine o tempo de execução
de cada método para cada uma das tolerâncias. Uma sugestão: utilize exemplos de
exercícios disponíveis nos livros de Cálculo Numérico ou exemplos disponíveis nos
materiais didáticos que tratam sobre o M. N-R e M. N-R Mod.
b) Faça uma pesquisa sobre a convergência dos métodos de N-R e N-R Mod. para
solução de sistemas não lineares. Você deve pesquisar sobre as situações em que
há ou não convergência e sobre os fatores que influenciam na velocidade de
convergência. Mostre exemplos que demonstram essas influências aplicando as
suas implementações aos exemplos da literatura usada na pesquisa.