| | | | |

3.5 Quadratura Gauss-Legendre

Ajude a manter o site livre, gratuito e sem propagandas. Colabore!

Quadraturas gaussianas são quadraturas numéricas de máximo grau de exatidão. Especificamente, quadraturas de Gauss-Legendre são quadraturas gaussianas para integrais da forma

I=11f(x)𝑑x. (3.89)

Vamos começar considerando o problema de determinar a quadratura de Gauss-Legendre de apenas um ponto, i.e.

S=f(x1)ω1. (3.90)

Começamos por exigir a integração exata de polinômios de o grau 0, o que nos leva a

ω1x10=11x0𝑑x (3.91a)
ω1=x|11=2. (3.91b)

Agora, exigindo a integração exata de polinômios de grau 1, obtemos

ω1x11=11x1𝑑x (3.92a)
2x1=x22|11=0 (3.92b)
x1=0. (3.92c)

Com isso, concluímos que a quadratura de um nodo de maior grau de exatidão para tais integrais é a de nodo x1=0 e peso ω1=2. Observamos que esta é a regra do ponto médio para o intervalo de integração [1,1].

Seguindo esse raciocínio, ao buscarmos por uma quadratura de n pontos com maior grau de exatidão possível para integrais no intervalo [1,1], acabamos tendo que resolver um sistema de equações

i=1nxikωi=11xk𝑑x, (3.93)

para k=0,1,2,,2n1. I.e., no que temos 2n incógnitas (n nodos e n pesos) a determinar, podemos exigir o grau de exatidão máximo de 2n1.

O sistema (3.93) é um sistema não linear para os nodos e a determinação de soluções para n grande não é uma tarefa trivial. Alternativamente, veremos que os nodos da quadratura de Gauss-Legendre de n nodos são as raízes do polinômio de Legendre de grau n. Por definição, o polinômio de Legendre de grau n, denotado por Pn(x), satisfaz a seguinte propriedade de ortogonalidade

11p(x)Pn(x)𝑑x=0, (3.94)

para todo polinômio p(x) de grau menor que n. Com isso, estabelecemos o seguinte resultado.

Teorema 3.5.1.

A quadratura de Gauss-Legendre de n nodos tem as raízes do polinômio de Legendre de grau n como seus nodos e seus pesos são dados por

ωi=11jij=1nxxjxixjdx. (3.95)
Demonstração.

Sejam x1,x2,,xn as raízes do polinômio de Legendre de grau n. Queremos mostrar que

11p(x)𝑑x=i=1np(xi)ωi, (3.96)

para todo polinômio p(x) de grau menor ou igual 2n1. Primeiramente, suponhamos que p(x) seja um polinômio de grau menor que n. Então, tomando sua representação por polinômio de Lagrange nos nodos xi, i=1,2,,n, temos

11p(x)𝑑x =11i=1np(xi)jij=1nxxjxixjdx (3.97)
=i=1np(xi)11jij=1nxxjxixjdx (3.98)
=i=1np(xi)ωi. (3.99)

Isto mostra o resultado para polinômios p(x) de grau menor que n. Agora, suponhamos que p(x) é um polinômio de grau maior ou igual que n e menor ou igual a 2n1. Dividindo p(x) pelo polinômio de Legendre de grau n, Pn(x), obtemos

p(x)=q(x)Pn(x)+r(x), (3.100)

onde q(x) e r(x) são polinômio de grau menor que n. Ainda, nas raízes x1,x2,,xn temos p(xi)=r(xi) e da ortogonalidade dos polinômios de Legendre (veja, equação (3.94)), temos

11p(x)𝑑x =11q(x)Pn(x)+r(x)dx (3.101)
=11r(x)𝑑x. (3.102)

Agora, do resultado anterior aplicado a r(x), temos

11p(x)𝑑x=i=1nr(xi)ωi=i=1np(xi)ωi. (3.103)

Isto complete o resultado para polinômios de grau menor ou igual a 2n1. ∎

Exemplo 3.5.1.

(Gauss-Legendre de 2 pontos.) Considaremos a quadratura de Gauss-Legendre de 2 nodos. Do Teorema 3.5.1, seus nodos são as raízes do polinômio de Legendre de grau 2

P2(x)=32x212, (3.104)

as quais são

x1=33, (3.105a)
x2=33. (3.105b)

Os pesos são, então

ω1 =11xx1x2x1𝑑x (3.106a)
=32[x22+33x]11 (3.106b)
=1 (3.106c)

e

ω2 =11xx2x1x2𝑑x (3.107a)
=32[x2233x]11 (3.107b)
=1 (3.107c)

Ou seja, a quadratura de Gauss-Legendre de 2 pontos tem o seguinte conjunto de nodos e pesos {(x1=3/3,ω1=1),(x2=3/3,ω2=1)}. Esta, por sua vez, é exata para polinômios de grau menor ou igual a 3. De fato, verificando para potência de xk temos:

  • k=0:

    11x0𝑑x=2 (3.108a)
    x10ω1+x20ω2=(33)0+(33)0=2. (3.108b)
  • k=1:

    11x1𝑑x=0 (3.109a)
    x11ω1+x21ω2=(33)1+(33)1=0. (3.109b)
  • k=2:

    11x2𝑑x=23 (3.110a)
    x12ω1+x22ω2=(33)2+(33)2=23. (3.110b)
  • k=3:

    11x3𝑑x=0 (3.111a)
    x13ω1+x23ω2=(33)3+(33)3=0. (3.111b)
  • k=4:

    11x4𝑑x=25 (3.112a)
    x14ω1+x24ω2=(33)4+(33)4=29. (3.112b)
