Use o botão abaixo para reportar erros ou dar sugestões.

Computação Científica - Um Livro Colaborativo

3.4 Exercícios


E 3.4.1. Escreva um código com as seguintes funções:

  • Calcula o máximo entre dois inteiros
  • Testa se dois inteiros são iguais e retorna 0 ou 1.
  • Entra dois double e testa se um é o quadrado do outro.
  • Entra um doubler e calcula o comprimento da circunferência de raio r.

E 3.4.2. Escreva uma versão para os códigos dos exercícios 2.6.4, 2.6.5 e 2.6.6 usando a estrutura de função.

E 3.4.3. Escreva uma versão para os códigos dos exercícios 2.6, 2.6.11 usando a estrutura de função.

E 3.4.4. O método de Newton para calcular as raízes de uma função suave f(x) = 0 é dado pela sequência x0 = a, xn = xn−1 − f(xn−1) f′(xn−1),n = 1,2,... ,

desde que a seja escolhido suficientemente próximo da raíz. Implemente uma código da seguinte forma:

  • Com uma função para definir f(x) = e−x2 − x.
  • Com uma função que entre o chute inicial a e a tolerância e retorne a raíz. Coloque uma mensagens de erro no caso de não convergência.

Teste seu programa com várias funções, tais como f(x) = cos(10x) − e−x, f(x) = x4 − 4x2 + 4.

E 3.4.5. Repita o exercício 3.4.4 usando o método das Secantes para calcular as raízes da função suave f(x) = 0. A sequência é x0 = a, x2 = b,b≠a xn+1 = xn − f(xn) xn − xn−1 f(xn) − f(xn−1),n = 1,2,... .

Observe que aqui você precisará de dois chutes iniciais.

E 3.4.6. Implemente um programa que aproxime o valor da integral de f(x) no intervalo [a,b]. Faça da seguinte forma:

  • implemente uma função para definir f(x);
  • implemente o método de Simpson simples dado por ∫ abf(x)dx ≈ b − a 6 f(a) + 4f a + b 2 + f(b)

E 3.4.7. Implemente um código similar ao dado no exemplo 3.2.1 para aproximar ∫ abf(x)dx usando a regra dos trapézios

∫ abf(x)dx ≈ h 2 f(x1) + f(xn+1) + h∑ i=2nf(x i),

onde h = b − a n xi = a + (i − 1)h,i = 1,2,⋯,n + 1.

E 3.4.8. Implemente um código similar ao dado no exemplo 3.2.1 para aproximar ∫ abf(x)dx usando a regra de Boole ∫ abf(x)dx ≈ 2h 45 7f(x1) + 32f(x2) + 12f(x3) + 32f(x4) + 14f(x5) + 32f(x6) + 12f(x7) + 32f(x8) + 14f(x9) + ⋯ + 14f(x4n−3) + 32f(x4n−2) + 12f(x4n−1) + 32f(x4n) + 7f(x4n+1)

onde h = b − a 4n xi = a + (i − 1)h,i = 1,2,⋯,4n + 1.

E 3.4.9. A quadrature de Gauss-Legendre com dois pontos aproxima a integral da seguinte forma ∫ −11f(x)dx = f −3 3 + f 3 3 .

Fazendo a mudança de variável u = 2x−a−b b−a , temos: ∫ abf(x)dx = b − a 2 ∫ −11f b − a 2 u + a + b 2 du ≈ b − a 2 f −b − a 2 3 3 + a + b 2 + b − a 2 f b − a 2 3 3 + a + b 2 .

Implemente um código que calcule uma aproximação da integral de f(x) no intervalo [a,b] usando a quadratura de Gauss-Legendre com dois pontos.

E 3.4.10. Implemente a seguinte regra para aproximar a integral de f(x) no intervalo [a,b]

  • Calcule a integral Gauss-Legendre com dois pontos introduzida no exercício 3.4.9.
  • Divida o intervalo [a,b] em duas partes e use a quadratura do item anterior em cada parte.
  • Compare as integrais dos dois itens anteriores.
  • Divida o intervalo [a,b] em quatro partes e use a mesma quadratura em cada parte.
  • Compare as integrais com duas e quatro divisões.
  • Repita até a convergência com tolerância de 10−8.

E 3.4.11. Implemente o método da bisseção para calcular a raíz de uma função.

O método da bisseção explora o fato de que uma função contínua f : [a,b] → ℝ com f(a) ⋅ f(b) < 0 tem um zero no intervalo (a,b) (veja o teorema de Bolzano). Assim, a ideia para aproximar o zero de uma tal função f(x) é tomar, como primeira aproximação, o ponto médio do intervalo [a,b], isto é:

x(0) = (a + b) 2 .

Pode ocorrer de f(x(0)) = 0 e, neste caso, o zero de f(x) é x∗ = x(0). Caso contrário, se f(a) ⋅ f(x(0)) < 0, então x∗ ∈ (a,x(0)). Neste caso, tomamos como segunda aproximação do zero de f(x) o ponto médio do intervalo [a,x(0)], isto é, x(1) = (a + x(0))∕2. Noutro caso, temos f(x(0)) ⋅ f(b) < 0 e, então, tomamos x(1) = (x(0) + b)∕2. Repetimos este procedimento até alcançar a tolerância

|b(n) − a(n)| 2 < TOL.

Teste usando algumas funções, tais como f(x) = cos(x) − x no intervalo [0,2] ou f(x) = e−x − x no intervalo [0,1].

Creative Commons License Este texto é disponibilizado nos termos da licença Creative Commons Atribuição-CompartilhaIgual 3.0 Não Adaptada (CC-BY-SA 3.0). Página gerada em 19/8/2020 às 17:33:16.

Informe erros ou edite você mesmo!