Área 2: mudanças entre as edições

De Física Computacional
Ir para navegação Ir para pesquisar
(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
Linha 2: Linha 2:
--------------------------
--------------------------


O que este programa escreve na tela?
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 88: Linha 90:
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 h=10^-10 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 102: Linha 109:
5 - Construa um programa usando o método de Simpson para calcular a integral de g(x) entre -10 e -4.
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.
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-1)|/|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.
6 - Aplique o método de Simpson para diversos valores de N. Calcule o erro usando Erro(N) = |Int(N)-Int(N-1)|/|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 114: Linha 122:


3- compare termo a termo as duas expressões. Você verá que os termos são idênticos até a ordem h2. A partir de h3 eles têm uma diferença.
3- compare termo a termo as duas expressões. Você verá que os termos são idênticos até a ordem h2. A partir de h3 eles têm uma diferença.


PS: O algoritmo de Simpson tem um erro da ordem de h5*f(4). O procedimento para demonstração é o mesmo, mas neste é mais longo. Faça se quiser, mas o importante é que você entenda a idéia.
PS: O algoritmo de Simpson tem um erro da ordem de h5*f(4). 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 das 14h26min de 29 de novembro de 2011

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 intregação respectivamente e N é o número de vezes que este intervalo é dividido. Considere as seguintes funções

f(x) = x2 + 6x

g(x) = 1/(x+3)

p(x)=ex/(x3-1)


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 h=10^-10 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-1)|/|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 h2. A partir de h3 eles têm uma diferença.


PS: O algoritmo de Simpson tem um erro da ordem de h5*f(4). O procedimento para demonstração é o mesmo, mas neste é mais longo. Faça se quiser, mas o importante é que você entenda a idéia.