tp Lagrange
This commit is contained in:
parent
93f407f3ee
commit
d30d0f4986
num/tp3
87
num/tp3/README.md
Normal file
87
num/tp3/README.md
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
# TP3 Interpolation polynomiale
|
||||||
|
|
||||||
|
## Lagrange
|
||||||
|
On a vu dans le module d'algèbre linéaire que les polynômes de Lagrange associés à des points d'interpolations $(x_1,x_2,\ldots,x_n)$ s'écrivent
|
||||||
|
\[
|
||||||
|
L_i(x)=\frac{\prod_{j\not=i}(x-x_j)}{\prod_{j\not=i}(x_i-x_j)}
|
||||||
|
\]
|
||||||
|
|
||||||
|
Le polynôme d'interpolation s'écrit
|
||||||
|
\[
|
||||||
|
P_n(x)=\sum_{i=1}^{i=n} f_i.L_i(x)
|
||||||
|
\]
|
||||||
|
|
||||||
|
Ce polynôme prend la valeur $f_i$ au point $x_i$, pour $i = 1,\ldots,n$.
|
||||||
|
|
||||||
|
Scilab permet de construire un polynôme avec la fonction `poly`, soit à partir de ses racines :
|
||||||
|
```
|
||||||
|
--> poly([1,2,3],"x","roots")
|
||||||
|
ans =
|
||||||
|
|
||||||
|
-6 +11x -6x² +x³
|
||||||
|
```
|
||||||
|
soit à partir de ses coefficients :
|
||||||
|
```
|
||||||
|
--> poly([1,2,3],"x","coeff")
|
||||||
|
ans =
|
||||||
|
|
||||||
|
1 +2x +3x²
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour évaluer un polynôme en un point avec scilab, on utilise la fonction `horner`
|
||||||
|
```
|
||||||
|
--> p=poly([1,2,3],"x","coeff")
|
||||||
|
p =
|
||||||
|
|
||||||
|
1 +2x +3x²
|
||||||
|
|
||||||
|
--> horner(p,2)
|
||||||
|
ans =
|
||||||
|
|
||||||
|
17.
|
||||||
|
```
|
||||||
|
|
||||||
|
1. Voici un code qui calcule le polynome d'interpolation pour 5 points (lesquels ?)
|
||||||
|
```
|
||||||
|
n=5
|
||||||
|
x=linspace(-5,5,n)
|
||||||
|
F=[1,3,5,6,7]
|
||||||
|
for i=1:n
|
||||||
|
y=x; y(i)=[]
|
||||||
|
P(i)=poly(y,"x")
|
||||||
|
P(i)=P(i)/horner(P(i),x(i))
|
||||||
|
end
|
||||||
|
Pn=F*P
|
||||||
|
plot2d([-5:0.1:5],horner(Pn,[-5:0.1:5]))
|
||||||
|
plot2d(x,F,-2)
|
||||||
|
```
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<img src="./img/lagrange1.png">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
1. Modifier le code pour interpoler la fonction $f(x)=\frac{1}{1+x^2}$. Faites afficher le polynôme interpolateur et la fonction $f$ pour $n=5,10,15,20$. Que constate-t-on ?
|
||||||
|
2. Faites varier le nombre de points d'interpolation et estimer l'erreur commise
|
||||||
|
\[
|
||||||
|
\lVert P_n - f\rVert_{\infty} = \sup_{x\in [-5,5]} |P_n(x)-f(x)|
|
||||||
|
\]
|
||||||
|
et tracer la en fonction de $n$
|
||||||
|
|
||||||
|
## Approximation avec les polynômes de Bernstein.
|
||||||
|
On cherche à approcher une fonction sur $[0,1]$ par les polynômes de Bernstein :
|
||||||
|
\[
|
||||||
|
B_n(f)(x) = \sum_{k=0}^{k=n} \binom{n}{k}f(\frac{k}{n}) x^k (1-x)^{n-k}
|
||||||
|
\]
|
||||||
|
|
||||||
|
On va utiliser le fait que pour $x$ fixé dans $[0,1]$ les coefficients $\binom{n}{k}x^k(1-x)^{n-k}$ sont les probabilités d'une loi
|
||||||
|
binomiale. utilisera la fonction scilab `binomial`.
|
||||||
|
|
||||||
|
|
||||||
|
On prendra `nr=200` points pour le tracer des courbes. On cherche à approcher la fonction
|
||||||
|
\[
|
||||||
|
g(x)=\frac{\sin 5\pi x}{1+10x^2}
|
||||||
|
\]
|
||||||
|
|
||||||
|
|
||||||
|
1. Tracer sur un même graphique la fonction $g$ et $B_3(f)$
|
||||||
|
2. Tracer sur un même graphique $g$ et $B_n(f)$ pour $n$ `5:20:200`. Que constate-t-on ?
|
BIN
num/tp3/img/lagrange1.png
Normal file
BIN
num/tp3/img/lagrange1.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 28 KiB |
Loading…
x
Reference in New Issue
Block a user