Créer une fonction affiche_racine(poly) qui permet d’afficher un polynôme du second degré poly et ses racines si elles existent. La fonction du second degré poly sera codée sous forme d’un tableau de ses coefficients. Par exemple, la fonction $y =2x^2+4x-3$ sera codée $[{2}, {4}, {-3}]$ L’appel à la fonction depuis un script sera donc :
clear
close
a = input('Entrez la valeur de a (ax²+bx+c)');
b = input('Entrez la valeur de b (ax²+bx+c)');
c = input('Entrez la valeur de c (ax²+bx+c)');
affiche_racine([a b c])
a correspond au 1er élément du tableau poly soit poly(1), etc. … Les racines, si elles existent, seront affichées par un rond rouge avec leur abscisse (utiliser les fonctions sprintf et text)
function affiche_racine(f)
% calcul du determinant
delta = f(2).^2 - 4*f(1)*f(3);
if delta > 0 % 2 racines
x1 = (-f(2) - sqrt(delta))/(2*f(1));
x2 = (-f(2) + sqrt(delta))/(2*f(1));
% affichage de la courbe
X = [min([x1 x2])-2:0.1:max([x1 x2])+1];
Y = f(1)*X.^2 + f(2)*X + f(3);
hold off;
plot(X,Y);
hold on;
grid on;
% affichage des racines
plot(x1,0, "ro");
text(x1,-1,sprintf("%.2f",x1));
plot(x2,0, "ro");
text(x2,-1,sprintf("%.2f",x2));
hold on;
elseif delta == 0 % 1 racine
x1 = -f(2)/(2*f(1));
% affichage de la courbe
X = [x1-2:0.1:x1+1];
Y = f(1)*X.^2 + f(2)*X + f(3);
hold off;
plot(X,Y);
hold on;
grid on;
% affichage des racines
plot(x1,0, "ro");
text(x1,-1,sprintf("%.2f",x1));
else % pas de racine réelle
X = [-2:0.1:2];
Y = f(1)*X.^2 + f(2)*X + f(3);
hold off;
plot(X,Y);
hold on;
grid on;
end
% message = functionToString(f);
message = polyout(f);
legend(message);
xlabel("x");
ylabel("y");
end
Une autre fonction « utile » est possible pour afficher les courbes ; la fonction fplot (function plot) En donnant de manière formelle la fonction et l’intervalle d’affichage, vous pourrez tracer directement la courbe. Tracer la fonction $x^2-2$ en noir dans l’intervalle $[-2, 2]$ en une seule ligne de code.
<aside> ❗ Nota : la variable utilisée doit nécessairement s’appeler ‘x’
</aside>
fplot('x.^2-2',[-2 2], 'k');
Afficher dans l’intervalle $[0, 30]$ la fonction $f(x,y,z)$ définie par :
$$ \begin{cases}x = t\\y =sin(t)\\z = cos(t) \end{cases} $$
hold off
X = [0:0.1:30]; % = t
Y = sin(X);
Z = cos(X);
plot3(X,Y,Z);
Définir la fonction z = formeetrange(x,y) qui calcule la fonction suivante