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

Computação Científica - Um Livro Colaborativo

6.7 Exercícios


E 6.7.1. Refaça os exercícios 4.4.6, 4.4.7 e 4.4.8 usando troca de ponteiros na parte iterativa.

E 6.7.2. Implemente uma função que entra um vetor com N posições e devolve o máximo e o mínimo valor.

E 6.7.3. Use a estrutura trabalhada no exemplo 6.2.2 para refazer os exercícios 3.4.4 e 3.4.5

E 6.7.4. A eliminação gaussiana (ou escalonamento), é um método para resolver sistemas lineares que consiste em manipular o sistema através de determinadas operações elementares, transformando-o em um sistema triangular. A solução pode ser obtida via substituição regressiva.

1.
multiplicação de um linha por uma constante não nula.
2.
substituição de uma linha por ela mesma somada a um múltiplo de outra linha.
3.
permutação de duas linhas.
  • Implemente um programa que resolve sistema lineares por eliminação gaussiana.
  • Implemente um programa que resolve sistema lineares por eliminação gaussiana com pivotamento parcial. A eliminação gaussiana com pivotamento parcial consiste em fazer uma permutação de linhas para escolher o maior pivô (em módulo) a cada passo.

Para ajudar o programador, segue um sistema linear 3x3 retirado do livro colaborativo www.ufrgs.br/numerico x + y + z = 1 2x + y − z = 0 2x + 2y + z = 1

A solução via eliminação gaussiana com pivotamento parcial segue os seguintes passos: 1 1 1 1 2 1 −1 0 2 2 1 1 ∼ 2 1 −1 0 1 1 1 1 2 2 1 1 ∼ 2 1 −1 0 0 1∕2 3∕2 1 0 1 2 1 ∼ 2 1 −1 0 0 1 2 1 0 1∕2 3∕2 1 ∼ 2 1 −1 0 0 1 2 1 0 0 1∕2 1∕2

Por substituição regressiva, temos 1∕2z = 1∕2, ou seja, z = 1. Substituímos na segunda equação e temos y + 2z = 1, ou seja, y = −1 e, finalmente 2x + y − z = 0, resultando em x = 1.

E 6.7.5. As aproximações de segunda ordem para a derivada primeira são obtidas pelas seguintes fórmulas

  • Progressiva: f′(x 0) ≈ 1 2h −3f(x0) + 4f(x0 + h) − f(x0 + 2h)
  • Central: f′(x 0) ≈ 1 2h f(x0 + h) − f(x0 − h)
  • Regressiva: f′(x 0) ≈ 1 2h f(x0 − 2h) − 4f(x0 − h) + 3f(x0)

Refaça o exemplo 6.3.2 usando diferenças de segunda ordem para todas as derivadas e o algorítmo de eliminação Gaussiana para resolver o sistema linear.

E 6.7.6. Encontre uma aproximação numérica para o seguinte problema não-linear de três equações e três incógnitas: 2x1 − x2 = cos(x1) −x1 + 2x2 − x3 = cos(x2) −x2 + x3 = cos(x3)

Partindo das seguintes aproximações iniciais:

  • x(0) = [1,1,1]T
  • x(0) = [−0,5, − 2, − 3]T
  • x(0) = [−2, − 3, − 4]T
  • x(0) = [0,0,0]T

E 6.7.7. Considere o seguinte sistema de equações não-lineares: x1 − x2 = 0 −xj−1 + 5(xj + xj3) − x j+1 = 10 exp(−j∕3),2 ≤ j ≤ 10 x11 = 1 (6.1)

Implemente um código para encontrar a única solução deste problema pelo método de Newton.

E 6.7.8. Resolva numericamente o problema de valor de contorno para a equação de calor no estado estacionário com um termo não linear de radiação − uxx = 100 − u4 10000,0 < x < 2. u(0) = 0 u(2) = 10

usando o método de diferenças finitas.

E 6.7.9. Resolva numericamente o problema de valor de contorno para a equação de calor no estado estacionário com um termo não linear de radiação e um termo de convecção: − uxx + 3ux = 100 − u4 10000,0 < x < 2. u′(0) = 0 u(2) = 10

usando o método de diferenças finitas.

E 6.7.10. Resolva numericamente o problema de valor de contorno − u″ + 2u′ = e−x − u2 100,1 < x < 4. u′(1) + u(1) = 2 u′(4) = −1

usando o método de diferenças finitas.

E 6.7.11. Implemente o cálculo da fatorial de n de várias formas:

1.
Entre com n no scanf e use um for.
2.
Entre com n na linha de comando
3.
Construa uma função recursiva n! = n(n − 1)! (não use for).

E 6.7.12. Repita o exercício anterior para xn, n ≥ 0.

E 6.7.13. O método de Runge-Kutta quarta ordem clássico para resolver o PVI u′ = f(t,u) u(0) = u0

é dado pela recursão k1 = hf t(n),u(n) k2 = hf t(n) + h∕2,u(n) + k 1∕2 k3 = hf t(n) + h∕2,u(n) + k 2∕2 k4 = hf t(n) + h,u(n) + k 3 u(n+1) = u(n) + k1 + 2k2 + 2k3 + k4 6

Implemente um código em C com a algorítmo acima para resolva o sistema para o oscilador não linear de Van der Pol dado por

u″(t) − α(A − u(t)2)u′(t) + w 02u(t) = 0 (6.2)

onde A, α e w0 são constantes positivas. Encontre a frequência e a amplitude de oscilações quando w0 = 1, α = .1 e A = 10 (teste diversas condições iniciais).

Observação:

  • Embora o oscilador seja de segunda ordem, você pode fazer uma mudança de variável e escrevê-lo com um sistema de primeira ordem.
  • Entre com os parâmetros tempo final e o número de intervalos na linha de comando.

E 6.7.14. Resolva o modelo simplificado de FitzHugh-Nagumo para o potencial elétrico sobre a membrana de um neurônio: dV dt = V − V 3∕3 − W + I dW dt = 0,08(V + 0,7 − 0,8W)

onde I é a corrente de excitação.

  • Encontre o único estado estacionário V 0,W0 com I = 0.
  • Resolva numericamente o sistema com condições iniciais dadas por V 0,W0 e I = e−t∕200.

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!