Fiche TD avec le logiciel. Calcul symbolique. J.R. Lobry. Comment calculer une dérivée, application aux fonctions de sensibilité

Documents pareils
Régression non linéaire

Initiation à l analyse en composantes principales

Maple: premiers calculs et premières applications

Ajustement au modèle de Lotka-Volterra

Développements limités

Aide - mémoire gnuplot 4.0

Extraction d information des bases de séquences biologiques avec R

Développements limités. Notion de développement limité

Calcul Formel et Numérique, Partie I

Cours d Analyse I et II

Développements limités, équivalents et calculs de limites

Développements limités usuels en 0

Optimisation des fonctions de plusieurs variables

Fonctions de deux variables. Mai 2011

Chapitre VI Fonctions de plusieurs variables

Fonctions de plusieurs variables. Sébastien Tordeux

Introduction à R. Florence Yerly. Dept. de mathématiques, Université de Fribourg (CH) SP 2011

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Densité de population et ingestion de nourriture chez un insecte vecteur de la maladie de Chagas

Cours 7 : Utilisation de modules sous python

MATLAB : COMMANDES DE BASE. Note : lorsqu applicable, l équivalent en langage C est indiqué entre les délimiteurs /* */.

La fonction exponentielle

Calcul Formel et Numérique, Partie I

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Mathématiques I Section Architecture, EPFL

Comparaison de fonctions Développements limités. Chapitre 10

F7n COUP DE BOURSE, NOMBRE DÉRIVÉ

LES GRAPHIQUES SOUS MAPLE

Etude de fonctions: procédure et exemple

Corrigé des TD 1 à 5

Capes Première épreuve

Calcul intégral élémentaire en plusieurs variables

Chapitre 0 Introduction à la cinématique

Fonctions de plusieurs variables et applications pour l ingénieur

Exercice 1 Trouver l équation du plan tangent pour chaque surface ci-dessous, au point (x 0,y 0,z 0 ) donné :

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

MATHS FINANCIERES. Projet OMEGA

TD: Cadran solaire. 1 Position du problème

CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE. EQUATIONS DIFFERENTIELLES.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Continuité et dérivabilité d une fonction

3 Approximation de solutions d équations

Fonctions de plusieurs variables

Les équations différentielles

Initiation à l algorithmique

Cours Fonctions de deux variables

Exo7. Limites de fonctions. 1 Théorie. 2 Calculs

Fiche TD avec le logiciel. Courbes de niveau. D. Chessel

Introduction à la présentation graphique avec xmgrace

Commun à tous les candidats

Chapitre 6. Fonction réelle d une variable réelle

Dérivation : Résumé de cours et méthodes

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Le calcul formel dans l enseignement des mathématiques

Correction de l examen de la première session

Moments des variables aléatoires réelles

DUT Techniques de commercialisation Mathématiques et statistiques appliquées

Coup de Projecteur sur les Réseaux de Neurones

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Notes du cours MTH1101 Calcul I Partie II: fonctions de plusieurs variables

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Chafa Azzedine - Faculté de Physique U.S.T.H.B 1

Premiers pas avec Mathematica

TD1 Signaux, énergie et puissance, signaux aléatoires

EXERCICE 4 (7 points ) (Commun à tous les candidats)

Chapitre 2 Le problème de l unicité des solutions

DURÉE DU JOUR EN FONCTION DE LA DATE ET DE LA LATITUDE

Annexe commune aux séries ES, L et S : boîtes et quantiles

Résolution d équations non linéaires

Dérivation CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES

Lire ; Compter ; Tester... avec R

M2 IAD UE MODE Notes de cours (3)

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

Equations différentielles linéaires à coefficients constants

Les concepts de base, l organisation des données

Une introduction au langage R

Fonctions de plusieurs variables et changements de variables

Python - introduction à la programmation et calcul scientifique

Premier ordre Expression de la fonction de transfert : H(p) = K

Différentiabilité ; Fonctions de plusieurs variables réelles

Calcul Différentiel. I Fonctions différentiables 3

Continuité en un point

Les travaux doivent être remis sous forme papier.

Quelques contrôle de Première S

FONCTIONS DE PLUSIEURS VARIABLES (Outils Mathématiques 4)

