Introduction à Scilab
Zéros de fonctions,
équations différentielles, optimisation, hypermatrices

Jean-Philippe Chancelier & Michel de Lara
cermics, École des Ponts ParisTech
(last modification date: October 13, 2016)
Version pdf de ce document
Version sans bandeaux

1 Zéros avec fsolve
2 Intégration d'équations différentielles avec ode
3 Optimisation avec optim
4 Hypermatrices

Contents

1 Zéros avec fsolve
 1.1 Zéros de fonction scalaire
 1.2 Intersection de coniques
2 Intégration d'équations différentielles avec ode
 2.1 Équations différentielles scalaires autonomes
 2.2 Équation différentielle scalaire non autonome
 2.3 Système différentiel
3 Optimisation avec optim
 3.1 Minimum d'une fonction de deux variables, sans contraintes
 3.2 Minimum d'une fonction de deux variables, avec contraintes
4 Hypermatrices

1 Zéros avec fsolve

-->help fsolve

1.1 Zéros de fonction scalaire

1.2 Intersection de coniques

Question 1 Choisir une fonction de ℝ2   dans ℝ2   , la programmer, chercher un zéro, puis représenter ses courbes de niveau.

2 Intégration d'équations différentielles avec ode

dy
---= f (t,y),   y(t0) = y0 ∈ ℝn
dt

-->help ode

2.1 Équations différentielles scalaires autonomes

dy-=  f(y),  y(t0) = y0 ∈ ℝ
dt

Question 2 Que se passe-t-il dans ce dernier cas ? Quel est le rapport avec la solution de l'équation différentielle ddyt = y2   ?

2.2 Équation différentielle scalaire non autonome

dy-=  f(t,y),  y(t ) = y ∈  ℝ
dt                0     0

2.3 Système différentiel

(|  dy1
|{  -dt-  =  f1(t,y1,y2)

||(  dy2-                                          2
    dt   =  f2(t,y1,y2),  (y1(t0),y2(t0)) = y0 ∈ ℝ

Question 3 Programmer le système différentiel

{
  x˙1 =  1x+2x2x1 − Dx1
  x˙2 = − k -x2-x1 − Dx2 +  Dx2in
           1+x2
(1)

Choisir des valeurs positives pour D  et x2in   . Résoudre numériquement et tracer des trajectoires.

3 Optimisation avec optim

-->help optim

3.1 Minimum d'une fonction de deux variables, sans contraintes

mixn,y J (x,y)

Un exemple simple : optimiser  2    2
x  + y   sur   2
ℝ   .

-->function [f,g,ind]=cost(x,ind)  
f=x(1)^2+x(2)^2, g=[2*x(1);2*x(2)]  
endfunction  
// g est le gradient de f  
// ici, ind est un paramètre non utilisé mais qui doit être présent  
-->[f,xopt]=optim(cost,[1;2])  
// le coût est quasi nul

3.2 Minimum d'une fonction de deux variables, avec contraintes

         min          J (x,y)
xmin≤x≤xmax,ymin≤y≤ymax

Le même problème que dans la section précédente mais sous contraintes : x ∈ [2,10]  et y ∈ [− 10,10]  . Noter que le minimum est atteint sur un bord.

-->function [z]=C(x,y) , z=x^2+y^2, endfunction  
-->x=2:10;y=-10:10;  
-->z=feval(x,y,C);  
-->xbasc();  
-->plot3d(x,y,z);  
-->[f,xopt,gopt]=optim(cost,'b',[2;-10],[10;10],[5;5]);  
// f n'est pas nul  
// le gradient en xopt est perpendiculaire au bord

Question 4 Choisir une fonction de  2
ℝ   dans ℝ  qui soit bornée supérieurement, la programmer, chercher un maximum.

4 Hypermatrices

-->A= hypermat([2,2,2,2],rand(16,1));  
-->B = A(1,:,2,:)  
 B  =  
 
(:,:,1,1)  
 
!   0.3076091    0.2146008 !  
(:,:,1,2)  
 
!   0.3321719    0.5015342 !  
 
-->B.entries  
 ans  =  
 
!   0.3076091 !  
!   0.2146008 !  
!   0.3321719 !  
!   0.5015342 !  
 
-->matrix(B.entries,2,2)  
 ans  =  
 
!   0.3076091    0.3321719 !  
!   0.2146008    0.5015342 !