Tabela 3.5: Conjunto de nodos e pesos da quadratura de Gauss-Legendre. Fonte: Wikipedia:Gauss-Legendre Quadrature.
n xi ωi
1 0 2
2 ±33 1
3 0 89
±35 59
4 ±372765 18+3036
±37+2765 183036
5 0 128225
±1352107 322+1370900
±135+2107 3221370900
Exemplo 3.5.2.

Considere o problema de obter uma aproximação para I=11cos(x)𝑑x usando a quadratura de Gauss-Legendre. Calculemos algumas aproximações com n=1, 2 e 3 pontos:

  • n=1:

    11cos(x)𝑑x 2cos0 (3.113a)
    =2. (3.113b)
  • n=2:

    11xex2𝑑x cos(3/3)+cos(3/3) (3.114a)
    =1,67582. (3.114b)
  • n=3:

    11xex2𝑑x 89cos0+59cos(3/5)
    +59cos(3/5)=1,68300. (3.115a)

Na Tabela 3.6, temos as aproximações de I com a quadratura de Gauss-Legendre de n=1, 2, 3, 4 e 5 pontos (detonado por I~, bem como, o erro absoluto com respeito ao valor analítico da integral.

Tabela 3.6: Resultados referentes ao Exemplo 3.5.2.
n I~ |II~|
1 2.00000 3.2e01
2 1.67582 7.1e03
3 1.68300 6.2e05
4 1.68294 2.8e07
5 1.68294 7.9e10
1import numpy as np
2from numpy.polynomial.legendre import leggauss
3
4# integrando
5f = lambda x: np.cos(x)
6# quadratura
7n = 4
8x,w = leggauss(n)
9# aproximação
10S = np.sum(f(x)*w)
11print(f'{n}: S = {S:.5e}')

3.5.1 Intervalos de integração arbitrários

A quadratura de Gauss-Legendre é desenvolvida para aproximar integrais definidas no intervalo [1,1]. Por sorte, uma integral definida em um intervalo arbitrário [a,b] pode ser reescrita como uma integral no intervalo [1,1] através de uma mudança de variável apropriada.

Assumindo a mudança de variável

x=ba2(u+1)+a (3.116)

temos

dx=ba2du (3.117)

e, portanto,

abf(x)𝑑x=11f(ba2(u+1)+a)ba2𝑑u. (3.118)

Portanto, para computarmos abf(x)𝑑x podemos aplicar a quadratura de Gauss-Legendre na integral definida no [1,1] dada conforme acima.

Exemplo 3.5.3.

Usemos a quadratura de Gauss-Legendre com 2 pontos para aproximar a integral

01xex2𝑑x. (3.119)

Fazendo a mudança de variável x=u/2+1/2, temos

01xex2𝑑x=11(u2+12)e(u2+12)2𝑑u. (3.120)

Então, aplicando a quadratura temos

01xex2𝑑x =(36+12)e(36+12)2
+(36+12)e(36+12)2 (3.121a)
=3,12754e1. (3.121b)
1import numpy as np
2from numpy.polynomial.legendre import leggauss
3
4# integral
5a = 0
6b = 1
7f = lambda x: x*np.exp(-x**2)
8# quadratura
9n = 2
10x,w = leggauss(n)
11# mud de var
12x = (b-a)/2*(x+1)+a
13w = (b-a)/2*w
14# aproximação
15S = np.sum(f(x)*w)
16print(f'{n}: S = {S:.5e}')

3.5.2 Exercícios

E. 3.5.1.

Aproxime

11sen(x+2)ex2x2+ln(x+2)𝑑x (3.122)

usando a quadratura de Gauss-Legendre com:

  1. a)

    n=1 ponto.

  2. b)

    n=2 pontos.

  3. c)

    n=3 pontos.

  4. d)

    n=4 pontos.

  5. e)

    n=5 pontos.

Resposta.

a) 2.61712e1; b) 2.55351e1; c) 8.97510e2; d) 1.27411e1; e) 1.21016e1.

E. 3.5.2.

Aproxime

01sen(x+2)ex2x2+ln(x+2)𝑑x (3.123)

usando a quadratura de Gauss-Legendre com:

  1. a)

    n=1 ponto.

  2. b)

    n=2 pontos.

  3. c)

    n=3 pontos.

  4. d)

    n=4 pontos.

  5. e)

    n=5 pontos.

Resposta.

a) 1.54617e1; b) 1.50216e1; c) 1.47026e1; d) 1.47190e1; e) 1.47193e1.

E. 3.5.3.

Aproxime

11sen(x+2)ex2x2+ln(x+2)𝑑x (3.124)

usando a quadratura de Gauss-Legendre com:

  1. a)

    n=5 ponto.

  2. b)

    n=10 pontos.

  3. c)

    n=20 pontos.

Resposta.

a) 1.21016e1; b) 1.21744e1; c) 1.21744e1

E. 3.5.4.

Use uma quadratura de Gauss-Legendre para computar a integral

I=12xsen(x3)𝑑x (3.125)

com 6 dígitos significativos corretos.

Resposta.

5.93738e1


Envie seu comentário

As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a Política de Uso de Dados para mais informações. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!