<a href="https://colab.research.google.com/github/HenriqueCCdA/ElementosFinitosCurso/blob/main/notebooks/Quadratura_gauss.ipynb" target="_parent"></a>


```python
import numpy as np
```

Pontos da quadratura gaussiana


```python
# um ponto
kxi1   = np.array([0.0]) 
alpha1 = np.array([2.0])
# 2 pontos
kxi2   = np.array([-0.577350269189626e0, 0.577350269189626e0]) 
alpha2 = np.array([1.0, 1.0])
# 3 pontos
kxi3   = np.array([-0.774596669241483e0, 0.0e0              , 0.774596669241483e0]) 
alpha3 = np.array([ 0.555555555555556e0, 0.888888888888889e0, 0.555555555555556e0])
# 4 pontos
kxi4   = np.array([-0.861136311594053e0, -0.339981043584856e0, 0.339981043584856e0, 0.861136311594053e0]) 
alpha4 = np.array([ 0.347854845137454e0,  0.652145154862546e0, 0.652145154862546e0, 0.347854845137454e0])
# 5 pontos
kxi5   = np.array([-0.906179845938664e0, -0.538469310105683e0, 0.0e0                , 0.538469310105683e0, 0.906179845938664e0]) 
alpha5 = np.array([ 0.236926885056189e0,  0.478628670499366e0, 0.568888888888889e0, 0.478628670499366e0, 0.236926885056189e0])


ksis   = [kxi1, kxi2, kxi3, kxi4, kxi5]
alphas = [alpha1, alpha2, alpha3, alpha4, alpha5]
```

 Função que se quer integrar


```python
def f1(e):
  return e**2 - 64*e + 1

def f2(n, e):
  return (e**2 + 1)*(n+1)
```

Quadratura gaussina para o intervalor [-1, 1]


```python
def quadratura_gauss(func, n_pontos=5):
  '''
  ----------------------------------------------------------------
  Quadratura gaussiana no intervalor [-1, 1]
  ----------------------------------------------------------------
  func     - funcao que se quer calcular a integral
  n_pontos - numero de pontos de gaus
  ----------------------------------------------------------------
  Retorna o valor da integral
  ----------------------------------------------------------------
  '''
  pontos = ksis[n_pontos-1]
  pesos  = alphas[n_pontos-1]

  tmp = 0.0e0

  for i in range(0, n_pontos):
    ksi_i   = pontos[i]
    alpha_i = pesos[i]
    tmp += func(ksi_i) * alpha_i

  return tmp



def quadratura_gauss_dupla(func, n_pontos=5):
  '''
  ----------------------------------------------------------------
  Quadratura gaussiana dupla no intervalor [-1, 1]
  ----------------------------------------------------------------
  func     - funcao que se quer calcular a integral
  n_pontos - numero de pontos de gaus
  ----------------------------------------------------------------
  Retorna o valor da integral
  ----------------------------------------------------------------
  '''
  pontos = ksis[n_pontos-1]
  pesos  = alphas[n_pontos-1]

  tmp = 0.0e0
  for i in range(0, n_pontos):
    ksi_i   = pontos[i]
    alpha_i = pesos[i]
    for j in range(0, n_pontos):
      ksi_j   = pontos[j]
      alpha_j = pesos[j]
      tmp += func(ksi_i, ksi_j)*alpha_i*alpha_j

  return tmp 
```

Integral simples:

\begin{equation}
valor = \int_{-1}^{1} f(\xi) d\xi 
\end{equation}

onde 

\begin{equation}
f(\xi) = \xi^2 - 64\xi + 1
\end{equation}


Calculo da integral para os pontos de 1 a 5


```python
for n in [1,2,3,4,5]:
  valor = quadratura_gauss(f1, n)
  print(f'O valor da integral para {n} de integração é = {valor:.14e}')
```

    O valor da integral para 1 de integração é = 2.00000000000000e+00
    O valor da integral para 2 de integração é = 2.66666666666667e+00
    O valor da integral para 3 de integração é = 2.66666666666667e+00
    O valor da integral para 4 de integração é = 2.66666666666667e+00
    O valor da integral para 5 de integração é = 2.66666666666667e+00


Integral dupla:

\begin{equation}
valor = \int_{-1}^{1} \int_{-1}^{1} f(\eta, \xi) d\eta d\xi
\end{equation}

onde

\begin{equation}
f(\xi, \eta) = (\xi^2 +1)(\eta +1)
\end{equation}


Calculo da integral para os pontos de 1 a 5


```python
for n in [1,2,3,4,5]:
  valor = quadratura_gauss_dupla(f2, n)
  print(f'O valor da integral para {n} de integração é = {valor:.14e}')
```

    O valor da integral para 1 de integração é = 4.00000000000000e+00
    O valor da integral para 2 de integração é = 5.33333333333333e+00
    O valor da integral para 3 de integração é = 5.33333333333334e+00
    O valor da integral para 4 de integração é = 5.33333333333333e+00
    O valor da integral para 5 de integração é = 5.33333333333333e+00


2fec8839d15cca25ac2620dd859d21cd60d6e828
ipynb
Jupyter Notebook
notebooks/Quadratura_gauss.ipynb
HenriqueCCdA/ElementosFinitosCurso
5cd37d3d3d77a5b6234fad5fca871d907558dff4
MIT
2021-09-28T00:31:07.000Z
2021-09-28T00:31:25.000Z
notebooks/Quadratura_gauss.ipynb
HenriqueCCdA/ElementosFinitosCurso
5cd37d3d3d77a5b6234fad5fca871d907558dff4
MIT
notebooks/Quadratura_gauss.ipynb
HenriqueCCdA/ElementosFinitosCurso
5cd37d3d3d77a5b6234fad5fca871d907558dff4
MIT
Qwen/Qwen-72B
1. YES
2. YES