Viana & Espinar, IMPA 2025

Método de Picard

Implementação computacional do experimento § 2.6 de Viana & Espinar — iteração de Picard, análise de convergência, comparação entre integradores e extensão para sistemas de dimensão 2.

Autor
Victor Gabriel Santos de Moura
Curso
Bacharelado em Matemática — IM/UFAL
Data
  • EDO
  • Análise numérica
  • Python

Implementação completa do experimento § 2.6 de Equações Diferenciais Ordinárias (Viana & Espinar, IMPA 2025), cobrindo a iteração de Picard para aproximação de soluções de EDOs. O projeto inclui análise de convergência numérica, comparativo entre os integradores do trapézio e do retângulo, otimização de complexidade O(NL2)O(NL)\mathcal{O}(NL^2) \to \mathcal{O}(NL) via acumulação incremental e extensão para sistemas de dimensão d=2d = 2.

§ 2.6

Fundamentação teórica

O problema de valor inicial e o operador de Picard

Considera-se o problema de valor inicial

(1)
x=F(t,x),x(t0)=x0,x' = F(t, x), \qquad x(t_0) = x_0,

onde F:URdF : \mathcal{U} \to \mathbb{R}^d é contínua num aberto UR×Rd\mathcal{U} \subset \mathbb{R} \times \mathbb{R}^d e localmente Lipschitziana em xx. A ideia central do método de Picard é reescrever (1) como equação integral e aplicar o Teorema do Ponto Fixo para Contrações.

Dado ε>0\varepsilon > 0, o operador de Picard L:YY\mathcal{L} : Y \to Y age em funções contínuas γ:(t0ε,t0+ε)Rd\gamma : (t_0 - \varepsilon, t_0 + \varepsilon) \to \mathbb{R}^d, com γ(t0)=x0\gamma(t_0) = x_0, por

Operador de Picard(2)
(Lγ)(t)  :=  x0+t0tF(s,γ(s))ds.(\mathcal{L}\gamma)(t) \;:=\; x_0 + \int_{t_0}^{t} F\bigl(s, \gamma(s)\bigr)\, ds.

A sequência de iterados de Picard é definida por γ0x0\gamma_0 \equiv x_0 e γn+1:=Lγn\gamma_{n+1} := \mathcal{L}\gamma_n para n0n \ge 0.

Existência, unicidade e raio garantido

Dado (t0,x0)U(t_0, x_0) \in \mathcal{U}, fixe δ>0\delta > 0 tal que Bδ(t0)×Bδ(x0)U\overline{B}_\delta(t_0) \times \overline{B}_\delta(x_0) \subset \mathcal{U}. Define-se

(3)
M(δ)  :=  sup{F(t,x):tt0δ,  xx0δ}M(\delta) \;:=\; \sup\bigl\{\|F(t,x)\| : |t - t_0| \le \delta,\; \|x - x_0\| \le \delta\bigr\}

e seja C(δ)C(\delta) a constante de Lipschitz de FF em xx sobre essa região. Para todo ε>0\varepsilon > 0 satisfazendo

Raio garantido(4)
ε    ε(δ)  :=  min{δ,  δM(δ)},\varepsilon \;\le\; \varepsilon(\delta) \;:=\; \min\left\{\delta,\; \frac{\delta}{M(\delta)}\right\},

existe solução única x:(t0ε,t0+ε)Rdx : (t_0 - \varepsilon, t_0 + \varepsilon) \to \mathbb{R}^d de (1), e os iterados de Picard convergem uniformemente para ela nesse intervalo (Teorema 2.12 de Viana & Espinar).

Cota do erro

O resultado central para toda a análise numérica é o Corolário 2.14:

Cota do erro(6)
γnx    M(δ)(C(δ)ε)nn!n0.\|\gamma_n - x\|_\infty \;\le\; M(\delta)\, \frac{\bigl(C(\delta)\,\varepsilon\bigr)^n}{n!} \qquad \forall\, n \ge 0.

O fatorial no denominador garante convergência para qualquer valor de CεC\varepsilon — apenas a taxa varia:

  • Se C(δ)ε1C(\delta)\varepsilon \le 1: o fatorial domina a potência desde o primeiro iterado, e a cota decresce monotonamente em nn.
  • Se C(δ)ε>1C(\delta)\varepsilon > 1: o termo (Cε)n/n!(C\varepsilon)^n/n! cresce até atingir um máximo em torno de nC(δ)εn \approx C(\delta)\varepsilon e só então decai via o fatorial. É o que ocorre no Objetivo 4, com εnum=0,99\varepsilon_{\text{num}} = 0{,}99 e Cε3,96C\varepsilon \approx 3{,}96.

A equação (6) conecta os parâmetros ao número mínimo de iterados necessários para atingir uma tolerância τ\tau:

(8)
Nmax(τ)  :=  min{nN:M(δ)(C(δ)ε)nn!<τ}.N_{\max}(\tau) \;:=\; \min\left\{n \in \mathbb{N} : M(\delta)\frac{\bigl(C(\delta)\varepsilon\bigr)^n}{n!} < \tau\right\}.

Parâmetros ótimos para F(t,x)=x2F(t,x) = x^2

Para F(t,x)=x2F(t,x) = x^2 e (t0,x0)=(0,1)(t_0, x_0) = (0, 1), as quantidades de (3) sobre [δ,δ]×[1δ,1+δ][-\delta, \delta] \times [1-\delta, 1+\delta] são

(13)
M(δ)=(1+δ)2,C(δ)=2(1+δ),ε(δ)=δ(1+δ)2,M(\delta) = (1+\delta)^2, \qquad C(\delta) = 2(1+\delta), \qquad \varepsilon(\delta) = \frac{\delta}{(1+\delta)^2},

onde a última igualdade segue de (1+δ)2>1(1+\delta)^2 > 1 para δ>0\delta > 0, que garante que o mínimo em (4) é sempre o segundo argumento. Maximizando ε(δ)\varepsilon(\delta):

(14)
ddδ[δ(1+δ)2]=1δ(1+δ)3=0        δ=1,ε=14=0,25,M=C=4.\frac{d}{d\delta}\left[\frac{\delta}{(1+\delta)^2}\right] = \frac{1-\delta}{(1+\delta)^3} = 0 \;\implies\; \delta^* = 1, \quad \varepsilon^* = \tfrac{1}{4} = 0{,}25, \quad M^* = C^* = 4.

Com C(δ)ε=1C(\delta^*)\varepsilon^* = 1, a cota (6) reduz-se a γnx4/n!\|\gamma_n - x\|_\infty \le 4/n!, que para n=8n = 8 fornece 4/8!9,9×1054/8! \approx 9{,}9 \times 10^{-5}. A convergência observada é tipicamente melhor que esta cota superior, uma vez que (6) usa o supremo sobre toda a bola Bδ(x0)B_{\delta^*}(x_0) e não apenas sobre a trajetória da solução.

Quantidades teóricas para F = x² em função de δ. O valor δ* = 1 é o único máximo de ε(δ) e minimiza N_max.
δM(δ)C(δ)ε(δ)N_max(10⁻⁶)
0,251,56252,50000,16007
0,502,25003,00000,22229
1,004,00004,00000,250011
1,506,25005,00000,240012
2,009,00006,00000,222212
As curvas ε(δ), M(δ) e C(δ). O tracejado vertical marca δ* = 1, único máximo de ε(δ) = δ/(1+δ)², onde ε* = 0,25. Note que M e C crescem sem limite, enquanto ε(δ) tem máximo interior.
Figura 4As curvas ε(δ), M(δ) e C(δ). O tracejado vertical marca δ* = 1, único máximo de ε(δ) = δ/(1+δ)², onde ε* = 0,25. Note que M e C crescem sem limite, enquanto ε(δ) tem máximo interior.

Discretização e erro de quadratura

A curva γn\gamma_n é representada por LL valores em pontos igualmente espaçados

(9)
tk=t0ε+kL12ε,k=0,1,,L1,h:=2εL1.t_k = t_0 - \varepsilon + \frac{k}{L-1}\cdot 2\varepsilon, \quad k = 0, 1, \ldots, L-1, \qquad h := \frac{2\varepsilon}{L-1}.

Para que t0=0t_0 = 0 coincida com um índice da malha, é necessário que LL seja ímpar; nesse caso i0:=L/2i_0 := \lfloor L/2 \rfloor satisfaz ti0=0t_{i_0} = 0.

A integral em (2) é aproximada por duas regras clássicas:

Trapézio — erro global O(h²)(10)
t0tkfdsj=i0+1kfj1+fj2h\int_{t_0}^{t_k} f\, ds \approx \sum_{j=i_0+1}^{k} \frac{f_{j-1}+f_j}{2}\, h
Retângulo — erro global O(h)(11)
t0tkfdsj=i0+1kfj1h\int_{t_0}^{t_k} f\, ds \approx \sum_{j=i_0+1}^{k} f_{j-1}\, h

O erro total do nn-ésimo iterado discreto γnh\gamma_n^h decompõe-se em dois termos com dependências opostas:

