Prévia do material em texto
CENTRO UNIVERSITÁRIO INTERNACIONAL UNINTER BACHARELADO EM ENGENHARIA DE PRODUÇÃO ATIVIDADE PRÁTICA – CÁLCULO NUMÉRICO Cálculo Numérico / Métodos Numéricos Aplicados ALUNO: FABIANO RAEL MOURA – RU: 1375582 PROFESSORA: FERNANDA FONSECA SAPUCAIA DO SUL – RIO GRANDE DO SUL RESPOSTA 1: GOOGLE COLAB – PYTHON # Exercicio 1 import numpy as np # Função que será avaliada def f(x): return -3 * x**2 + 2 * x + 5 # Implementação do Método da Bissecção com limite de 10 iterações def bisseccao(a, b, tol, max_iter): print("Método da Bissecção:") for i in range(max_iter): c = (a + b) / 2 print(f"Iteração {i+1}: a = {a}, b = {b}, c = {c}, f(c) = {f(c)}") if f(c) == 0 or (b - a) / 2 = 1 and raizda matriz A x = np.zeros(len(B)) # Vetor solução inicializado com zeros for i in range(len(B)): Ai = A.copy() # Cria uma cópia da matriz A Ai[:, i] = B # Substitui a i-ésima coluna de A pelo vetor B x[i] = np.linalg.det(Ai) / det_A # Calcula a solução para a variável i return x # Solução pela Regra de Cramer solution_cramer = cramer(A, B) print("a. Solução pela Regra de Cramer:", solution_cramer) print("\n") # b. Gauss-Jacobi com 10 iterações def gauss_jacobi(A, B, n_iterations): n = len(B) x = np.zeros(n) # Vetor solução inicializado com zeros new_x = np.zeros(n) # Vetor para armazenar os novos valores for iteration in range(n_iterations): for i in range(n): s = sum(A[i][j] * x[j] for j in range(n) if i != j) # Soma dos elementos da linha i, exceto o pivô new_x[i] = (B[i] - s) / A[i][i] # Atualiza o valor de x[i] x = new_x.copy() # Atualiza x com os valores calculados print(f"b. Iteração {iteration+1} de Gauss-Jacobi: {x}") # Imprime a solução após cada iteração return x # Solução por Gauss-Jacobi com 10 iterações n_iterations = 10 solution_jacobi = gauss_jacobi(A, B, n_iterations) print("b. Solução por Gauss-Jacobi após 10 iterações:", solution_jacobi) print("\n") # c. Gauss-Seidel com 10 iterações def gauss_seidel(A, B, n_iterations): n = len(B) x = np.zeros(n) # Vetor solução inicializado com zeros for iteration in range(n_iterations): for i in range(n): s = sum(A[i][j] * x[j] for j in range(n) if i != j) # Soma dos elementos da linha i, exceto o pivô x[i] = (B[i] - s) / A[i][i] # Atualiza o valor de x[i] usando a solução já obtida print(f"c. Iteração {iteration+1} de Gauss-Seidel: {x}") # Imprime a solução após cada iteração return x # Solução por Gauss-Seidel com 10 iterações solution_seidel = gauss_seidel(A, B, n_iterations) print("c. Solução por Gauss-Seidel após 10 iterações:", solution_seidel) print("\n") SAÍDA DO CONSOLE: 2000 20,86 2001 20,28 2002 19,73 2003 19,19 2004 18,66 2005 18,15 2006 17,65 2007 17,18 2008 16,72 2009 16,29 2010 15,88 2011 15,50 2012 15,13 2013 14,79 2014 14,47 2015 14,16 RESPOSTA 4: GOOGLE COLAB – PYTHON #Exercicio 4 import numpy as np import matplotlib.pyplot as plt # Dados fornecidos anos = list(range(2000, 2016)) taxa_natalidade = [20.86, 20.28, 19.73, 19.19, 18.66, 18.15, 17.65, 17.18, 16.72, 16.29, 15.88, 15.50, 15.13, 14.79, 14.47, 14.16] # Plotando o diagrama de dispersão plt.figure(figsize=(10, 6)) plt.scatter(anos, taxa_natalidade, label='Taxa de Natalidade', color='blue', marker='o') plt.xlabel('Ano') plt.ylabel('Taxa de Natalidade (por mil habitantes)') plt.title('Diagrama de Dispersão da Taxa de Natalidade no Brasil') plt.legend() plt.grid(True) plt.xticks(anos, rotation=45) plt.tight_layout() plt.show() # Ajuste polinomial de 2º grau coeficientes = np.polyfit(anos, taxa_natalidade, 2) # Coeficientes do polinômio a, b, c = coeficientes # Exibindo os coeficientes print(f'Coeficientes do polinômio: a={a:.4f}, b={b:.4f}, c={c:.4f}') # Criando a função ajustada funcao_ajustada = np.poly1d(coeficientes) # Criando array de anos até 2015 para o ajuste anos_completos = np.linspace(2000, 2015, 100) # Plotando o gráfico com a função ajustada plt.figure(figsize=(10, 6)) plt.scatter(anos, taxa_natalidade, label='Taxa de Natalidade', color='blue', marker='o') plt.plot(anos_completos, funcao_ajustada(anos_completos), label='Função Ajustada', color='red') plt.xlabel('Ano') plt.ylabel('Taxa de Natalidade (por mil habitantes)') plt.title('Ajuste Polinomial de 2º Grau aos Dados de Taxa de Natalidade no Brasil') plt.legend() plt.grid(True) plt.xticks(anos, rotation=45) plt.tight_layout() plt.show() SAÍDA DO CONSOLE: