| | | | |

1.1 Interpolação e Projeção

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

Em revisão

Seja dado um intervalo I=[x0,x1], x0x1. O espaço vetorial das funções lineares em I é definido por

P1(I):={v:v(x)=c0+c1x,xI,c0,c1}. (1.1)

Observamos que dado vP1(I), temos que v é unicamente determinada pelos valores

α0=v(x0), (1.2)
α1=v(x1).

Como consequência, existe exatamente uma única função vP1(I) para quaisquer dados valores α0 e α1. Desta observação, introduzimos a chamada base nodal (base lagrangiana11endnote: 1Consulte mais em Notas de Aula: Matemática Numérica I: Interpolação de Lagrange.) {φ0,φ1} para P1(I), definida por

φj(xi)={1,i=j,0,ij, (1.3)

com i,j=0,1. Consulte a Figura 1.1.

Refer to caption
Figura 1.1: Base nodal para o espaço P1([x0,x1]).

Com esta base, toda função vP1(I) pode ser escrita como uma combinação linear das funções φ0 e φ1 com coeficientes α0 e α1 (graus de liberdade), i.e.

v(x)=α0φ0(x)+α1φ1(x). (1.4)

Além disso, observamos que

φ0(x)=xx1x0x1, (1.5)
φ1(x)=xx0x1x0. (1.6)

Uma extensão do espaço P1(I) é o espaço das funções lineares por partes. Dado I=[l0,l1], l0l1, consideramos uma partição (malha) de I com n+1 pontos

={l0=x0,x1,,xn=l1} (1.7)

e, portanto, com n subintervalos Ii=[xi1,xi] de comprimento (tamanho da malha) hi=xixi1, i=1,2,,n. Na malha definimos o seguinte espaço das funções lineares por partes

Vh:={v:vC0(),v|IiP1(Ii),i=1,2,,n}. (1.8)

Observamos que toda função vVh é unicamente determinada por seus valores nodais {αi=v(xi)}i=0n. Reciprocamente, todo conjunto de valores nodas {αi}i=0n determina unicamente uma função vVh. Desta observação, temos que os valores nodais determinam os graus de liberdade com a base nodal {φj}j=0n para Vh definida por

φj(xi)={1,i=j,0,ij, (1.9)

com i,j=0,1,,n. Ou seja, temos que

v(x)=j=0nαjϕj(x). (1.10)

Podemos verificar que

φi(x)={(xxi1)/hi,xIi,(xi+1x)/hi+1,xIi+1,0,noutros casos (1.11)

consulte, Figura 1.2. É notável que φi(x) tem suporte compacto IiIi+1.

Refer to caption
Figura 1.2: Base nodal para o espaço das funções lineares por parte.

1.1.1 Interpolação

Em revisão

Interpolação é uma técnica de aproximação de funções. Dada uma função contínua f em I=[l0,l1], definimos o operador de interpolação linear π:C0(I)Vh por

πf(x)=j=0nf(xj)φj(x) (1.12)

Observamos que πf é igual a f nos nodos xj, j=0,1,2,,n.

Exemplo 1.1.1.

A Figura 1.3 ilustra a interpolação da função f(x)=3sen(2πx) no espaço de elementos finitos Vh das funções lineares por partes com 5 células.

Refer to caption
Figura 1.3: Interpolação linear de f(x)=3sen(2πx) no espaço de elementos finitos V.
Código 1: mef1d_interp_lin
1from dolfinx import fem, mesh
2import ufl
3import numpy as np
4from mpi4py import MPI
5import matplotlib.pyplot as plt
6
7# malha
8l0 = 0.25
9l1 = 0.75
10domain = mesh.create_interval(MPI.COMM_WORLD,
11                              nx = 5,
12                              points = [l0, l1])
13x = ufl.SpatialCoordinate(domain)
14
15# espaço
16V = fem.FunctionSpace(domain, ('P', 1))
17
18# fun
19def fun(x, mod):
20    return 3.*mod.sin(2.*mod.pi*x)
21
22x = ufl.SpatialCoordinate(domain)
23f_expr = fem.Expression(fun(x[0], ufl),
24                        V.element.interpolation_points())
25
26# interpolação
27pif = fem.Function(V)
28pif.interpolate(f_expr)

Agora, vamos buscar medir o erro de interpolação, i.e. fπf. Para tanto, podemos usar a norma L2 definida por

vL2(I)=(Iv2𝑑x)1/2. (1.13)

Lembramos que valem a desigualdade triangular

v+wL2(I)vL2(I)+wL2(I) (1.14)

e a desigualdade de Cauchy-Schwarz22endnote: 2Também conhecida como desigualdade de Cauchy–Bunyakovsky–Schwarz. Augustin-Louis Cauchy, 1789 - 1857, matemático francês. Viktor Yakovlevich Bunyakovsky, 1804 - 1889, matemático Russo. Karl Hermann Amandus Schwarz, 1843 - 1921, matemático alemão.

Ivw𝑑xvL2(I)wL2(I), (1.15)

para qualquer funções v,wL2(I).

Proposição 1.1.1.

(Erro da interpolação linear) O interpolador πf:C0(I)P1(I) satisfaz as estimativas

fπfL2(I) Ch2f′′L2(I), (1.16)
(fπf)L2(I) Chf′′L2(I), (1.17)

onde C é uma constante e h=x1x0.

Demonstração.

Denotemos o erro de interpolação por e=fπf. Do teorema fundamental do cálculo, temos

e(y)=e(x0)+x0ye(x)𝑑x, (1.18)

onde e(x0)=f(x0)πf(x0)=0. Daí, usando a desigualdade de Cauchy-Schwarz (1.15), temos

e(y) =x0ye𝑑x (1.19)
x0y|e|𝑑x (1.20)
I1|e|𝑑x (1.21)
(I12𝑑x)1/2(Ie2𝑑x)1/2 (1.22)
=h1/2(Ie2𝑑x)1/2, (1.23)

donde

e(y)2hIe2𝑑x=heL2(I)2. (1.24)

Então, integrando em I obtemos

eL2(I)2=Ie2(y)𝑑yIheL2(I)2𝑑y=h2eL2(I)2, (1.25)

ou seja, temos a seguinte desigualdade

eL2(I)heL2(I). (1.26)

Agora, observando que e(x0)=e(x1)=0, o teorema de Rolle33endnote: 3Michel Rolle, 1652 - 1719, matemático francês. garante a existência de um ponto x~I tal que e(x~)=0, donde do teorema fundamental do cálculo e da desigualdade de Cauchy-Schwarz, segue

e(y) =e(x~)+x~ye′′𝑑x (1.27)
=x~ye′′𝑑x (1.28)
I1|e′′|𝑑x (1.29)
h1/2(Ie′′2)1/2. (1.30)

Então, integrando em I, obtemos

eL2(I)2h2e′′L2(I)2, (1.31)

a qual, observando que e′′=f′′, equivale a segunda estimativa procurada, i.e.

(fπf)L2(I)Chf′′L2(I). (1.32)

Por fim, de (1.31) e de (1.26), obtemos a primeira estimativa desejada

fπfL2(I)Ch2f′′L2(I). (1.33)

Vamos, agora, generalizar o resultado da Proposição 1.1.1 para a interpolação no espaço Vh das funções lineares por parte.

O seguinte resultado fornece uma estimativa do erro de interpolação em relação ao tamanho hi de cada elemento da malha.

Proposição 1.1.2.

O interpolador πf satisfaz as estimativas

fπfL2(I)2 Ci=1nhi4f′′L2(I)2, (1.34)
(fπf)L2(I)2 Ci=1nhi2f′′L2(I)2. (1.35)
Demonstração.

Ambas desigualdades seguem da desigualdade triangular e da Proposição 1.1.1. Por exemplo, para a primeira desigualdade, temos

fπfL2(I)2 i=1nfπfL2(Ii)2 (1.37)
i=1nChi4f′′L2(Ii)2. (1.38)

1.1.2 Projeção L2

Em revisão

Dada uma função fL2(I), definimos o operador de projeção L2 Ph:L2(I)Vh por

I(fPhf)v𝑑x=0,vVh. (1.39)

Como Vh é um espaço de dimensão finita, a condição (1.39) é equivalente a

I(fPhf)φi𝑑x=0,i=0,1,,n, (1.40)

onde φi é a i-ésima função base de Vh. Além disso, como PhfVh, temos

Phf=j=0nξjφj, (1.41)

onde ξj, j=0,1,,n, são n+1 incógnitas a determinar. Logo,

I(fPhf)φi𝑑x=0 (1.42)
Ifφi𝑑x=IPhfφi𝑑x (1.43)
Ifφi𝑑x=I(j=0nξjφj)φi𝑑x (1.44)
j=0nξjIφjφi𝑑x=Ifφi𝑑x, (1.45)

para i=0,1,,n.

Observamos que (1.45) consiste em um sistema de n+1 equações lineares para as n+1 incógnitas ξj, j=0,1,,n. Este, por sua vez, pode ser escrito na seguinte forma matricial

Mξ=b, (1.46)

onde M=[mi,j]i,j=0n+1 é chamada de matriz de massa

mi,j=Iφjφi𝑑x (1.47)

e b=(b0,b1,,bn) é chamado de vetor de carregamento

bi=Ifφi𝑑x. (1.48)

Ou seja, a projeção L2 de f no espaço Vh é

Phf=j=0nξjφj, (1.49)

onde ξ=(ξ0,ξ1,,ξn) é solução do sistema (1.46).

Exemplo 1.1.2.

A Figura 1.4 ilustra a projeção L2 da função f(x)=3sen(2πx) no espaço Vh das funções lineares por partes em uma malha uniforme do intervalo I=[1/4,3/4] com n=4 subintervalos (5 células).

Refer to caption
Figura 1.4: Projeção L2 de f(x)=3sen(2πx) no espaço Vh das funções lineares por partes sobre uma malha com 5 células.
Código 2: ex_mef1d_proj.py
1from dolfinx import fem, mesh
2from dolfinx.fem.petsc import LinearProblem
3import ufl
4from mpi4py import MPI
5
6# malha
7l0 = 0.25
8l1 = 0.75
9domain = mesh.create_interval(MPI.COMM_WORLD,
10                              nx=5,
11                              points=[l0, l1])
12x = ufl.SpatialCoordinate(domain)
13
14# espaço
15V = fem.functionspace(domain, ("P", 1))
16
17# fun
18f = 3.*ufl.sin(2.*ufl.pi*x[0])
19
20# project f
21u = ufl.TrialFunction(V)
22v = ufl.TestFunction(V)
23a =  ufl.dot(u, v) * ufl.dx
24L = ufl.dot(f, v) * ufl.dx
25problem = LinearProblem(a, L, bcs=[])
26Phf = problem.solve()

O próximo teorema mostra que Phf é a função que melhor aproxima f dentre todas as funções do espaço Vh.

Teorema 1.1.1.

(A melhor aproximação.) A projeção L2 satisfaz

fPhfL2(I)fvL2(I),vVh. (1.50)
Demonstração.

Dado vVh, temos

fPhfL2(I)2 =I|fPhf|2𝑑x (1.51)
=I(fPhf)(fv+vPhf)𝑑x (1.52)
=I(fPhf)(fv)𝑑x+I(fPhf)(vPhf)𝑑x (1.53)
=I(fPhf)(fv)𝑑x (1.54)
fPhfL2(I)fvL2(I), (1.55)

donde segue o resultado. ∎

O próximo teorema fornece uma estimativa a-priori do erro fPhfL2(I) em relação ao tamanho da malha.

Teorema 1.1.2.

A projeção L2 satisfaz

fPhfL2(I)2Ci=1nhi4f′′L2(Ii)2. (1.56)
Demonstração.

Tomando a interpolação πfVh, temos do Teorema da melhor aproximação (Teorema 1.1.1) e da estimativa do erro de interpolação (Proposição 1.1.2) que

fPhfL2(I)2 fπfL2(I)2 (1.57)
Ci=1nhi4f′′L2(Ii)2. (1.58)

1.1.3 Exercícios

Em revisão

E. 1.1.1.

Faça um código para verificar a segunda estimativa da Proposição 1.1.1 no caso da interpolação da função f(x)=3sen(2πx) no espaço P1 das funções lineares.

Resposta.

badgeConstrucao

E. 1.1.2.

Faça um código para verificar as estimativas da Proposição 1.1.2 no caso da interpolação da função f(x)=3sen(2πx) no espaço Vh das funções lineares por partes.

E. 1.1.3.

Faça um código para computar a projeção L2 Phf da função f(x)=xcos(x) no espaço Vh das funções lineares por partes em uma malha com 10 células no intervalo I=[0,π]. Faça o esboço dos gráficos de f e Phf e compute o erro fPhfL2(I).


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!