Erro total(12)
γnhx    M(δ)(C(δ)ε)nn!erro de convergeˆncia  +  O(ε2Lp)erro de quadratura,\bigl\|\gamma_n^h - x\bigr\|_\infty \;\le\; \underbrace{M(\delta)\frac{\bigl(C(\delta)\varepsilon\bigr)^n}{n!}}_{\text{erro de convergência}} \;+\; \underbrace{\mathcal{O}\bigl(\varepsilon^2 L^{-p}\bigr)}_{\text{erro de quadratura}},

com p=2p = 2 para o trapézio e p=1p = 1 para o retângulo. Aumentar nn reduz o primeiro termo via o fatorial; aumentar LL reduz o segundo como LpL^{-p}. Para nn fixo e suficientemente grande, o retângulo atinge um piso de erro irredutível proporcional a ε2/L\varepsilon^2/L, que não pode ser eliminado aumentando o número de iterados — apenas aumentando LL ou diminuindo ε\varepsilon.

Cinco objetivos progressivos

O experimento

O experimento está organizado em cinco objetivos progressivos, correspondentes às instruções da Seção 2.6:

  1. Escrever o método de Picard em código computacional.
  2. Considerar x=x2x' = x^2 com x(0)=1x(0) = 1, calcular os primeiros iterados num domínio [0,ε][0, \varepsilon] adequado, comparar com a solução exata x(t)=1/(1t)x(t) = 1/(1-t) e estimar o erro do nn-ésimo iterado.
  3. Calcular soluções no domínio (ε,ε)(-\varepsilon, \varepsilon), observando o comportamento das duas regras de quadratura no extremo esquerdo da curva.
  4. Investigar a convergência dos iterados em domínios maiores que (ε,ε)(-\varepsilon, \varepsilon), inclusive em todo o intervalo (,1)(-\infty, 1) de definição da solução.
  5. Repetir os passos anteriores para x=x+2sentx'' = -x + 2\operatorname{sen} t com x(0)=1x(0) = 1, x(0)=0x'(0) = 0, cuja solução exata é x(t)=(1t)cost+sentx(t) = (1-t)\cos t + \operatorname{sen} t. Neste caso o problema tem dimensão d=2d = 2.

Todos os códigos usam Python com NumPy e Matplotlib.

1

Objetivo 1

Implementação básica

O domínio [0,ε][0, \varepsilon^*] com ε=0,25\varepsilon^* = 0{,}25 é escolhido de modo a maximizar o raio garantido para F(t,x)=x2F(t,x) = x^2. Com C(δ)ε=1C(\delta^*)\varepsilon^* = 1, a cota γnx4/n!\|\gamma_n - x\|_\infty \le 4/n! decresce monotonamente desde o primeiro iterado.

Parâmetros do Objetivo 1.
ParâmetroDescriçãoValor
εRaio do domínio [0, ε]0,25
LPontos de discretização500
NIterados de Picard8
x₀Condição inicial1,0
EDO1.py · ε = 0,25 · L = 500 · N = 8⬇ Download
import numpy as np

eps = 0.25;  L = 500;  N = 8;  x0 = 1.0
t = np.linspace(0, eps, L)

def F(t, x):
  return x**2

y = np.zeros((N+1, L))
y[0, :] = x0

for n in range(N):
  for k in range(L):
      integrando = F(t[:k+1], y[n, :k+1])
      y[n+1, k]  = x0 + np.trapezoid(integrando, t[:k+1])

A matriz y[n, k] armazena γn(tk)\gamma_n(t_k). O laço interno discretiza a recorrência do operador (2): para cada tkt_k, integra F(s,γn(s))F(s, \gamma_n(s)) de t0=0t_0 = 0 a tkt_k pela regra do trapézio sobre os k+1k+1 pontos já calculados.

Erro máximo ‖γₙ − x‖∞ no domínio [0, 0,25]. A convergência observada é melhor que a cota, como esperado.
nTrapézioCota 4/n!
03.33e−014.00e+00
18.33e−024.00e+00
21.56e−022.00e+00
32.25e−036.67e−01
52.49e−053.33e−02
77.39e−087.94e−04
86.49e−089.92e−05
Iterados γ₁ a γ₈ e a solução exata x(t) = 1/(1−t), em tracejado vermelho, no domínio [0, 0,25]. A cor indica o índice do iterado. A convergência é rápida porque Cε* = 1.
Figura 1Iterados γ₁ a γ₈ e a solução exata x(t) = 1/(1−t), em tracejado vermelho, no domínio [0, 0,25]. A cor indica o índice do iterado. A convergência é rápida porque Cε* = 1.
2

