{VERSION 2 3 "IBM INTEL NT" "2.3" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "" -1 256 "" 1 8 0 0 0 0 0 0 0 0 0 0 0 0 0 } {CSTYLE "" -1 257 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 " " 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 256 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 } 3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 257 1 {CSTYLE "" -1 -1 " " 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 11 258 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 11 259 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } } {SECT 0 {EXCHG {PARA 256 "" 0 "" {TEXT -1 10 "IMAFA-ESSI" }}{PARA 256 "" 0 "" {TEXT -1 52 "Processus Stochastiques Finis de la Finance - TD \+ n\2601" }}{PARA 257 "" 0 "" {TEXT 256 30 "(c)1997 M. Diener - UNSA, CN RS" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 8 "Bonj our!" }}{PARA 0 "" 0 "" {TEXT -1 162 "Vous \352tes en communication av ec Maple (version V.4). Maple est un calculateur docile, rapide, exact (autant de qualit\351s que l'auteur de ces lignes n'a jamais eu)." }} {PARA 0 "" 0 "" {TEXT -1 253 "Maple est programm\351 pour apprendre bi en des choses; mais attention, d\350s que vous lui avez appris quelque chose, il ne l'oubliera pas (durant toute la session, c'est-\340-dire \+ tant que vous n'avez pas cliqu\351 sur les commandes de menu File-Exi t, ou Ctrl-F4)." }}{PARA 0 "" 0 "" {TEXT -1 224 "Voici comment nous al lons apprendre a Maple que le prix d'exercice K d'une option Europ\351 ene sur un actif S est egal \340 160: [d\351placez votre curseur sur l a ligne suivante, et validez, en appuyant sur la touche \"return\" (<- -')]" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "K:=160;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 656 "Observez que Maple a accus\351 reception en retournant le message que maintenant K vaut (:=) 160 pour lui. Si \+ vous n'avez jamais utilis\351 Maple, il est important de prendre consc ience du point-virgule qui suivait l'instruction d'affectation; c'est \+ \340 la fois un message informant que l'instruction est achev\351e, et un \"format d'affichage\"; tant que ce (;) n'est pas venu -un (:) pou rrait aussi convenir- Maple attend patiemment la suite... . Essayez en commen\347ant \340 lui expliquer que la valeur actuelle S0 de l'actif vaut 140 [d\351placez votre curseur sur la ligne suivante, et valide z. Ne tapez le (;) lib\351rateur qu'apr\350s avoir observ\351 la non r \351action de Maple!]" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "S0: =140" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 195 "Passons aux choses s\351 rieuses. Nous voulons apprendre \340 Maple que l'\351volution de l'act if d'un jour sur l'autre ne peut que se faire par multiplication d'une quantit\351 up ou d'une quantit\351 down ;" }}{PARA 0 "" 0 "" {TEXT -1 86 "que n compte les jours, et que j compte le nombre de \+ up . Voici ce que cela donne:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "S:= proc(n,j);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "if n=0 then S0 " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "elif j=0 then evalf(S(n- 1,0)*down)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "else evalf(S(n-1,j-1) *up) fi" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end;" }}}{EXCHG {PARA 258 "" 1 "" {TEXT -1 23 "Observons cet exemple: " }}{PARA 0 "" 0 "" {TEXT -1 72 "Une fonction s'appelle une proc\351dure; elle se d\351cl are selon une syntaxe" }}{PARA 0 "" 0 "" {TEXT -1 42 " proc (variabl es) expression-Maple end;" }}{PARA 0 "" 0 "" {TEXT -1 77 "Pour en sav oir plus, tapez (ou validez ci-dessous) la commande d'aide ?proc;" }} {PARA 0 "" 0 "" {TEXT -1 49 "Notez aussi la structure \340 alternative s multiples" }}{PARA 0 "" 0 "" {TEXT -1 46 " if then [ [elif \+ then ] then ] fi" }}{PARA 0 "" 0 "" {TEXT -1 316 "Il y a aussi une myst\351rieuse fonction evalf : elle provoque, quand cela est posibl e, une \351valuation en virgule flottante; en effet, Maple -comme un \+ bon calculateur- ne passe en calcul approch\351 que lorsque cela lui e st demand\351; pour ce que nous avons en vue aujourd'hui, un calcul ap proch\351 sera souvent plus utile !" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "?proc;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "?i f;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 6 "?evalf" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 41 "Ceci dit, voyons ce que vaut S(8,3) ... " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "S(8,3);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 162 "H\351 oui, il nous faut \340 pr\351sent \+ choisir des valeurs pour up et down; [validez les lignes ci-dessous, en vous rem\351morant le mod\350le binaire de Cox-Ross-Rubinstein]" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "d:=100;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "delta_t:=evalf(1.0/d);" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 37 "sigma:=0.4;R:=ln(1+.1247); mu:=R*1.3;" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "up:=1+sigma*sqrt(delta_t)+mu *delta_t;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "down:=1-sigma* sqrt(delta_t)+mu*delta_t;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 11 "R \351essayons:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 7 "S(8,3);" }} }{EXCHG {PARA 0 "" 0 "" {TEXT -1 54 "Repr\351sentons une \351volution \+ possible de S pour t=0..1 :" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "pileouface:=rand(0..1):" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 31 "jj:= proc (i) options remember;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 42 "if i=0 then 0 else jj(i-1)+pileouface() fi" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 90 "Ce que no us pouvons \340 pr\351sent repr\351senter. Chargeons tout d'abord la l ibrairie plottools:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "wit h(plottools):" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 92 "puis fabriquons \+ une suite (seq) de segments (line) joignant les points [i,s(i)] [i+1,s (i+1)]" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "marche:=" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 66 "seq(line([i,S(i,jj(i))],[i+1,S(i+1,jj(i+1 ))],color=red),i=0..d-1);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 15 "Et d essinons..." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "plots[displa y](marche);" }}}{EXCHG {PARA 259 "" 1 "" {TEXT 257 103 "Probl\350me: d essiner l'arbre binaire complet (c'est-\340-dire toutes les trajectoir es possibles), avec d=6" }{TEXT -1 1 "." }}}{EXCHG {PARA 0 "> " 0 " " {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 72 "Pour finir, reflechissons un peu \340 la nature r\351curs ive de la fonction S." }}{PARA 0 "" 0 "" {TEXT -1 89 "Pour cela examin ons plus simplement la fonction n!:=n*(n-1)! Appelons-la fact(n); ain si:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "fact:= proc (n);" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "if n=0 then 1 else n*fact(n-1) fi" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "fact(1000);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 277 " H\351 oui! le nombre de niveau de r\351cursions est fortement limit \351 (je souhaiterais d'ailleurs savoir si ce nombre est redefinissabl e; il semble qu'il d\351pende notament de l'implentation utilis\351e. \+ Si vous n'avez rencontr\351 aucun probl\350me avec fact(1000), r\351es sayez avec fact(10000))." }}{PARA 0 "" 0 "" {TEXT -1 202 "Il y a une m ani\350re de largement soulager la t\342che d'une fonction recursive: \+ c'est de lui adjoindre une table des valeurs qu'elle a d\351j\340 calc ul\351 ant\351rieurement. Ceci se fait au moyen de options remember" }}{PARA 0 "" 0 "" {TEXT -1 247 "plac\351 imm\351diatement apr\350s la \+ liste des variables, comme cela a \351t\351 fait dans la d\351finition de la fonction s(i) plus haut. Le moment est d'ailleurs sans doute v enu, si ce n'est d\351j\340 fait, d'analyser la mani\350re dont cette \+ fonction a \351t\351 programm\351e." }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "factrem:= proc (n) options remember;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "if n=0 then 1 else n*factrem(n-1) fi" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "factrem(500);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "fa ctrem(1000);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "?remember" } }}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "?seq" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 0 "" }}}}{MARK "36 0 0" 271 }{VIEWOPTS 1 1 0 1 1 1803 }