Área 2: mudanças entre as edições
(Criou página com 'A) "tecnicalidades" -------------------------- O que este programa escreve na tela? 1) <pre> ... j=0; do{ j++; i = 4*j ; printf("i=%d j=%d \n", i, j) ; }while(i<=10) ; printf("...') |
Sem resumo de edição |
||
(2 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 2: | Linha 2: | ||
-------------------------- | -------------------------- | ||
O que | O que estes programas escrevem na tela? | ||
1) | 1) | ||
Linha 32: | Linha 32: | ||
... | ... | ||
</pre> | </pre> | ||
3) Abaixo você encontra partes de programas. Eles contêm erros. Identifique-os e pense no que você faria para resolvê-los. | 3) Abaixo você encontra partes de programas. Eles contêm erros. Identifique-os e pense no que você faria para resolvê-los. | ||
Linha 68: | Linha 69: | ||
... | ... | ||
</pre> | </pre> | ||
Linha 75: | Linha 77: | ||
Legenda para esta seção: | Legenda para esta seção: | ||
f'(x) : derivada primeira da função f(x) | f'(x) : derivada primeira da função f(x), | ||
h = (xb-xa)/N , xa, xb são início e fim do intervalo de | h = (xb-xa)/N , xa, xb são início e fim do intervalo de intregração respectivamente e N é o número de vezes que este intervalo é dividido. | ||
Considere as seguintes funções | Considere as seguintes funções | ||
f(x) = | <math>f(x) = x^2 + 6x</math> | ||
g(x) = 1/(x+3) | <math>g(x) = 1/(x+3) </math> | ||
p(x)= | <math>p(x)=exp(-x)/(x^3-1)</math> | ||
1- Usando o método da derivada à direita, calcule f'(x) nos pontos x=-2 e 2. | 1- Usando o método da derivada à direita, calcule f'(x) nos pontos x=-2 e 2. | ||
Como você sabe se o valor encontrado é correto sem calcular o valor analítico de f'(x) ? | Como você sabe se o valor encontrado é correto sem calcular o valor analítico de f'(x) ? | ||
2- Use o mesmo programa feito em (1) para calcular g'(-10), g'(-2). | 2- Use o mesmo programa feito em (1) para calcular g'(-10), g'(-2). | ||
Faça h variar de h=10^-10 até h=1. | Faça h variar de <math>h=10^{-10}</math> até h=1. | ||
O intervalo de h durante o qual g'(x) é constante é o mesmo para x=-10 e para x=-2? Como você interpreta isto? | O intervalo de h durante o qual g'(x) é constante é o mesmo para x=-10 e para x=-2? Como você interpreta isto? | ||
3- Informação: o erro associado ao método da derivada à direita é linear em h, enquanto o método da derivada centrada tem um erro da ordem de h2. | 3- Informação: o erro associado ao método da derivada à direita é linear em h, enquanto o método da derivada centrada tem um erro da ordem de h2. | ||
3a - O que significa isto? | 3a - O que significa isto? | ||
3b - Mostre analiticamente (dica: se baseia no que está feito na complex-wiki e foi discutido em aula) | 3b - Mostre analiticamente (dica: se baseia no que está feito na complex-wiki e foi discutido em aula) | ||
4 - Use o método da derivada centrada para calcular a derivada da função p(x) nos pontos x: -2, 0.5, 2 e 5. Para cada um destes pontos, faça "h" variar bastante (digamos, entre 10-10 e 1) e compare os resultatos num gráfico feito em gnuplot. Faça um gráfico com as curvas p'(x) em todos os pontos pedidos com seus respectivos valores analíticos comparativos. Note que o intervalo para o qual a derivada numérica converge para o seu valor analítico depende da proximidade do valor de x ao ponto de divergência da função g(x). Por quê? | 4 - Use o método da derivada centrada para calcular a derivada da função p(x) nos pontos x: -2, 0.5, 2 e 5. Para cada um destes pontos, faça "h" variar bastante (digamos, entre 10-10 e 1) e compare os resultatos num gráfico feito em gnuplot. Faça um gráfico com as curvas p'(x) em todos os pontos pedidos com seus respectivos valores analíticos comparativos. Note que o intervalo para o qual a derivada numérica converge para o seu valor analítico depende da proximidade do valor de x ao ponto de divergência da função g(x). Por quê? | ||
Linha 103: | Linha 110: | ||
Compare a precisão do resultado obtido com o programa feito em aula onde aplicamos o método do trapézio. | Compare a precisão do resultado obtido com o programa feito em aula onde aplicamos o método do trapézio. | ||
6 - Aplique o método de Simpson para diversos valores de N. Calcule o erro usando Erro(N) = |Int(N)-Int(N- | |||
6 - Aplique o método de Simpson para diversos valores de N. Calcule o erro usando Erro(N) = |Int(N)-Int(N-2)|/|Int(N)|, onde Int(N) é o valor da integral de g(x) para um dado N. Faça este processo até que o erro atinja um valor mínimo estipulado pelo usuário. | |||
Linha 113: | Linha 121: | ||
2- expanda a expressão f(x) na expressão do trapézio E na expressão do valor exato | 2- expanda a expressão f(x) na expressão do trapézio E na expressão do valor exato | ||
3- compare termo a termo as duas expressões. Você verá que os termos são idênticos até a ordem | 3- compare termo a termo as duas expressões. Você verá que os termos são idênticos até a ordem <math>h^2</math>. A partir de <math>h^3</math> eles têm uma diferença. | ||
PS: O algoritmo de Simpson tem um erro da ordem de | PS: O algoritmo de Simpson tem um erro da ordem de <math>h^5*f(4)</math> . O procedimento para demonstração é o mesmo, mas neste é mais longo. Faça se quiser, mas o importante é que você entenda a idéia. |
Edição atual tal como às 09h16min de 19 de abril de 2016
A) "tecnicalidades"
O que estes programas escrevem na tela?
1)
... j=0; do{ j++; i = 4*j ; printf("i=%d j=%d \n", i, j) ; }while(i<=10) ; printf("\n j=%d \n", j) ; ...
2)
... for(j=0 ; j<3 ; j++) { printf(" j=%d \n\n", j ); for(i=j; i<3 ; i++) { k=i+j ; printf("i=%d k=%d\n", i, k); } } ...
3) Abaixo você encontra partes de programas. Eles contêm erros. Identifique-os e pense no que você faria para resolvê-los.
3.a) Ponto a ser observado: uso de variáreis globais e/ou locais
... float A ; void main() { float B ; operações dentro da função main() ... } float Soma() { return (A+B); } ...
Como você faria para construir uma função que retornasse a soma de dois números reais?
3.b) Ponto a ser observado: alocação estática de memória
... main() { int i; float mat1[ i ] ; for (i=0; i<10; i++) mat1[ i ] = (float)rand()/RAND_MAX ; } ...
B) Derivação e integração numéricas
Legenda para esta seção:
f'(x) : derivada primeira da função f(x), h = (xb-xa)/N , xa, xb são início e fim do intervalo de intregração respectivamente e N é o número de vezes que este intervalo é dividido. Considere as seguintes funções
1- Usando o método da derivada à direita, calcule f'(x) nos pontos x=-2 e 2.
Como você sabe se o valor encontrado é correto sem calcular o valor analítico de f'(x) ?
2- Use o mesmo programa feito em (1) para calcular g'(-10), g'(-2).
Faça h variar de até h=1.
O intervalo de h durante o qual g'(x) é constante é o mesmo para x=-10 e para x=-2? Como você interpreta isto?
3- Informação: o erro associado ao método da derivada à direita é linear em h, enquanto o método da derivada centrada tem um erro da ordem de h2.
3a - O que significa isto?
3b - Mostre analiticamente (dica: se baseia no que está feito na complex-wiki e foi discutido em aula)
4 - Use o método da derivada centrada para calcular a derivada da função p(x) nos pontos x: -2, 0.5, 2 e 5. Para cada um destes pontos, faça "h" variar bastante (digamos, entre 10-10 e 1) e compare os resultatos num gráfico feito em gnuplot. Faça um gráfico com as curvas p'(x) em todos os pontos pedidos com seus respectivos valores analíticos comparativos. Note que o intervalo para o qual a derivada numérica converge para o seu valor analítico depende da proximidade do valor de x ao ponto de divergência da função g(x). Por quê?
5 - Construa um programa usando o método de Simpson para calcular a integral de g(x) entre -10 e -4.
Compare a precisão do resultado obtido com o programa feito em aula onde aplicamos o método do trapézio.
6 - Aplique o método de Simpson para diversos valores de N. Calcule o erro usando Erro(N) = |Int(N)-Int(N-2)|/|Int(N)|, onde Int(N) é o valor da integral de g(x) para um dado N. Faça este processo até que o erro atinja um valor mínimo estipulado pelo usuário.
7 - Mostre analiticamente que o método do trapézio tem um erro da ordem de f(x)*h3.
Dica para fazer esta demonstração:
1- escreva a expressão da regra do trapézio para a f(x) E compare-a com o valor exato de uma integral da f(x)
2- expanda a expressão f(x) na expressão do trapézio E na expressão do valor exato
3- compare termo a termo as duas expressões. Você verá que os termos são idênticos até a ordem . A partir de eles têm uma diferença.
PS: O algoritmo de Simpson tem um erro da ordem de . O procedimento para demonstração é o mesmo, mas neste é mais longo. Faça se quiser, mas o importante é que você entenda a idéia.