Objetivo 2

Trapézio contra retângulo

O Objetivo 2 estende a análise para ε=0,5>ε=0,25\varepsilon = 0{,}5 > \varepsilon^* = 0{,}25, saindo da região de garantia do teorema, e introduz a comparação entre os dois integradores.

Embora ε=0,5\varepsilon = 0{,}5 ultrapasse a garantia teórica, a convergência numérica ocorre em todo o intervalo [0,0,5][0,\, 0{,}5]. Isso decorre de um fato estrutural: os iterados de Picard para F(t,x)=x2F(t,x) = x^2 com x(0)=1x(0) = 1 coincidem exatamente com as somas parciais da série geométrica

(15)
x(t)=11t=k=0tk,x(t) = \frac{1}{1-t} = \sum_{k=0}^{\infty} t^k,

cujo raio de convergência é t<1|t| < 1. Portanto, para qualquer ε<1\varepsilon < 1, os iterados convergem para a solução exata, ainda que o teorema só garanta isso para εε=0,25\varepsilon \le \varepsilon^* = 0{,}25. Este é um dos pontos matematicamente mais elegantes do experimento: o método de Picard constrói, iterado a iterado, os coeficientes da expansão em série de Taylor da solução.

Parâmetros do Objetivo 2.
ParâmetroDescriçãoValor
εRaio0,5
LPontos2000
NIterados14
EDO2.py · as duas regras de quadratura⬇ Download
h = t[1] - t[0]

for n in range(N):
  for k in range(L):
      integrando   = F(t[:k+1], y_tp[n, :k+1])
      y_tp[n+1, k] = x0 + np.trapezoid(integrando, t[:k+1])

for n in range(N):
  for k in range(L):
      integrando   = F(t[:k+1], y_rt[n, :k+1])
      y_rt[n+1, k] = x0 + np.sum(integrando[:-1]) * h

Na regra do retângulo, integrando[:-1] seleciona os kk pontos à esquerda de cada subintervalo, implementando (11).

Erro máximo ‖γₙ − x‖∞ em [0, 0,5], com L = 2000 e N = 14. ⌊ marca o piso irredutível do retângulo, proporcional a ε²/L.
nTrapézioRetângulo
01.00e+001.00e+00
22.08e−012.08e−01
54.67e−035.32e−03
82.53e−057.18e−04
118.11e−086.93e−04
141.25e−076.93e−04 ⌊

O trapézio atinge piso numérico da ordem de 10710^{-7}; o retângulo estabiliza em 6,93×104\approx 6{,}93 \times 10^{-4} — um piso que não diminui aumentando NN.

Erro pontual |γ₁₄(t) − x(t)| em escala logarítmica. O trapézio mantém erro sistematicamente menor, consistente com a diferença de ordem entre as duas regras; a curva do retângulo achata no piso irredutível.
Figura 2Erro pontual |γ₁₄(t) − x(t)| em escala logarítmica. O trapézio mantém erro sistematicamente menor, consistente com a diferença de ordem entre as duas regras; a curva do retângulo achata no piso irredutível.
3

Objetivo 3

Domínio simétrico e o piso do retângulo

O Objetivo 3 estende o domínio para (ε,ε)(-\varepsilon, \varepsilon), exigindo integração bidirecional a partir de t0=0t_0 = 0. Essa extensão expõe um problema assimétrico entre os dois integradores: enquanto o trapézio mantém convergência em LL, o retângulo acumula um piso de erro irredutível que não pode ser reduzido aumentando NN.

Parâmetros do Objetivo 3. O valor ímpar de L é exigido para que i₀ = ⌊L/2⌋ = 5000 satisfaça t_{i₀} = 0 exatamente.
ParâmetroDescriçãoValor
εRaio de (−ε, ε)0,85
LPontos (ímpar)10001
NIterados14

Para t<t0=0t < t_0 = 0, a equação integral requer

γn+1(t)=x0t0F(s,γn(s))ds,t<0.\gamma_{n+1}(t) = x_0 - \int_{t}^{0} F\bigl(s, \gamma_n(s)\bigr) ds, \qquad t < 0.
EDO3.py · integração bidirecional⬇ Download
i0 = L // 2      # índice de t = 0

