Baixe o app para aproveitar ainda mais
Prévia do material em texto
LABORATÓRIO 5 Interpolação e Integração Numérica Ano 1872 1890 1900 1920 1940 1950 1960 1970 1980 1991 1996 População 9.9 14.3 17.4 30.6 41.2 51.9 70.2 93.1 119.0 146.2 157.1 1. Interpolação – Algoritmo de Lagrange Faça uma função com o nome Lagrange Algoritmo de Lagrange Entrada: Vetores coluna “x” e “y” dos pares de pontos da função a ser interpolada e ponto “p” onde a função interpoladora será avaliada. Saída: valor S da função interpoladora no ponto “p”. n = comprimento(x) S = 0; para i = 1 até n L = 1 para j = 1 até n se (i~=j) L = L*(p-x(j))/(x(i)-x(j)) fim_se fim_para S = S+L*y(i); fim_para Estime a população em 1955 e plote a função resultante da interpolação de Lagrange para os dados do item 1, a) (deve-se chamar o método de Lagrange para cada um dos pontos que compõem o gráfico). Tal método é apropriado para se estimar a população em 2010? 2. Interpolação – Algoritmo de Newton Faça uma função com o nome InterNewton Algoritmo da interpolação de Newton Entrada: Vetores coluna “x” e “y” dos pares de pontos da função a ser interpolada e ponto “p” onde a função interpoladora será avaliada. Saída: Valor P da função interpoladora no ponto “p” n = comprimento(x) Tabdiffdiv = diffdiv(x,y); //funcao diffdiv definida abaixo P = y(1); para i=2 ate n M = 1 para j = 1 ate i-1 M = M*(p - x(j)) fim_para P = P + M*Tabdiffdiv(1,i) fim_para Algoritmo das diferenças divididas Entrada: Vetores coluna x e y dos pares de pontos Saída: Tabela Tab com as diferenças divididas (de ordem zero até a ordem máxima) n = comprimento(x) Tab(:,1)=y; //diferencas divididas de ordem zero para i = 1 ate n-1 para j = 1 ate n-i Tab(j,i+1) = (Tab(j+1,i)-Tab(j,i))/(x(j+i)-x(j)); fim_para fim_para Plote a função resultante da interpolação de Newton para os dados do item 1, a). Compare com o gráfico da interpolação de Lagrange. 3. Interpolação Polinomial como Sistema de Equações Faça um algoritmo que construa a matriz de Vandermonde para um conjunto de pares de pontos (x,y) e em seguida chame o método de Gauss para achar o polinômio interpolador de tais pontos. Dica: semelhante ao ajuste polinomial. 4. Funções Nativas para Interpolação [yp]=interp1(x, y, xp, [method]) // Calcula quais os yp correspondentes aos xp no polinômio gerado a partir da interpolação dos pontos dados nos vetores x e y. *method+=”nearest” ->Retorna o y correspondente ao x mais próximo de xp. *method+=”linear” ->Interpolação polinomial linear a cada 2 pontos. *method+=”spline” ->Interpolação por splines. ex: x=0:%pi y=sin(x) yp= interp1(x, y, 0.5, “linear”) //resp: yp= 0.4207355 5. Exercício: Dados os pontos (0;1) (1;2) (2;5) e (7;2), utilize as funções nativas do Scilab para: a) Qual o valor retornado pela interpolação utilizando a função interp1 se utilizarmos como parâmetros para a função os pontos dados no enunciado, xp=5 e os métodos com critério de proximidade (nearest), linear e splines? b) Desenhe o gráfico de zero à 10 contendo os pontos dados no enunciado, a interpolação utilizando o método com critério de proximidade (nearest), a interpolação utilizando o método linear e a interpolação utilizando o método de splines. 6. Aquecimento a. Abra o console do scilab e plote um gráfico da função descrita logo abaixo variando o de 0 a 1 com passo de 0.01. b. Plote a mesma função com passo de 1, em vermelho. Calcule a área abaixo do gráfico em vermelho (atenção para onde está o eixo ). c. Por último crie uma função com o nome TrapSimples: Algoritmo Trapézio Simples Entrada: Intervalo da integral [a,b]. Saída: Valor da integral I. function I = TrapSimples(a,b) I = (b-a)*(f(b) + f(a))/2 endfunciton Utilize o algoritmo para aproximar o valor da integral de no intervalo desejado. Em seguida, calcule o erro através da forma analítica de resolução de integrais. 7. Trapézio Composto Faça uma função com o nome TrapComposto. Algoritmo Trapézio Composto Entrada: Intervalo da integral [a,b], número de subintervalos n (a função que iremos achar a integral será declarada em f). Saída: Valor da integral I. h=(b-a)/n x(1)=a y(1)=f(x(1)) // f é função cuja integral será calculada I=y(1) para i=2 até n x(i)=x(i-1)+h y(i)=f(x(i)) I=I+2*y(i) fim_para x(n+1)=b y(n+1)=f(x(n+1)) I=h/2*(I+y(n+1)) Utilizando o código, determine o valor da integral para n = 6. Em seguida compare com o método do Trapézio Simples. Qual dos dois apresenta menor erro? 8. Primeira Regra de Simpson (Simpson 1/3) Faça uma função com o nome Simpson13 Algoritmo de Simpson 1/3 Entrada: Intervalo da integral [a,b], número de subintervalos n (a função que iremos achar a integral será declarada em f). Saída: Valor da integral I. h=(b-a)/n x(1)=a y(1)=f(x(1)) // f é função cuja integral será calculada I=y(1) para i=2 até n x(i)=x(i-1)+h y(i)=f(x(i)) se i mod 2 == 0 //resto pela divisão por 2 nulo I=I+4*y(i) senao I=I+2*y(i) fim_se fim_para x(n+1)=b y(n+1)=f(x(n+1)) I=h/3*(I+y(n+1)) Utilizando o código, determine o valor da integral para n = 6. 9. Segunda Regra de Simpson (Simpson 3/8) Faça uma função com o nome Simpson38 Algoritmo de Simpson 3/8 Entrada: Intervalo da integral [a,b], número de subintervalos n (a função que iremos achar a integral será declarada em f). Saída: Valor da integral I. h=(b-a)/n I=f(a) // f é função cuja integral será calculada para i=2 até n se i mod 3 == 1 //resto pela divisao por 3 = 1 I=I+2*f(a+i*h-h) //tem que subtrair h pq i começa com 2 senao I=I+3*f(a+i*h-h) fim_se fim_para I=3*h/8*(I+f(b)) Utilizando a mesma quantidade de subintervalos do Simpson 1/3 compare os resultados obtidos. 10. Funções Nativas para Integração a. Trapezio: função I=inttrap(x,y) Ex: X= 0:0.1:%pi/2 I = inttrap(x,sin(x)) b. Quadratura: função I = integrate(expr,v,x0,x1 [,atol [,rtol]])) Ex: x0=0;x1=%pi/2; I=integrate('sin(x)','x',x0,x1);
Compartilhar