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