Gnuplot. Chapitre Lancer Gnuplot. 3.2 Options des graphes

Fonctions de plusieurs variables, intégrales multiples, et intégrales dépendant d un paramètre

Leçon N 4 : Statistiques à deux variables

Chapitre. Chapitre 12. Fonctions de plusieurs variables. 1. Fonctions à valeurs réelles. 1.1 Définition. 1.2 Calcul de dérivées partielles

Ecran : Processeur : OS : Caméra : Communication : Mémoire : Connectique : Audio : Batterie : Autonomie : Dimensions : Poids : DAS :

Optimiser ses graphiques avec R

Cours3. Applications continues et homéomorphismes. 1 Rappel sur les images réciproques

Chapitre 4: Dérivée d'une fonction et règles de calcul

Limites finies en un point

Utiliser des fonctions complexes

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

F411 - Courbes Paramétrées, Polaires

Licence de Mathématiques 3

Traitement bas-niveau

Équations non linéaires

Transcription:

Fiche TD avec le logiciel : tdr76 Calcul symbolique J.R. Lobry Comment calculer une dérivée, application aux fonctions de sensibilité 1 Introduction Attention, n est pas fait pour faire du calcul formel. Il vaut mieux pour cela utiliser le logiciel libre Maxima (http://maxima.sourceforge.net/) ou un de ses concurrent dans le monde commercial (Mathematica ou Maple). 2 Calcul de dérivées On peut calculer les dérivées d expression du langage, par exemple : D(exp = expression(x^2), name = "x") 2 * x Voyons si connaît les dérivées usuelles : 2.1 (x n ) = nx n 1, n R D(expression(x^n), "x") x^(n - 1) * n 2.2 ( x) = 1 2 x D(expression(sqrt(x)), "x") 0.5 * x^-0.5 1

2.3 ( 1 x ) = 1 x 2 D(expression(1/x), "x") -(1/x^2) 2.4 (e ax ) = ae ax, a 0 D(expression(exp(a * x)), "x") exp(a * x) * a 2.5 (ln(x)) = 1 x D(expression(log(x)), "x") 1/x 2.6 (cos x) = sin x D(expression(cos(x)), "x") -sin(x) 2.7 (sin x) = cos x D(expression(sin(x)), "x") cos(x) 2.8 (tan x) = 1 + tan 2 x = 1 cos 2 x D(expression(tan(x)), "x") 1/cos(x)^2 2.9 (cosh x) = sinh x D(expression(cosh(x)), "x") sinh(x) Logiciel R version 2.6.1 (2007-11-26) tdr76.rnw Page 2/13 Compilé le 2008-02-08

2.10 (sinh x) = cosh x D(expression(sinh(x)), "x") cosh(x) 2.11 (tanh x) = 1 tanh 2 x = 1 cosh 2 x D(expression(tanh(x)), "x") 1/cosh(x)^2 2.12 (arcsin x) = 1 1 x 2 D(expression(asin(x)), "x") 1/sqrt(1 - x^2) 2.13 (arccos x) = 1 1 x 2 D(expression(acos(x)), "x") -(1/sqrt(1 - x^2)) 2.14 (arctan x) = 1 1+x 2 D(expression(atan(x)), "x") 1/(1 + x^2) 2.15 (αf(x) + βg(x)) = αf (x) + βg (x) D(expression(alpha * cos(x) + beta * sin(x)), "x") beta * cos(x) - alpha * sin(x) 2.16 (f(x)g(x)) = f (x)g(x) + f(x)g (x) D(expression(cos(x) * sin(x)), "x") cos(x) * cos(x) - sin(x) * sin(x) Logiciel R version 2.6.1 (2007-11-26) tdr76.rnw Page 3/13 Compilé le 2008-02-08

2.17 ( 1 f(x) ) = f (x) (f(x)) 2 D(expression(1/sin(x)), "x") -(cos(x)/sin(x)^2) 2.18 ( ) f(x) g(x) = f (x)g(x) f(x)g (x) (g(x)) 2 D(expression(cos(x)/sin(x)), "x") -(sin(x)/sin(x) + cos(x) * cos(x)/sin(x)^2) 2.19 ((g f)(x)) = f (x)g (f(x)) D(expression(cos(sin(x))), "x") -(sin(sin(x)) * cos(x)) Donc connaît ses classiques. 2.20 Utiliser une dérivée symbolique La fonction D() renvoie un objet de mode call que l on peut évaluer avec la fonction eval() : dsin <- D(expression(sin(x)), "x") dsin cos(x) mode(dsin) [1] "call" x <- pi eval(dsin) [1] -1 x <- seq(-1, 1, length = 10) eval(dsin) [1] 0.5403023 0.7124746 0.8496076 0.9449569 0.9938335 0.9938335 0.9449569 0.8496076 [9] 0.7124746 0.5403023 On peut transformer cet objet de mode call en une fonction ainsi : fdsin <- function(x) eval(dsin) fdsin(pi) Logiciel R version 2.6.1 (2007-11-26) tdr76.rnw Page 4/13 Compilé le 2008-02-08

[1] -1 fdsin(x) [1] 0.5403023 0.7124746 0.8496076 0.9449569 0.9938335 0.9938335 0.9449569 0.8496076 [9] 0.7124746 0.5403023 Représenter la fonction et sa dérivée : x <- seq(-pi, pi, length = 100) plot(x, sin(x), type = "l", las = 1, main = "La fonction sin(x) et sa dérivée") points(x, fdsin(x), type = "l", col = "red") legend("topleft", inset = 0.01, lty = 1, col = c("black", "red"), legend = c("la fonction", "Sa dérivée")) La fonction sin(x) et sa dérivée 1.0 La fonction Sa dérivée 0.5 sin(x) 0.0 0.5 1.0 3 2 1 0 1 2 3 Représenter les tangentes à la courbe : x n <- 100 x <- seq(-pi, pi, length = n) plot(x, sin(x), type = "l", las = 1, main = "La fonction sin(x)") for (i in 1:n) { abline(a = sin(x[i]) - fdsin(x[i]) * x[i], b = fdsin(x[i]), col = rainbow(n)[i]) points(x, sin(x), type = "l", col = "black") Logiciel R version 2.6.1 (2007-11-26) tdr76.rnw Page 5/13 Compilé le 2008-02-08

La fonction sin(x) 1.0 0.5 sin(x) 0.0 0.5 1.0 3 2 1 0 1 2 3 x 3 Exemple d application au calcul des fonctions de sensibilité 3.1 Une première expérience Soit un modèle exponentiel décroissant : On fait une première expérience : set.seed(1) bruit <- rnorm(21) data <- 30 * exp(-0.1 * (0:20)) + bruit x(t) = x 0 e µt plot(0:20, data, pch = 19, xlab = "temps", ylab = "x(t)", las = 1, ylim = c(0, max(data))) Logiciel R version 2.6.1 (2007-11-26) tdr76.rnw Page 6/13 Compilé le 2008-02-08

30 25 20 x(t) 15 10 5 0 0 5 10 15 20 temps On veut estimer les paramètres x 0 et µ du modèle à partir de ces données. On définit une fonction qui retourne la somme des carrés des écarts : sce <- function(p) { x0 <- p[1] mu <- p[2] sum((data - x0 * exp(-mu * (0:20)))^2) On cherche la valeur des paramètres qui la minimise : nlmfit <- nlm(f = sce, p = c(10, 0.1)) nlmfit $minimum [1] 15.93465 $estimate [1] 29.7606677 0.0963585 $gradient [1] -1.735956e-05 1.287420e-03 $code [1] 2 $iterations [1] 15 plot(0:20, data, pch = 19, xlab = "temps", ylab = "x(t)", las = 1, ylim = c(0, max(data))) tseq <- seq(0, 20, length = 100) points(tseq, nlmfit$estimate[1] * exp(-nlmfit$estimate[2] * tseq), type = "l", col = "red") Logiciel R version 2.6.1 (2007-11-26) tdr76.rnw Page 7/13 Compilé le 2008-02-08

30 25 20 x(t) 15 10 5 0 0 5 10 15 20 temps Une région de confiance pour la valeur des paramètres avec un risque de première espèce α est donnée [1] par l ensemble des valeurs des paramètres telles que la somme des carrés des résidus n excède pas un seuil donné, θ/s(θ) S(ˆθ)(1 + p n p F α p;n p) où p est le nombre de paramètres du modèle, n le nombre de points disponibles dans le jeu de données, et ˆθ le vecteur des valeurs des paramètres tel que le critère soit minimal. scemin <- nlmfit$minimum n <- length(data) p <- 2 alpha = 0.05 seuil <- scemin * (1 + (p * qf(p = 1 - alpha, df1 = p, df2 = n - p))/(n - p)) seuil [1] 21.84203 x0seq <- seq(from = 28, to = 32, length = 50) museq <- seq(from = 0.08, to = 0.11, length = 50) scegrid <- matrix(nrow = length(x0seq), ncol = length(museq)) for (i in 1:length(x0seq)) { for (j in 1:length(museq)) { scegrid[i, j] <- sce(c(x0seq[i], museq[j])) contour(x = x0seq, y = museq, z = scegrid, drawlabels = FALSE, nlevels = 20, col = grey(0.5), xlab = expression(x[0]), ylab = expression(mu), main = "Région de confiance des paramètres") points(nlmfit$estimate[1], nlmfit$estimate[2], pch = 3) contour(x = x0seq, y = museq, z = scegrid, levels = seuil, add = TRUE, col = "blue") Logiciel R version 2.6.1 (2007-11-26) tdr76.rnw Page 8/13 Compilé le 2008-02-08

Région de confiance des paramètres µ 0.080 0.085 0.090 0.095 0.100 0.105 0.110 28 29 30 31 32 x 0 Vue en perspective : persp(x = x0seq, y = museq, z = scegrid, theta = 30, phi = 35, shade = TRUE, border = NA, xlab = expression(x[0]), ylab = expression(mu), zlab = "SCE", main = "Somme des carrés des écarts\nenfonction des paramètres") Somme des carrés des écarts enfonction des paramètres SCE mu x[0] 3.2 Les fonctions de sensibilité Les fonctions de sensibilité sont les dérivées partielles par rapport aux paramètres du modèle : s x0 (t) = ( x0 e µt) x 0 ( x0 e µt) s µ (t) = µ Elles sont particulièrement pénibles à calculer à la main parce que l on ne dérive pas par rapport à la variable habituelle, il est alors extrêmement facile de Logiciel R version 2.6.1 (2007-11-26) tdr76.rnw Page 9/13 Compilé le 2008-02-08

se tromper en appliquant un automatisme inadéquat. Dans ce genre de situation, le recours à un calculateur symbolique est particulièrement intéressant. sx0 <- D(expression(x0 * exp(-mu * t)), "x0") sx0 exp(-mu * t) smu <- D(expression(x0 * exp(-mu * t)), "mu") smu -(x0 * (exp(-mu * t) * t)) On a donc : s x0 (t) = e µt s µ (t) = x 0 te µt Les fonctions de sensibilité expriment l intensité de la variation du modèle à une modification de la valeur des paramètres. Par exemple, s x0 (t) est maximale pour t = 0 et nulle pour t +, ce qui est assez logique pour la condition initiale x 0. Pour bien estimer x 0 on a donc intérêt à bien échantillonner au début de l expérience. Les choses sont plus amusante pour s µ (t). Comment se comporte cette fonction au cours du temps? smup <- D(smu, "t") smup -(x0 * (exp(-mu * t) - exp(-mu * t) * mu * t)) (s µ (t)) = (x 0 (e µt µte µt )) = x 0 e µt (1 µt) On voit ici les limites du calculateur symbolique pour simplifier les expressions. La dérivée première s annule pour t = 1 µ, vérifions que c est un extremum avec la dérivée seconde : smus <- D(smup, "t") smus x0 * (exp(-mu * t) * mu + (exp(-mu * t) * mu - exp(-mu * t) * mu * mu * t)) (s µ (t)) = x 0 (e µt µ + (e µt µ e µt µµt)) = x 0 µe µt (2 µt) On a donc un point d inflexion pour t = 2 µ et le signe de la dérivée seconde est inchangé au passage de t = 1 µ, on a donc bien un extremum. Représentons le modèle et la fonction de sensibilité pour µ : Logiciel R version 2.6.1 (2007-11-26) tdr76.rnw Page 10/13 Compilé le 2008-02-08

par(mar = c(5, 4, 4, 4) + 0.1) plot(0:20, data, pch = 19, xlab = "temps", ylab = "x(t)", las = 1, ylim = c(0, max(data)), main = expression(paste("la fonction de sensibilité pour ", mu))) tseq <- seq(0, 20, length = 100) x0 <- nlmfit$estimate[1] mu <- nlmfit$estimate[2] points(tseq, x0 * exp(-mu * tseq), type = "l") fsmu <- function(t) eval(smu) y <- -fsmu(tseq) yscale <- max(data)/max(y) lines(x = tseq, y = yscale * y, type = "l", col = "blue") axis(side = 4, at = yscale * pretty(y), labels = pretty(y), las = 1, col = "blue", col.axis = "blue") mtext(text = expression(-s[mu](t)), line = 3, side = 4, col = "blue") La fonction de sensibilité pour µ 30 25 100 20 80 x(t) 15 60 s µ (t) 10 40 5 20 0 0 0 5 10 15 20 temps On a donc intérêt d échantillonner au voisinage de t = 10 pour bien estimer le paramètre µ. 3.3 Une deuxième expérience On décide cette fois d échantillonner la où c est intéressant. On garde le même nombre total de points, et le même modèle d erreur. temps <- c(rep(0, 5), qnorm(mean = 10, sd = 4, p = seq(0.1, 0.9, length = 16))) data2 <- 30 * exp(-0.1 * temps) + bruit plot(temps, data2, pch = 19, xlab = "temps", ylab = "x(t)", las = 1, ylim = c(0, max(data)), xlim = c(0, 20)) rug(temps) sce2 <- function(p) { x0 <- p[1] mu <- p[2] sum((data2 - x0 * exp(-mu * temps))^2) nlmfit2 <- nlm(f = sce2, p = c(30, 0.1)) tseq <- seq(0, 20, length = 100) points(tseq, nlmfit2$estimate[1] * exp(-nlmfit2$estimate[2] * tseq), type = "l", col = "red") Logiciel R version 2.6.1 (2007-11-26) tdr76.rnw Page 11/13 Compilé le 2008-02-08

30 25 20 x(t) 15 10 5 0 0 5 10 15 20 temps Représentons la régions de confiance : scemin2 <- nlmfit2$minimum n <- length(data2) p <- 2 alpha = 0.05 seuil2 <- scemin2 * (1 + (p * qf(p = 1 - alpha, df1 = p, df2 = n - p))/(n - p)) seuil2 [1] 22.40981 scegrid2 <- matrix(nrow = length(x0seq), ncol = length(museq)) for (i in 1:length(x0seq)) { for (j in 1:length(museq)) { scegrid2[i, j] <- sce2(c(x0seq[i], museq[j])) contour(x = x0seq, y = museq, z = scegrid2, drawlabels = FALSE, nlevels = 20, col = grey(0.5), xlab = expression(x[0]), ylab = expression(mu), main = "Région de confiance des paramètres") points(nlmfit2$estimate[1], nlmfit2$estimate[2], pch = 3, col = "blue") contour(x = x0seq, y = museq, z = scegrid2, levels = seuil2, add = TRUE, col = "blue") points(nlmfit$estimate[1], nlmfit$estimate[2], pch = 3, col = "red") points(30, 0.1, pch = 3) contour(x = x0seq, y = museq, z = scegrid, levels = seuil, add = TRUE, col = "red") Logiciel R version 2.6.1 (2007-11-26) tdr76.rnw Page 12/13 Compilé le 2008-02-08

Région de confiance des paramètres µ 0.080 0.085 0.090 0.095 0.100 0.105 0.110 28 29 30 31 32 x 0 La nouvelle région de confiance en bleu est plus petite que la précédente en rouge, on a gagné en précision. Les nouvelles valeurs estimées pour les paramètres (croix bleue) sont plus proche des vraies valeurs (croix noire), on a gagné en exactitude. Tout ceci pour un coût expérimental strictement identique. Références [1] E.M.L. Beale. Confidence regions in non-linear estimation. Journal of the Royal Statistical Society, 22B :41 88, 1960. Logiciel R version 2.6.1 (2007-11-26) tdr76.rnw Page 13/13 Compilé le 2008-02-08