θ(i,ξ,X) = prod([
- X[j])/(X[i+1] - X[j])
(ξ in setdiff(1:length(X),i+1)
for j ] )
θ (generic function with 1 method)
Métodos Numéricos Avanzados. 2023-2024
Hasta ahora, hemos trabajado con simplexes (segmentos, triángulos, …) y con funciones lineales en cada simplex.
La malla podría no de simplexes. Por ejemplo, en dimensión 2, podría ser de cuadrados.
Pero si \(K\) es un cuadrado de vértices \(\mathbf x_i\), no podemos encontrar una función lineal tal que \(\varphi(\mathbf x_j) = \delta_{1j}\).
Pero podemos encontrar \(\varphi\) polinomios de orden superior.
Vamos a tomar un elemento “normalizado”, y a utilizarlo para construir las funciones de base. Digamos que la malla \(\mathcal T\) se compone de subconjunto \(K_i \in \mathbb T\), todos ellos transformaciones de uno de conjunto de referencia \(K_a\) (si hay varios \(K_a\) se habla de mallas mixtas).
La idea es construir un conjunto de polinomios \(P\) definidos \(K_a\), que se pueda “pegar” para construir una base \[ V_h = \{ v \in V : v|_{K_i} \circ \mathbf x_{K_i} \in P \} \] donde \(\mathbf x_{K_i} : K_a \to K_i\).
En [Ciarlet, 2002] se hace estudia la noción rigurosa de “elemento”, y los elementos válidos y no válidos.
En esta sección buscamos discretizar \[ V_h = \{ v \in H^1(\Omega) : v|_{K_i} \circ \mathbf x_{K_i} \in P \} \]
donde \(P\) son polinomios de grado \(p\).
Dado que en el interior de cada \(K_i\) tenemos polinomios, basta pegar de manera continua en las aristas.
Tomamos un elemento de referencia \(K_a = (-1,1)\). Vamos a construir polinomios de orden \(p\) que se anulen en ciertos puntos \[ X_0 = -1, \qquad X_1 = 1, \qquad X_{j} = -1 + \frac{2(j-1)}{p} \text{para} j = 2, \cdots, p \]
Así \[ \theta_i (\xi) = \frac{ \xi - X_1 }{X_i - X_1} \frac{ \xi - X_2 }{X_i - X_2} \cdots \frac{\xi - X_{i-1}} {X_i - X_{i-1}} \frac{\xi - X_{i+1}} {X_i - X_{i+1}} \cdots \frac{\xi - X_{p+1}} {X_i - X_{p+1}} \]
θ(i,ξ,X) = prod([
- X[j])/(X[i+1] - X[j])
(ξ in setdiff(1:length(X),i+1)
for j ] )
θ (generic function with 1 method)
= 2
p = [-1; 1; [-1 + 2*j/p for j=1:p-1]]
X
using Plots, LaTeXStrings
plot(xlabel=L"\xi")
for i=0:p
plot!(ξ -> θ(i,ξ,X), label="i=$i", xlim=(-1,1))
end
scatter!(X, zeros(size(X)), label="")
= 3
p = [-1; 1; [-1 + 2*j/p for j=1:p-1]]
X
plot(xlabel=L"\xi")
for i=0:p
plot!(ξ->θ(i,ξ,X), label="i=$i", xlim=(-1,1))
end
scatter!(X, zeros(size(X)), label="")