Prévia do material em texto
<p>RELATÓRIO MÉTODOS COMPUTACIONAIS</p><p>CARLOS ALBERTO DA SILVA FILHO,</p><p>01697238</p><p>RELATÓRIO DE AULAS PRÁTICAS</p><p>ENSINO DIGITAL</p><p>RELATÓRIO</p><p>DATA:</p><p>04/09/2024</p><p>RELATÓRIO DE AULAS PRÁTICAS: MÉTODOS COMPUTACIONAIS</p><p>DADOS DO(A) ALUNO(A):</p><p>NOME:Carlos Alberto da Silva Filho MATRÍCULA:01697238</p><p>CURSO:Eng. Elétrica POLO:Maceió</p><p>PROFESSOR(A) ORIENTADOR(A):Adilson da Silva</p><p>ORIENTAÇÕES GERAIS:</p><p> O relatório deve ser elaborado individualmente e deve ser escrito de forma clara e</p><p> concisa;</p><p> O relatório deve conter apenas 01 (uma) lauda por tema;</p><p> Fonte: Arial ou Times New Roman (Normal e Justificado);</p><p> Tamanho: 12;</p><p>Margens: Superior 3 cm; Inferior: 2 cm; Esquerda: 3 cm; Direita: 2 cm;</p><p> Espaçamento entre linhas: simples;</p><p> Título: Arial ou Times New Roman (Negrito e Centralizado).</p><p>Atenção: desenvolva as respostas de maneira resumida, mas garanta que todo o</p><p>conteúdo necessário foi abordado. Para essa atividade é obrigatório a indicação de</p><p>referência bibliográfica.</p><p>RELATÓRIO:</p><p>ATIVIDADE PRÁTICA 1 – CONSTRUÇÃO DE PROGRAMA COM ESTRUTURA DE</p><p>REPETIÇÃO E ESTUTURA DE DECISÃO</p><p> Utilizar um dos ambientes de desenvolvimento em C++</p><p>o DEV C++, Code Blocks, C++ On-line ou C++ Movie</p><p> Codificar o programa usando uma biblioteca especifica para entrada e saída</p><p>de dados (stdio.h ou iostream);</p><p> Utilizar a estrutura de decisão IF, if-else ou switch-case;</p><p> Usar comando de digitação de valores de acordo com o tipo da varável;</p><p> Utilize uma variável para receber o valor de um número;</p><p> Crie um loop (use FOR ou while) que percorra todos os números inteiros de 1</p><p>até o número digitado;</p><p> Apresentar no fim do código o valor da soma dos inteiros entre 1 e o valor</p><p>digitado, assim como a quantidade de números divisíveis por 3;</p><p> Usar comandos de impressão de valores com formatação específica,</p><p>mesclando com a impressão de constantes caractere.</p><p>RELATÓRIO DE AULAS PRÁTICAS</p><p>ENSINO DIGITAL</p><p>RELATÓRIO</p><p>DATA:</p><p>04/09/2024</p><p>Resolução atividade 1:</p><p>#include <iostream> // Biblioteca para entrada e saída de dados</p><p>using namespace std;</p><p>int main() {</p><p>int numero; // Variável para receber o valor do número</p><p>int soma = 0; // Variável para armazenar a soma dos inteiros</p><p>int divisiveisPorTres = 0; // Variável para contar quantos números são</p><p>divisíveis por 3</p><p>// Solicita ao usuário que digite um número</p><p>cout << "Digite um número inteiro positivo: ";</p><p>cin >> numero;</p><p>// Verifica se o número é positivo</p><p>if (numero <= 0) {</p><p>cout << "Por favor, digite um número inteiro positivo!" << endl;</p><p>return 1; // Termina o programa com código de erro</p><p>}</p><p>// Loop para percorrer todos os números de 1 até o número digitado</p><p>for (int i = 1; i <= numero; i++) {</p><p>soma += i; // Soma dos números inteiros</p><p>if (i % 3 == 0) {</p><p>divisiveisPorTres++; // Conta os números divisíveis por 3</p><p>}</p><p>}</p><p>// Exibe o resultado da soma e a quantidade de números divisíveis por 3</p><p>cout << "A soma dos números inteiros de 1 até " << numero << " é: " <<</p><p>soma << endl;</p><p>cout << "A quantidade de números divisíveis por 3 é: " << divisiveisPorTres</p><p><< endl;</p><p>return 0; // Termina o programa com sucesso</p><p>}</p><p>Explicação do Código</p><p>1. Biblioteca iostream: É usada para operações de entrada e saída (como cin e</p><p>cout).</p><p>2. Variáveis:</p><p>• numero: Armazena o número que o usuário digita.</p><p>• soma: Acumula a soma de todos os números inteiros de 1 até o</p><p>número digitado.</p><p>RELATÓRIO DE AULAS PRÁTICAS</p><p>ENSINO DIGITAL</p><p>RELATÓRIO</p><p>DATA:</p><p>04/09/2024</p><p>• divisiveisPorTres: Conta quantos números entre 1 e o valor digitado</p><p>são divisíveis por 3.</p><p>3. Estrutura de Decisão if: Verifica se o número digitado é positivo.</p><p>4. Estrutura de Repetição for: Percorre todos os números de 1 até o número</p><p>digitado, calculando a soma e contando os divisíveis por 3.</p><p>5. Saída Formatada: Os resultados são exibidos ao final com mensagens</p><p>explicativas.</p><p>Referências Bibliográficas</p><p>1. Deitel, H. M., & Deitel, P. J. (2012). C++: Como Programar. 8ª edição.</p><p>Pearson Prentice Hall.</p><p>2. Schildt, H. (2013). C++: The Complete Reference. 4ª edição. McGraw-Hill.</p><p>3. Stroustrup, B. (2013). The C++ Programming Language. 4ª edição. Addison-</p><p>Wesley.</p><p>ATIVIDADE PRÁTICA 2 – CONSTRUÇÃO DE PROGRAMA COM O USO DE FUNÇÕES</p><p>E PROCEDURES</p><p> Utilizar um dos ambientes de desenvolvimento em C++</p><p>o DEV C++, Code Blocks, C++ On-line ou C++ Movie</p><p> Codificar o programa usando uma biblioteca especifica para entrada e saída</p><p>de dados;</p><p> Criar funções e/ou procedimentos que sejam chamados do programa</p><p>principal, utilizando a passagem de parâmetro por valor e por referência.</p><p> Utilizar estrutura de repetição WHILE com dependência de digitação ou não.</p><p> Utilizar a estrutura de decisão IF</p><p> Usar comando de digitação de valores de acordo com o tipo da varável</p><p> Apresentar no fim do código o valor de uma média e um contador</p><p> Usar comandos de impressão de valores com formatação específica,</p><p>mesclando com a impressão de constantes caractere.</p><p>Resolução atividade 2:</p><p>#include <iostream> // Biblioteca para entrada e saída de dados</p><p>using namespace std;</p><p>// Declaração das funções</p><p>void calcularSomaEMedia(int numero, int& soma, float& media, int&</p><p>contador);</p><p>void exibirResultados(int soma, float media, int contador);</p><p>int main() {</p><p>int numero;</p><p>int soma = 0;</p><p>RELATÓRIO DE AULAS PRÁTICAS</p><p>ENSINO DIGITAL</p><p>RELATÓRIO</p><p>DATA:</p><p>04/09/2024</p><p>float media = 0.0;</p><p>int contador = 0;</p><p>char continuar;</p><p>do {</p><p>// Solicita ao usuário que digite um número</p><p>cout << "Digite um número inteiro positivo: ";</p><p>cin >> numero;</p><p>// Verifica se o número é positivo</p><p>if (numero <= 0) {</p><p>cout << "Por favor, digite um número inteiro positivo!" << endl;</p><p>continue; // Reinicia o loop se o número for inválido</p><p>}</p><p>// Chama a função para calcular a soma, média e contador</p><p>calcularSomaEMedia(numero, soma, media, contador);</p><p>// Solicita ao usuário se deseja continuar</p><p>cout << "Deseja digitar outro número? (s/n): ";</p><p>cin >> continuar;</p><p>} while (continuar == 's' || continuar == 'S');</p><p>// Chama a função para exibir os resultados</p><p>exibirResultados(soma, media, contador);</p><p>return 0; // Termina o programa com sucesso</p><p>}</p><p>// Função para calcular a soma, média e contador</p><p>void calcularSomaEMedia(int numero, int& soma, float& media, int& contador)</p><p>{</p><p>soma += numero; // Atualiza a soma com o novo número</p><p>contador++; // Incrementa o contador</p><p>media = static_cast<float>(soma) / contador; // Calcula a média</p><p>}</p><p>// Função para exibir os resultados</p><p>void exibirResultados(int soma, float media, int contador) {</p><p>cout << "\nResultados Finais:" << endl;</p><p>cout << "Soma total: " << soma << endl;</p><p>cout << "Média: " << media << endl;</p><p>cout << "Total de números digitados: " << contador << endl;</p><p>}</p><p>RELATÓRIO DE AULAS PRÁTICAS</p><p>ENSINO DIGITAL</p><p>RELATÓRIO</p><p>DATA:</p><p>04/09/2024</p><p>Explicação do Código</p><p>1. Biblioteca iostream: Usada para operações de entrada e saída (como cin e</p><p>cout).</p><p>2. Funções:</p><p>• calcularSomaEMedia: Esta função recebe um número e atualiza a</p><p>soma, calcula a média e incrementa o contador. A passagem de</p><p>parâmetros soma, media, e contador é feita por referência (&),</p><p>permitindo que esses valores sejam alterados dentro da função.</p><p>• exibirResultados: Função para exibir a soma total, a média e o número</p><p>total de entradas, com formatação específica.</p><p>3. Estrutura de Repetição do-while: Permite que o usuário continue digitando</p><p>números até decidir parar, solicitando repetidamente a entrada do número até</p><p>que uma entrada válida seja fornecida.</p><p>4. Estrutura de Decisão if: Verifica se o número digitado é positivo.</p><p>5. Passagem de Parâmetros: numero é passado por valor, enquanto soma,</p><p>media, e contador são passados por referência para que as alterações feitas</p><p>nas funções reflitam no programa principal.</p><p>6. Saída Formatada: Os resultados finais são exibidos com</p><p>mensagens</p><p>explicativas.</p><p>Referências Bibliográficas</p><p>1. Deitel, H. M., & Deitel, P. J. (2012). C++: Como Programar. 8ª edição.</p><p>Pearson Prentice Hall.</p><p>2. Schildt, H. (2013). C++: The Complete Reference. 4ª edição. McGraw-Hill.</p><p>3. Stroustrup, B. (2013). The C++ Programming Language. 4ª edição. Addison-</p><p>Wesley.</p><p>ATIVIDADE PRÁTICA 3 – CONSTRUÇÃO DE PROGRAMA COM O USO DE FUNÇÕES</p><p>E DE USO DE BIBLIOTECA ESPECIFICA DE FUNÇÕES MATEMÁTICAS PARA</p><p>CALCULO DE RAIZES DE EQUAÇÕES UTILIZANDO O MMI ou MS.</p><p> Utilizar um dos ambientes de desenvolvimento em C++</p><p>o DEV C++, Code Blocks, C++ On-line ou C++ Movie</p><p> Codificar o programa usando uma biblioteca especifica para entrada e saída</p><p>de dados;</p><p> Codificar o programa usando uma biblioteca especifica com funções</p><p>matemáticas (Math.h)</p><p> Utilizar estrutura de repetição WHILE OU FOR.</p><p> Usar o método MMI (Método do Meio intervalo) ou o MS (Método das</p><p>Secantes) para buscar uma raiz da função definida a seguir.</p><p>Função:</p><p>f ( x )=ex−3cos ( x )−6</p><p>RELATÓRIO DE AULAS PRÁTICAS</p><p>ENSINO DIGITAL</p><p>RELATÓRIO</p><p>DATA:</p><p>04/09/2024</p><p>Com precisão de ϵ=0 ,01</p><p>No intervalo [1;2]</p><p> Apresentar no fim do código o valor da raiz com erro de aproximação 0,01,</p><p>caso exista;</p><p> Usar comandos de impressão de valores com formatação específica,</p><p>mesclando com a impressão de constantes caractere.</p><p>Resolução da atividade 3:</p><p>#include <iostream> // Biblioteca para entrada e saída de dados</p><p>#include <cmath> // Biblioteca para funções matemáticas</p><p>using namespace std;</p><p>// Definição da função f(x) = x^3 - 9x + 3</p><p>double funcao(double x) {</p><p>return pow(x, 3) - 9 * x + 3;</p><p>}</p><p>// Implementação do Método do Meio Intervalo (MMI)</p><p>double metodoMeioIntervalo(double a, double b, double precisao) {</p><p>double meio;</p><p>while ((b - a) / 2.0 > precisao) {</p><p>meio = (a + b) / 2.0;</p><p>if (funcao(meio) == 0.0) {</p><p>break; // A raiz foi encontrada exatamente</p><p>} else if (funcao(a) * funcao(meio) < 0) {</p><p>b = meio; // A raiz está no intervalo [a, meio]</p><p>} else {</p><p>a = meio; // A raiz está no intervalo [meio, b]</p><p>}</p><p>}</p><p>return meio;</p><p>}</p><p>int main() {</p><p>double a = 1.0; // Limite inferior do intervalo</p><p>double b = 2.0; // Limite superior do intervalo</p><p>double precisao = 0.01; // Precisão desejada</p><p>// Chamada da função que implementa o Método do Meio Intervalo</p><p>double raiz = metodoMeioIntervalo(a, b, precisao);</p><p>// Exibição do resultado com formatação específica</p><p>cout.precision(4);</p><p>cout << fixed;</p><p>RELATÓRIO DE AULAS PRÁTICAS</p><p>ENSINO DIGITAL</p><p>RELATÓRIO</p><p>DATA:</p><p>04/09/2024</p><p>cout << "A raiz encontrada no intervalo [" << a << "; " << b << "] com</p><p>precisão de " << precisao << " é: " << raiz << endl;</p><p>return 0; // Termina o programa com sucesso</p><p>}</p><p>Explicação do Código</p><p>1. Bibliotecas:</p><p>• iostream: Usada para operações de entrada e saída.</p><p>• cmath: Contém funções matemáticas como pow (potência) necessárias</p><p>para calcular a função dada.</p><p>2. Função funcao:</p><p>• Define a função f(x) = x^3 - 9x + 3, cujo valor será avaliado para</p><p>encontrar a raiz.</p><p>3. Função metodoMeioIntervalo:</p><p>• Implementa o Método do Meio Intervalo (MMI), que busca a raiz da</p><p>função no intervalo [a,b][a, b][a,b].</p><p>• A função usa um loop while para iterar até que a diferença entre b e a</p><p>seja menor que a precisão desejada.</p><p>• A raiz é aproximada usando o ponto médio do intervalo em cada</p><p>iteração.</p><p>• O critério para parar o loop é quando a diferença entre a e b é menor</p><p>que a precisão ou quando a função no ponto médio é exatamente 0.</p><p>4. Função main:</p><p>• Define o intervalo de busca [1, 2] e a precisão de 0.01.</p><p>• Chama a função metodoMeioIntervalo para calcular a raiz.</p><p>• Imprime o resultado formatado com 4 casas decimais usando</p><p>cout.precision(4).</p><p>Referências Bibliográficas</p><p>1. Burden, R. L., & Faires, J. D. (2010). Numerical Analysis. 9ª edição.</p><p>Brooks/Cole.</p><p>2. Chapra, S. C., & Canale, R. P. (2010). Métodos Numéricos para Engenharia.</p><p>6ª edição. McGraw-Hill.</p><p>3. Press, W. H., Teukolsky, S. A., Vetterling, W. T., & Flannery, B. P. (2007).</p><p>Numerical Recipes: The Art of Scientific Computing. 3ª edição. Cambridge</p><p>University Press.</p><p>RELATÓRIO DE AULAS PRÁTICAS</p><p>ENSINO DIGITAL</p><p>RELATÓRIO</p><p>DATA:</p><p>04/09/2024</p><p>ATIVIDADE PRÁTICA 4 – CONSTRUÇÃO DE PROGRAMA COM O USO DE FUNÇÕES</p><p>E DE USO DE BIBLIOTECA ESPECIFICA DE FUNÇÕES MATEMÁTICAS PARA</p><p>CALCULO DE RAIZES DE EQUAÇÕES UTILIZANDO O MNR (MÉTODOS DE NEWTON-</p><p>RAPHSON</p><p> Utilizar um dos ambientes de desenvolvimento em C++</p><p>o DEV C++, Code Blocks, C++ On-line ou C++ Movie</p><p> Codificar o programa usando uma biblioteca especifica para entrada e saída</p><p>de dados;</p><p> Codificar o programa usando uma biblioteca especifica com funções</p><p>matemáticas (Math.h)</p><p> Utilizar estrutura de repetição WHILE OU FOR.</p><p> Usar o método MNR (Método de Newton-Raphson) para buscar uma das</p><p>raízes da função de ordem 4 que está definida a seguir.</p><p>Função:</p><p>f ( x )=x4+12.6 x3−155.7 x2+1863</p><p>A função possui quatro raízes reais nos intervalos a seguir:</p><p>A[-19;-17]; B[-6;-4]; C[0;3]; D[8;10]</p><p>O erro de aproximação: ε=0,001</p><p> Apresentar no fim do código o valor da raiz com erro de aproximação 0,001;</p><p> Usar comandos de impressão de valores com formatação específica,</p><p>mesclando com a impressão de constantes caractere.</p><p>Resolução atividade 4:</p><p>#include <iostream> // Biblioteca para entrada e saída de dados</p><p>#include <cmath> // Biblioteca para funções matemáticas</p><p>using namespace std;</p><p>// Definição da função f(x) = x^4 - 10x^3 + 35x^2 - 50x + 24</p><p>double funcao(double x) {</p><p>return pow(x, 4) - 10 * pow(x, 3) + 35 * pow(x, 2) - 50 * x + 24;</p><p>}</p><p>RELATÓRIO DE AULAS PRÁTICAS</p><p>ENSINO DIGITAL</p><p>RELATÓRIO</p><p>DATA:</p><p>04/09/2024</p><p>// Definição da derivada da função f'(x) = 4x^3 - 30x^2 + 70x - 50</p><p>double derivadaFuncao(double x) {</p><p>return 4 * pow(x, 3) - 30 * pow(x, 2) + 70 * x - 50;</p><p>}</p><p>// Implementação do Método de Newton-Raphson</p><p>double metodoNewtonRaphson(double x0, double precisao) {</p><p>double x1;</p><p>while (true) {</p><p>x1 = x0 - funcao(x0) / derivadaFuncao(x0); // Fórmula de Newton-</p><p>Raphson</p><p>if (fabs(x1 - x0) < precisao) {</p><p>break; // O erro de aproximação é menor que a precisão desejada</p><p>}</p><p>x0 = x1; // Atualiza o valor de x0 para a próxima iteração</p><p>}</p><p>return x1;</p><p>}</p><p>int main() {</p><p>// Intervalos iniciais para as raízes reais</p><p>double intervalos[][2] = {{-19, -17}, {-6, -4}, {0, 3}, {8, 10}};</p><p>double precisao = 0.001; // Precisão desejada</p><p>double raiz;</p><p>// Loop para encontrar as raízes nos intervalos especificados</p><p>for (int i = 0; i < 4; i++) {</p><p>double x0 = (intervalos[i][0] + intervalos[i][1]) / 2; // Valor inicial</p><p>aproximado</p><p>raiz = metodoNewtonRaphson(x0, precisao);</p><p>// Exibição do resultado com formatação específica</p><p>cout.precision(4);</p><p>cout << fixed;</p><p>cout << "Raiz encontrada no intervalo [" << intervalos[i][0] << "; " <<</p><p>intervalos[i][1] << "] com precisao de " << precisao << " é: " << raiz << endl;</p><p>}</p><p>return 0; // Termina o programa com sucesso</p><p>}</p><p>Explicação do Código</p><p>1. Bibliotecas:</p><p>• iostream: Usada para operações de entrada e saída de dados.</p><p>RELATÓRIO DE AULAS PRÁTICAS</p><p>ENSINO DIGITAL</p><p>RELATÓRIO</p><p>DATA:</p><p>04/09/2024</p><p>• cmath: Contém funções matemáticas como pow (potência) e fabs (valor</p><p>absoluto), necessárias para calcular a função e sua derivada, e para</p><p>verificar a convergência do método.</p><p>2. Função funcao:</p><p>• Define a função f(x) = x^4 - 10x^3 + 35x^2 - 50x + 24, que é uma</p><p>função de quarta ordem.</p><p>3. Função derivadaFuncao:</p><p>• Define a derivada da função f'(x) = 4x^3 - 30x^2 + 70x - 50, que é</p><p>usada no Método de Newton-Raphson.</p><p>4. Função metodoNewtonRaphson:</p><p>• Implementa o Método de Newton-Raphson, que é um método iterativo</p><p>usado para encontrar aproximações sucessivas da raiz de uma função.</p><p>O método se baseia na fórmula: xn+1=xn−f(xn)f′(xn)x_{n+1} = x_n - \</p><p>frac{f(x_n)}{f'(x_n)}xn+1=xn−f′(xn)f(xn)</p><p>• O loop while continua até que o erro</p><p>de aproximação, medido como</p><p>fabs(x1 - x0), seja menor que a precisão desejada.</p><p>5. Função main:</p><p>• Define os intervalos iniciais onde as raízes são conhecidas (A[-19;-17],</p><p>B[-6;-4], C[0;3], D[8;10]).</p><p>• Utiliza um loop para encontrar cada uma das raízes nos intervalos</p><p>dados, usando um valor inicial aproximado x0, que é o ponto médio do</p><p>intervalo.</p><p>• Exibe as raízes encontradas com formatação específica, utilizando</p><p>cout.precision(4) para formatar a saída.</p><p>Referências Bibliográficas</p><p>1. Burden, R. L., & Faires, J. D. (2010). Numerical Analysis. 9ª edição.</p><p>Brooks/Cole.</p><p>2. Chapra, S. C., & Canale, R. P. (2010). Métodos Numéricos para Engenharia.</p><p>6ª edição. McGraw-Hill.</p><p>3. Press, W. H., Teukolsky, S. A., Vetterling, W. T., & Flannery, B. P. (2007).</p><p>Numerical Recipes: The Art of Scientific Computing. 3ª edição. Cambridge</p><p>University Press.</p><p>RELATÓRIO DE AULAS PRÁTICAS</p><p>ENSINO DIGITAL</p><p>Explicação do Código</p><p>Referências Bibliográficas</p><p>Explicação do Código</p><p>Referências Bibliográficas</p><p>Explicação do Código</p><p>Referências Bibliográficas</p><p>Explicação do Código</p><p>Referências Bibliográficas</p>