Determine o sistema não linear que determina os pesos
e os nós
da quadratura de Gauss-Legendre para o caso de três pontos (
2) usando o fato que aproximação da integral deve ser exata para as funções
e
. Resolva este sistema em Python usando o algoritmo implementado para sistemas não lineares.
Passo 1
Olá! Vamos resolver juntos um exercício sobre Quadratura de Gauss-Legendre com três pontos. O objetivo é encontrar os pesos $ c_i $ e os nós $ x_i $ que fazem a aproximação da integral exata para as funções $ f(x) = 1, x, x^2, x^3, x^4 $ e $ x^5 $. Para isso, precisaremos montar um sistema não linear e resolvê-lo usando Python.
Passo 2
Primeiro, vamos entender o que é a Quadratura de Gauss-Legendre. Ela é uma técnica de integração numérica que aproxima integrais definidas, especialmente úteis quando não podemos calcular a integral de forma exata. A ideia é escolher pontos (nós) $ x_i $ e pesos $ c_i $ de forma que a aproximação seja exata para polinômios de grau até $ 2n+1 $, onde $ n $ é o número de pontos.
No nosso caso, com três pontos ($ n = 2
2*2+1 = 5 $), que é exatamente o que o exercício pede.
Passo 3
A fórmula da quadratura de Gauss-Legendre para três pontos é dada por:
Queremos que essa aproximação seja exata para $ f(x) = 1, x, x^2, x^3, x^4, x^5 $. Isso significa que, ao substituir essas funções na expressão acima, as igualdades devem ser verdadeiras.
Passo 4
Vamos montar as equações. Para cada função $ f(x) $, teremos uma equação igualando a integral exata com a aproximação quadrature.
Primeiro, calculamos as integrais exatas:
Agora, para cada $ f(x) = x^k $, temos:
Como temos seis funções, teremos seis equações.
Passo 5
No entanto, sabemos que a quadratura de Gauss-Legendre é simétrica, ou seja, os nós $ x_i $ são simétricos em relação à origem, e os pesos $ c_i $ são iguais para nós opostos. Portanto, podemos simplificar assumindo $ x_1 = -x_3 $ e $ c_1 = c_3 $. Além disso, $ x_2 = 0 $ por simetria.
Assim, nossos nós são $ x_1 = -a $, $ x_2 = 0 $, $ x_3 = a $, e os pesos $ c_1 = c_3 = b $, $ c_2 = c $.
Passo 6
Substituindo essas simetrias nas equações, reduzimos o sistema. Agora, temos três incógnitas: $ a $, $ b $ e $ c $. As equações ficam:
- Para $ k = 0 $:
- Para $ k = 2 $:
- Para $ k = 4 $:
Passo 7
Agora, temos um sistema de três equações:
Podemos resolver esse sistema para encontrar $ a $, $ b $ e $ c $.
Passo 8
Vamos resolver o sistema passo a passo:
- Da segunda equação: $ b a^2 = \frac{1}{3} $, podemos isolar $ b $:
- Da terceira equação: $ b a^4 = \frac{1}{5} $, substituindo $ b $:
- Agora que temos $ a $, substituímos de volta para encontrar $ b $:
- Finalmente, usando a primeira equação para encontrar $ c $:
Passo 9
Agora temos:
Portanto, os nós e pesos são:
Passo 10
Agora, vamos implementar isso em Python para resolver o sistema usando um algoritmo de sistemas não lineares. Utilizaremos a biblioteca
scipy.optimize
que possui funções para resolver esse tipo de problema.Passo 11
Aqui está o código em Python para resolver o sistema:
import numpy as np
from scipy.optimize import fsolve
# Função que representa o sistema de equações
def sistema(variaveis):
a, b, c = variaveis
eq1 = 2*b + c - 2
eq2 = b*a**2 - 1/3
eq3 = b*a**4 - 1/5
return [eq1, eq2, eq3]
# Chute inicial para a, b, c
chute_inicial = [0.5, 0.5, 0.5]
# Resolver o sistema
solucao = fsolve(sistema, chute_inicial)
a_sol, b_sol, c_sol = solucao
# Exibir os resultados
print(f"a = {a_sol}")
print(f"b = {b_sol}")
print(f"c = {c_sol}")
# Calculando os nós
x1 = -a_sol
x2 = 0
x3 = a_sol
print(f"x1 = {x1}")
print(f"x2 = {x2}")
print(f"x3 = {x3}")
Resposta
Após resolver o sistema, encontramos que os nós e pesos para a quadratura de Gauss-Legendre com três pontos são:
Esses valores garantem que a aproximação da integral seja exata para polinômios de grau até cinco, conforme solicitado.