for n in range(N):
  for k in range(L):
      if k > i0:      # t > 0
          intg         = F(t[i0:k+1], y_tp[n, i0:k+1])
          y_tp[n+1, k] = x0 + np.trapezoid(intg, t[i0:k+1])
      elif k < i0:    # t < 0: sinal negativo
          intg         = F(t[k:i0+1], y_tp[n, k:i0+1])
          y_tp[n+1, k] = x0 - np.trapezoid(intg, t[k:i0+1])
      else:
          y_tp[n+1, k] = x0

O erro de quadratura global da regra do retângulo ao integrar sobre [t,0][t, 0] para t<0t < 0 é

erro retaˆngulo=O(h)t=O ⁣(ε2L).\text{erro retângulo} = \mathcal{O}(h)\cdot|t| = \mathcal{O}\!\left(\frac{\varepsilon^2}{L}\right).

Para o trapézio, o erro local por subintervalo é O(h3)\mathcal{O}(h^3), resultando em erro global O(ε3/L2)\mathcal{O}(\varepsilon^3/L^2). O trapézio converge duas ordens a mais em LL, tornando-o sempre preferível do ponto de vista da convergência.

Erro máximo ‖γₙ − x‖∞ em (−0,85, 0,85), com L = 10001 e N = 14.
nTrapézioRetângulo
05.67e+005.67e+00
32.94e+002.94e+00
67.32e−017.39e−01
96.67e−027.97e−02
122.36e−031.66e−02
141.65e−041.44e−02 ⌊

Os decaimentos observados nos gráficos de erro pontual são pontos onde a curva iterada toca ou se aproxima muito da solução exata. A assimetria entre os lados t>0t > 0 e t<0t < 0 deve-se ao acúmulo de erro pelo uso de pontos à esquerda.

Erro pontual |γ₁₄(t) − x(t)| em escala logarítmica no domínio simétrico. Os vales são pontos onde a curva iterada cruza a solução exata. A assimetria entre os lados positivo e negativo de t vem do acúmulo de erro na integração com pontos à esquerda.
Figura 3Erro pontual |γ₁₄(t) − x(t)| em escala logarítmica no domínio simétrico. Os vales são pontos onde a curva iterada cruza a solução exata. A assimetria entre os lados positivo e negativo de t vem do acúmulo de erro na integração com pontos à esquerda.
4

Objetivo 4

Domínios maiores e otimização

O Objetivo 4 concentra as contribuições computacionais e teóricas mais relevantes do trabalho. Do lado algorítmico, a implementação direta de complexidade O(NL2)\mathcal{O}(NL^2) é substituída por uma versão incremental de complexidade O(NL)\mathcal{O}(NL), tornando viável o uso de L=20001L = 20001 pontos.

Parâmetros do Objetivo 4.
ParâmetroDescriçãoValor
εRaio0,99
LPontos (ímpar)20001
NIterados30

Redução de complexidade

Nos Objetivos 1–3, o cálculo de γn+1(tk)\gamma_{n+1}(t_k) aplica a quadratura no subintervalo [ti0,tk][t_{i_0}, t_k], o que exige o recálculo de toda a integral desde o ponto inicial a cada passo, com custo Θ(ki0)\Theta(k - i_0) operações. Somando sobre todos os pontos à direita de i0i_0:

(16)
k=i0L1(ki0)=j=0L1i0j=(L1i0)(Li0)2=O(L2),\sum_{k=i_0}^{L-1} (k - i_0) = \sum_{j=0}^{L-1-i_0} j = \frac{(L-1-i_0)(L-i_0)}{2} = \mathcal{O}(L^2),

e de forma análoga no lado negativo, totalizando O(L2)\mathcal{O}(L^2) por iterado e O(NL2)\mathcal{O}(NL^2) no total. Para N=30N = 30 e L=20001L = 20001, isso representa 3×109\approx 3 \times 10^9 operações.

A redução a O(NL)\mathcal{O}(NL) baseia-se na propriedade de acumulação incremental: a regra do trapézio satisfaz

Acumulação incremental(17)
Ik+=Ik1++fk1+fk2h,k=i0+1,,L1,Ii0+=0,I_k^+ = I_{k-1}^+ + \frac{f_{k-1}+f_k}{2}\, h, \quad k = i_0+1, \ldots, L-1, \quad I_{i_0}^+ = 0,

e a do retângulo, Ik+=Ik1++fk1hI_k^+ = I_{k-1}^+ + f_{k-1}\,h. Cada Ik+I_k^+ custa Θ(1)\Theta(1) operações, reduzindo o custo por iterado a O(L)\mathcal{O}(L).

