Mudanças entre as edições de "Polinômio de Lagrange"
m (→Definição) |
m (→Polinômio de Lagrange em 2D) |
||
(14 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 15: | Linha 15: | ||
==Polinômio de Lagrange em 2D== | ==Polinômio de Lagrange em 2D== | ||
− | Dado um conjunto de (''m''+1) | + | Dado um conjunto de (''m''+1)(''n''+1) pontos: |
− | :<math>(x_{ij}, y_{ij},z_{ij} | + | :<math>(x_{ij}, y_{ij},z_{ij}), 0 \leq i \leq m, 0 \leq j \leq n</math> |
de tal forma que as coordenadas (''x'',''y'') estejam alinhadas numa malha cartesiana, ou seja, os pontos podem ser definidos como | de tal forma que as coordenadas (''x'',''y'') estejam alinhadas numa malha cartesiana, ou seja, os pontos podem ser definidos como | ||
− | :<math>(x_{i}, y_{j},z_{ij} | + | :<math>(x_{i}, y_{j},z_{ij}), 0 \leq i \leq m, 0 \leq j \leq n</math> |
− | o polinômio de Lagrange em duas dimensões pode ser definido a partir do polinômio unidimensional como | + | o polinômio de Lagrange em duas dimensões pode ser definido a partir do polinômio unidimensional como |
− | :<math>L_{ij}(x,y) := L_i(x,y) | + | :<math>p(x) := \prod_{i=0}^{m}\prod_{j=0}^{n} z_{ij} L_{ij}(x,y) </math> |
+ | onde | ||
+ | :<math>L_{ij}(x,y) := L_i(x) L_j(y)</math> | ||
+ | |||
+ | ==Algoritmo== | ||
+ | Em scilab podemos implementar como: | ||
+ | |||
+ | function y=Lagrange(i,x,X) | ||
+ | y=1; | ||
+ | for j=1:length(X) | ||
+ | if(i ~= j) | ||
+ | y=y.*(x-X(j))/(X(i)-X(j)); | ||
+ | end | ||
+ | end | ||
+ | endfunction | ||
+ | |||
+ | E a versão bidimensional como | ||
+ | function z=Lagrange2d(i,j,x,y,X,Y) | ||
+ | |||
+ | z=Lagrange(i,x,X).*Lagrange(j,y,Y); | ||
+ | |||
+ | endfunction | ||
+ | |||
+ | Modo de uso: Defina os pontos interpolados como os vetores X e Y, por exemplo, | ||
+ | X=[1 2 3]'; | ||
+ | Y=[4 5 6]'; | ||
+ | e calcule ''L''<sub>11</sub>(''x'',''y'') como | ||
+ | Lagrange2d(1,1, 1,4,X,Y) | ||
+ | |||
+ | ans = 1 | ||
+ | |||
+ | Lagrange2d(1,1, 2,5,X,Y) | ||
+ | |||
+ | ans = 0 |
Edição atual tal como às 10h20min de 10 de maio de 2013
Em análise numérica, polinômio de Lagrange é usado para interpolação polinomial.
Definição
Dado um conjunto de k+1 pontos:
- <math>(x_0, y_0),\ldots,(x_k, y_k)</math>
com todos xj distintos, o polinômio de interpolação de um conjunto de pontos na forma de Lagrange é a combinação linear dos polinômios da base de Lagrange:
- <math>p(x) := \sum_{j=0}^{k} y_j L_j(x)</math>
com polinômios da base de Lagrange dados por:
- <math>L_j(x) := \prod_{i=0, j\neq i}^{k} \frac{x-x_i}{x_j-x_i} = \frac{x-x_0}{x_j-x_0} \cdots \frac{x-x_{j-1}}{x_j-x_{j-1}} \frac{x-x_{j+1}}{x_j-x_{j+1}} \cdots \frac{x-x_{k}}{x_j-x_{k}}</math>
Polinômio de Lagrange em 2D
Dado um conjunto de (m+1)(n+1) pontos:
- <math>(x_{ij}, y_{ij},z_{ij}), 0 \leq i \leq m, 0 \leq j \leq n</math>
de tal forma que as coordenadas (x,y) estejam alinhadas numa malha cartesiana, ou seja, os pontos podem ser definidos como
- <math>(x_{i}, y_{j},z_{ij}), 0 \leq i \leq m, 0 \leq j \leq n</math>
o polinômio de Lagrange em duas dimensões pode ser definido a partir do polinômio unidimensional como
- <math>p(x) := \prod_{i=0}^{m}\prod_{j=0}^{n} z_{ij} L_{ij}(x,y) </math>
onde
- <math>L_{ij}(x,y) := L_i(x) L_j(y)</math>
Algoritmo
Em scilab podemos implementar como:
function y=Lagrange(i,x,X) y=1; for j=1:length(X) if(i ~= j) y=y.*(x-X(j))/(X(i)-X(j)); end end endfunction
E a versão bidimensional como
function z=Lagrange2d(i,j,x,y,X,Y) z=Lagrange(i,x,X).*Lagrange(j,y,Y); endfunction
Modo de uso: Defina os pontos interpolados como os vetores X e Y, por exemplo,
X=[1 2 3]'; Y=[4 5 6]';
e calcule L11(x,y) como
Lagrange2d(1,1, 1,4,X,Y) ans = 1
Lagrange2d(1,1, 2,5,X,Y) ans = 0