On trace les coniques en dessinant les deux contours de niveau 0 de conique1 et
conique2
-->help fcontour2d
-->x=-2:10;
-->y=-10:10;
-->xbasc();
-->fcontour2d(x,y,conique1,[0,0],style=[9,9])
// on trace conique1(x,y)=0
// on est obligé de poser [0,0], et non pas 0 qui pourrait être confondu
// avec l'entier désignant le nombre de courbes de niveau à tracer
-->fcontour2d(x,y,conique2,[0,0],style=[12,12],strf="000")
// on superpose le deuxième contour
Recherche d'un point d'intersection
-->function [Y]=coniques(X) , Y=[conique1(X(1),X(2)),...
conique2(X(1),X(2))], endfunction
-->rep=fsolve([-1,1],coniques)
-->coniques(rep) // on vérifie le calcul
On rajoute le point sur le dessin
-->xpolys(rep(1),rep(2),-1)
Question 1Choisir une fonction dedans, la programmer, chercher un zéro,puis représenter ses courbes de niveau.
2 Intégration d'équations différentielles avec ode
-->help ode
2.1 Équations différentielles scalaires autonomes
-->function [ydot]=f(t,y) , ydot=sin(y), endfunction
//attention ! on écrit f(t,y) même si f ne dépend pas de t
-->y0=0.2;t0=0;t=0:0.1:15;
-->y=ode(y0,t0,t,f);
-->xbasc(); plot2d(t,y)
Choisir des valeurs positives pouret. Résoudre numériquement et tracer destrajectoires.
3 Optimisation avec optim
-->help optim
3.1 Minimum d'une fonction de deux variables, sans contraintes
Un exemple simple : optimiser sur .
-->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
Le même problème que dans la section précédente mais sous contraintes : et
. 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 4Choisir une fonction dedansqui soit bornée supérieurement, laprogrammer, chercher un maximum.
4 Hypermatrices
-->A= hypermat([2,2,2,2],rand(16,1));
-->B = A(1,:,2,:)
B =