Comparativo de complexidade para N = 30, L = 20001. A estimativa direta usa N·L²/4 operações; a incremental, N·2L.
VersãoComplexidadeOperaçõesFator
Direta (Obj. 1–3)O(NL²)≈ 3,0 × 10⁹2500×
IncrementalO(NL)≈ 1,2 × 10⁶
EDO4.py · acumulação incremental O(NL)⬇ Download
for n in range(N):
  f_tp = F(t, y_tp[n])        # avalia F uma vez em todos os pontos

  I_tp_pos = np.zeros(L)
  for k in range(i0 + 1, L):          # direcao positiva
      I_tp_pos[k] = I_tp_pos[k-1] + (f_tp[k-1] + f_tp[k]) / 2.0 * h

  I_tp_neg = np.zeros(L)
  for k in range(i0 - 1, -1, -1):     # direcao negativa
      I_tp_neg[k] = I_tp_neg[k+1] + (f_tp[k] + f_tp[k+1]) / 2.0 * h

  y_tp[n+1, i0+1:] = x0 + I_tp_pos[i0+1:]
  y_tp[n+1, :i0]   = x0 - I_tp_neg[:i0]
  y_tp[n+1, i0]    = x0

Iterados necessários por tolerância

O valor Nmax(τ)N_{\max}(\tau) é calculado via a recorrência

M(Cε)nn!=M(Cε)n1(n1)!Cεn,M\,\frac{(C\varepsilon)^n}{n!} = M\,\frac{(C\varepsilon)^{n-1}}{(n-1)!}\cdot\frac{C\varepsilon}{n},

que evita overflow numérico ao não calcular as potências e os fatoriais separadamente.

N_max(τ) para F = x² com δ* = 1 e ε* = 0,25.
Tolerância τN_max
10⁻²6
10⁻⁴8
10⁻⁶11
10⁻⁸12
10⁻¹⁰14
10⁻¹²16
N_max(δ, τ) para seis tolerâncias. As curvas em escada mostram que o número de iterados necessários cresce com δ e, para δ fixo, com a exigência de precisão. O tracejado marca δ* = 1.
Figura 5N_max(δ, τ) para seis tolerâncias. As curvas em escada mostram que o número de iterados necessários cresce com δ e, para δ fixo, com a exigência de precisão. O tracejado marca δ* = 1.

Convergência fora do raio garantido

O código usa εnum=0,99ε=0,25\varepsilon_{\text{num}} = 0{,}99 \gg \varepsilon^* = 0{,}25. O teorema não garante convergência nesse regime; contudo, a série (15) converge para t<1|t| < 1, de modo que os iterados convergem numericamente em t0,99|t| \le 0{,}99. Para t(0,99,1)t \in (0{,}99,\, 1) a solução cresce rapidamente em direção à singularidade em t=1t = 1, e os iterados precisam de NNmax(ε)N \gg N_{\max}(\varepsilon^*) iterações para acompanhá-la — consequência de Cεnum=4×0,993,96>1C\varepsilon_{\text{num}} = 4 \times 0{,}99 \approx 3{,}96 > 1, que faz os primeiros iterados piorarem antes de convergir.

Iterados necessários por tolerância: a cota teórica calculada com ε* contra o que os dois integradores exigem numericamente com ε_num = 0,99. As barras numéricas ficam sistematicamente acima da teórica justamente porque o produto Cε_num ≈ 3,96 excede 1.
Figura 6Iterados necessários por tolerância: a cota teórica calculada com ε* contra o que os dois integradores exigem numericamente com ε_num = 0,99. As barras numéricas ficam sistematicamente acima da teórica justamente porque o produto Cε_num ≈ 3,96 excede 1.
5

Objetivo 5

Sistema bidimensional

A equação x=x+2sentx'' = -x + 2\operatorname{sen} t com x(0)=1x(0) = 1, x(0)=0x'(0) = 0 é reescrita como sistema de primeira ordem:

(19)
(x1x2)=(x2x1+2sent),x(0)=(10).\begin{pmatrix} x_1' \\ x_2' \end{pmatrix} = \begin{pmatrix} x_2 \\ -x_1 + 2\operatorname{sen} t \end{pmatrix}, \qquad \mathbf{x}(0) = \begin{pmatrix} 1 \\ 0 \end{pmatrix}.

A solução exata é

(20)
x1(t)=(1t)cost+sent,x2(t)=(1t)sent.x_1(t) = (1-t)\cos t + \operatorname{sen} t, \qquad x_2(t) = -(1-t)\operatorname{sen} t.

Ao contrário do Objetivo 4, x\mathbf{x} é uma função inteira em R\mathbb{R} (sem singularidade real), implicando que os iterados convergem em qualquer domínio compacto.

