tp2
This commit is contained in:
+1
-1
@@ -1,4 +1,4 @@
|
||||
# Fonctions et dérivées numériques
|
||||
# TP1 : Fonctions et dérivées numériques
|
||||
|
||||
> Lisez et testez les exemples du [guide pour débutant](../../scilab/Scilab_debutant_annot.pdf) de scilab
|
||||
|
||||
|
||||
@@ -0,0 +1,142 @@
|
||||
# TP1 Calcul approché, résolution d'équation $f(x)=0$
|
||||
On s'interesse à la résolution numérique d'une équation $f(x)=0$, où de manière équivalente à
|
||||
$g(x)=x$ avec $g(x)=f(x)+x$.
|
||||
|
||||
## Méthode du point fixe
|
||||
On cherche à résoudre l'équation
|
||||
\[
|
||||
x - \cos x = 0, \,\, x\in [0,1]
|
||||
\]
|
||||
|
||||
Sous certaines hypothèses (cf TD), la suite définie par
|
||||
\[
|
||||
\left\{\begin{array}{l}
|
||||
x_0\in I \\
|
||||
x_{n+1} = g(x_n)
|
||||
\end{array}\right.
|
||||
\]
|
||||
converge vers un point fixe de $g$. Ici, $g(x) = \cos x\,\, , \,x\in [0,1]$.
|
||||
|
||||
1. Récupérez le fichier [pointFixe.sci](src/pointFixe.sci) définissant la fonction
|
||||
```
|
||||
function y = pointFixe(x0,n)
|
||||
y = x0;
|
||||
for i = 1:n
|
||||
y = ...
|
||||
end
|
||||
endfunction
|
||||
```
|
||||
|
||||
Cette fonction prend en entrée `x0` une valeur initiale de la suite et `n` le nombre d'itérations.
|
||||
La fonction doit retourner `y` valant $x_n$.
|
||||
|
||||
Complétez le fichier, chargez la fonction, et vérifiez pour différentes valeurs
|
||||
initiales de $[0,1]$ que la suite converge vers le même $l = \cos l$. Que vaut $l$ ? Normalement,
|
||||
$l \approx 0.739085133215161$.
|
||||
|
||||
2. Récupérez le fichier [pointFixeErreur.sci](src/pointFixeErreur.sci) définissant la fonction
|
||||
|
||||
```
|
||||
function err = pointFixeErreur(x0)
|
||||
for i=1:50
|
||||
y = pointFixe(x0,i)
|
||||
err(i) = ...
|
||||
end
|
||||
endfunction
|
||||
```
|
||||
Cette fonction prend en entrée `x0` une valeur initiale de la suite. Complétez la fonction pour que `err(i)` vale
|
||||
$|e_i|$ l'erreur commise à l'étape $i$, en valeur absolue.
|
||||
|
||||
3. Tracez l'évolution de l'erreur :
|
||||
```
|
||||
erreur = pointFixeErreur(0.1)
|
||||
plot2d(erreur)
|
||||
```
|
||||
|
||||
3. Récupérez le fichier [pointFixeVitesseConvergence.sci](src/pointFixeVitesseConvergence.sci) qui définit la fonction
|
||||
```
|
||||
function ratio = pointFixeVitesseConvergence(x0)
|
||||
err = pointFixeErreur(x0);
|
||||
ratio = // TODO
|
||||
endfunction
|
||||
```
|
||||
|
||||
Cette fonction prend en entrée `x0` une valeur initiale de la suite. Complétez le fichier pour que `ratio(i)` vale
|
||||
$\frac{|e_{i+1}|}{|e_i|}$.
|
||||
|
||||
|
||||
Chargez la fonction, et tracez le résultat. Vérifie-t'on que la méthode est d'ordre 1 ?
|
||||
|
||||
|
||||
## Dichotomie
|
||||
### Principe de la méthode
|
||||
On se donne une fonction continue $f$ sur l'intervalle $[a,b]$ sur lequel $f$
|
||||
ne s'annule qu'une fois en changeant de signe.
|
||||
|
||||
Pour trouver la solution, on divise l'intervalle $[a,b]$ en deux avec son milieu
|
||||
\[
|
||||
m=\frac{a+b}{2}
|
||||
\]
|
||||
|
||||
Si $f(a)$ et $f(m)$ sont de même signe, la solution cherchée se trouve dans $[m,b]$, sinon
|
||||
elle se trouve dans $[a,m]$.
|
||||
|
||||
On itére alors la recherche dans le nouvel intervalle jusqu'à ce que sa longueur soit inférieur à une précision $\epsilon$ voulue.
|
||||
|
||||
<div align="center">
|
||||
<img src="./img/Dichotomie.png">
|
||||
</div>
|
||||
|
||||
1. Écrire une fonction
|
||||
```
|
||||
function x = dichotomie(f,a,b,eps)
|
||||
// f <-> fonction
|
||||
// a,b <-> [a,b] intervalle de départ
|
||||
// eps <-> valeur pour le test d'arret
|
||||
// x <-> valeur approché de f(x)=0
|
||||
```
|
||||
2. Tester avec
|
||||
- la fonction de l'exercice précédent,
|
||||
- $f(x)=x^2-2$ sur l'intervalle $[1,2]$. Comparer numériquement la solution approchée avec
|
||||
la solution exacte, en faisant varier $\epsilon$.
|
||||
- $g(x)=cos(x)-x^2$ sur l'intervalle $[0,1]$
|
||||
3. Modifier la fonction pour qu'elle renvoié le nombre d'itérations nécessaires. Tester avec
|
||||
\[
|
||||
x-\sin x - \frac{1}{4} = 0, \;\;x\in[\frac{1}{4},\frac{5}{4}]
|
||||
\]
|
||||
|
||||
Aide Scilab
|
||||
[function](https://help.scilab.org/docs/6.1.1/fr_FR/functions.html)
|
||||
[if](https://help.scilab.org/docs/6.1.1/fr_FR/if.html)
|
||||
[while](https://help.scilab.org/docs/6.1.1/fr_FR/while.html)
|
||||
[for](https://help.scilab.org/docs/6.1.1/fr_FR/for.html)
|
||||
|
||||
|
||||
## Méthode de la fausse position
|
||||
### Principe de la méthode
|
||||
On prend les même hypothèses que pour la dichotomie. La méthode consiste alors à diminuer l'intervalle
|
||||
de recherche en considérant le point $c$ intersection de la corde aux extrémités de l'intervalle avec
|
||||
l'axe des abscisses.
|
||||
|
||||
<div align="center">
|
||||
<img src="./img/Regula_falsi_method.png">
|
||||
</div>
|
||||
|
||||
1. Calculer $c$ en fonction de $f(a),f(b),a,b$
|
||||
2. Écrire une fonction
|
||||
```
|
||||
--> function [x,n]=fausse_position(f,a,b,eps)
|
||||
// f <-> fonction
|
||||
// a,b <-> [a,b] intervalle de départ
|
||||
// eps <-> valeur pour le test d'arret
|
||||
// x <-> valeur approché de f(x)=0
|
||||
// n <-> nombre d'itérations
|
||||
```
|
||||
4. Tester avec
|
||||
\[
|
||||
x-\sin x - \frac{1}{4} = 0, \;\;x\in[\frac{1}{4},\frac{5}{4}]
|
||||
\]
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 45 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1,6 @@
|
||||
function y = pointFixe(x0,n)
|
||||
y = x0;
|
||||
for i = 1:n
|
||||
y = // A completer
|
||||
end
|
||||
endfunction
|
||||
@@ -0,0 +1,6 @@
|
||||
function err = pointFixeErreur(x0)
|
||||
for i=1:50
|
||||
y = pointFixe(x0,i)
|
||||
err(i) = // A completer
|
||||
end
|
||||
endfunction
|
||||
@@ -0,0 +1,4 @@
|
||||
function ratio = pointFixeVitesseConvergence(x0)
|
||||
err = pointFixeErreur(x0);
|
||||
ratio = // TODO
|
||||
endfunction
|
||||
Reference in New Issue
Block a user