Parâmetros do Objetivo 5.
ParâmetroDescriçãoValor
εRaio0,9468
LPontos (ímpar)30001
NIterados14
x₀Condição inicial(1, 0)ᵀ

Adaptações para d = 2

A adaptação é mínima estruturalmente: o vetor de iterados passa a ter forma (N+1,L,2)(N+1, L, 2), os acumuladores I+I^+ e II^- têm forma (L,2)(L, 2), e a recorrência (17) é aplicada elemento a elemento pelo NumPy sem alteração de código.

Diferenças de estrutura entre EDO4 e EDO5.
ObjetoEDO4 (d = 1)EDO5 (d = 2)Descrição
y_tp(N+1, L)(N+1, L, 2)Iterados
I_tp_pos(L,)(L, 2)Acumulação positiva
x01.0array([1., 0.])Condição inicial
EDO5.py · d = 2⬇ Download
def F(t, x):                # x tem estrutura (L, 2)
  dx1 = x[:, 1]
  dx2 = -x[:, 0] + 2.0 * np.sin(t)
  return np.column_stack([dx1, dx2])

y_tp = np.zeros((N+1, L, 2))
y_tp[0, :, :] = x0      # x0 = array([1., 0.])

I_tp_pos = np.zeros((L, 2))
for k in range(i0 + 1, L):
  I_tp_pos[k] = I_tp_pos[k-1] + (f_tp[k-1] + f_tp[k]) / 2.0 * h

Constante de Lipschitz exata

Para F(t,x)=(x2,  x1+2sent)F(t, \mathbf{x}) = (x_2,\; -x_1 + 2\operatorname{sen} t):

(21)
F(t,x)F(t,y)=(x2y2(x1y1)),F(t,x)F(t,y)=xy.F(t,\mathbf{x}) - F(t,\mathbf{y}) = \begin{pmatrix} x_2 - y_2 \\ -(x_1 - y_1) \end{pmatrix}, \qquad \|F(t,\mathbf{x}) - F(t,\mathbf{y})\| = \|\mathbf{x} - \mathbf{y}\|.

Portanto C(δ)=1C(\delta) = 1 para todo δ>0\delta > 0. O campo FF é afim em x\mathbf{x} com parte linear AxA\mathbf{x}, onde

A=(0110)A = \begin{pmatrix} 0 & 1 \\ -1 & 0 \end{pmatrix}

é uma rotação e, portanto, uma isometria — sua norma espectral é A2=1\|A\|_2 = 1. Já

(22)
M(δ)=δ2+(δ1+2senδ)2,M(\delta) = \sqrt{\delta^2 + (\delta - 1 + 2\operatorname{sen}\delta)^2},

com M(δ)1M(\delta) \to 1 quando δ0+\delta \to 0^+.

Erro máximo ‖γₙ − x‖∞ para o sistema bidimensional, método do trapézio.
nTrapézio
01.58e+00
21.98e−01
48.14e−03
61.65e−04
81.99e−06
101.49e−08
129.98e−10
149.09e−10
As duas componentes do sistema pelo método do trapézio: x₁ em linha sólida e x₂ pontilhada, contra as soluções exatas em tracejado vermelho. Os iterados são indistinguíveis da solução na escala do gráfico.
Figura 7As duas componentes do sistema pelo método do trapézio: x₁ em linha sólida e x₂ pontilhada, contra as soluções exatas em tracejado vermelho. Os iterados são indistinguíveis da solução na escala do gráfico.
Convergência dos iterados para ε_num = 0,9468: trapézio, retângulo e a cota analítica M(δ*)(ε*)ⁿ/n!. O retângulo achata no piso irredutível por volta de 10⁻⁴, enquanto o trapézio desce quatro ordens além.
Figura 8Convergência dos iterados para ε_num = 0,9468: trapézio, retângulo e a cota analítica M(δ*)(ε*)ⁿ/n!. O retângulo achata no piso irredutível por volta de 10⁻⁴, enquanto o trapézio desce quatro ordens além.
N_max(τ) comparativo entre os dois problemas, com δ* e ε* de cada um.
Tolerância τEDO4 (F = x²)EDO5 (2D)
10⁻²66
10⁻⁴88
10⁻⁶1110
10⁻⁸1212
10⁻¹⁰1414
10⁻¹²1616

Com C(δ)=1C(\delta) = 1 e ε=1\varepsilon = 1, o produto Cε=1C\varepsilon = 1, e a cota (6) reduz-se a M(δ)/n!M(\delta^*)/n!, que decresce monotonamente desde o primeiro iterado — sem o período inicial de piora observado no Objetivo 4. O sistema bidimensional é, portanto, intrinsecamente mais favorável ao método de Picard.

Síntese

Conclusões

O desempenho do método de Picard depende diretamente da estrutura algébrica do campo FF. A constante de Lipschitz C(δ)C(\delta) determina tanto o tamanho do domínio acessível quanto a velocidade de convergência, via a cota M(δ)(C(δ)ε)n/n!M(\delta)(C(\delta)\varepsilon)^n/n!. Quanto mais próximo de linear for FF em xx, mais favorável é o método.

1. O trapézio é sempre preferível ao retângulo

O trapézio tem ordem O(h2)\mathcal{O}(h^2) frente ao O(h)\mathcal{O}(h) do retângulo, resultando num piso de erro irredutível mais baixo que não pode ser eliminado aumentando NN. No Objetivo 2, o piso do retângulo estabiliza em 6,93×104\approx 6{,}93 \times 10^{-4} enquanto o trapézio atinge 107\sim 10^{-7} — quatro ordens de diferença para os mesmos parâmetros.

2. Convergência além do raio teórico para F = x²

O teorema garante convergência apenas para εε=0,25\varepsilon \le \varepsilon^* = 0{,}25, mas os iterados convergem numericamente em todo t<1|t| < 1, porque coincidem com as somas parciais da série geométrica tk\sum t^k. Para t>1|t| > 1 a divergência é verificável executando o código do Objetivo 4 com ε>1\varepsilon > 1.

3. Otimização computacional — fator 2500×

A substituição da integração direta pela acumulação incremental reduz a complexidade de O(NL2)\mathcal{O}(NL^2) para O(NL)\mathcal{O}(NL), tornando viável trabalhar com L=20001L = 20001 pontos. Para N=30N = 30: de 3×109\approx 3 \times 10^9 para 1,2×106\approx 1{,}2 \times 10^6 operações.

4. O sistema 2D é intrinsecamente mais favorável

Com C(δ)=1C(\delta) = 1 constante — reflexo de a parte linear ser uma isometria — o produto Cε=1C\varepsilon = 1 garante que a cota decai monotonamente desde o primeiro iterado, sem o período de piora inicial do Objetivo 4, onde Cε3,96C\varepsilon \approx 3{,}96. Além disso, a solução é inteira em R\mathbb{R}: não há limitação de domínio análoga ao teto t<1|t| < 1.

5. Equilíbrio entre N e L

Os dois termos do erro total têm dependências opostas: aumentar NN reduz o erro de convergência exponencialmente via o fatorial; aumentar LL reduz o erro de quadratura como LpL^{-p}. O valor LL mínimo efetivo para equilíbrio, dado NN fixo, satisfaz

ε2LpM(δ)(Cε)NN!.\varepsilon^2 L^{-p} \sim M(\delta^*)\, \frac{\bigl(C\varepsilon^*\bigr)^N}{N!}.

Na prática, para N=14N = 14 e trapézio, L2000L \sim 2000 já equilibra os dois termos.

Comparativo final

Impacto de C(δ) na estruturação do método de Picard.
AspectoF = x²Sistema 2D
C(δ)2(1+δ), cresce1, constante
Cε_num≈ 3,96 > 1= 1
CotaCresce antes de cairDecresce desde n = 0
Singularidadet = 1 (real)Inteira em ℝ
DomínioLimitado a |t| < 1Qualquer compacto

Em geral, problemas cujo campo FF admite uma decomposição F(t,x)=Ax+G(t)F(t,\mathbf{x}) = A\mathbf{x} + G(t) com A2\|A\|_2 pequena e GG uniformemente limitada são intrinsecamente mais favoráveis ao método: a cota decai mais rapidamente e domínios maiores são acessíveis sem aumentar NN. Há, ainda assim, uma limitação numérica ao aumentar o domínio em ambos os casos, pelo acúmulo de erro do método numérico — erro que pode ser controlado com a otimização dos parâmetros.

Sumário dos cinco objetivos

Evolução dos algoritmos ao longo dos cinco objetivos.
ArquivoDomíniodComplexidade
EDO1.py[0, 0,25]1O(NL²)
EDO2.py[0, 0,5]1O(NL²)
EDO3.py(−0,85, 0,85)1O(NL²)
EDO4.py(−0,99, 0,99)1O(NL)
EDO5.py(−1, 1)2O(NL)

Referência

M. Viana e J. Espinar, Equações Diferenciais Ordinárias, IMPA, Rio de Janeiro, 2025.