For my lesson that I am trying to write in latex/sagetex, I need to write formulas without them being transformed by sage.
Here's an example :
sage: f(x) = -2*x^2+x+3
....: g(x) = -2*(x-1/4)^2+25/8
....: g(x)
-1/8*(4*x - 1)^2 + 25/8
sage:
but I want to keep the form -2*(x-1/4)^2+25/8
to write it in latex.
I tried hold
and with hold:
and also some code with .mul(
or .add(
but I have a problem with the power.
My purpose is to do random exercises around quadratic equations, and I started writing this :
from random import sample
def signe():
signe = sample([Integer(i) for i in range(-1, 2, 1) if i != 0],1)
return(signe[0])
def calcul(amax, bmax, cmax):
a = randint(1,amax)*signe()
b = randint(0,bmax)*signe()
c = randint(0,cmax)*signe()
f(x) = a*x^2+b*x+c
alpha = -b/2/a
beta = f(x=alpha)
fcanonique(x) = a*(x-alpha)^2+beta
Delta = b**2-4*a*c
output = r"Soit $f$ le trinôme défini sur $\R$ par ~${}=0$.".format(latex(f(x)))
output += r"\medbreak"
output += r"\begin{enumerate}"
output += r"\item Déterminer une forme canonique de $f$."
output += r"\item Résoudre dans $\R$ l'équation $f(x)=0$ par la méthode de votre choix."
output += r"\item $f$ est-elle factorisable ? Si oui, déterminer en une forme factorisée."
output += r"\item Résoudre dans $\R$ l'équation $f(x)={}$.".format(c)
output += r"\item Résoudre dans $\R$ l'équation $f(x)={}$.".format(beta)
output += r"\end{enumerate}"
output += r"\medbreak\uline{Réponses} :\medbreak"
output += r"\begin{enumerate}"
output +=r"\item On a $f(x)={}$".format(latex(fcanonique(x)))
if Delta < 0:
output += r"\item On reconnaît une équation du second degré de discriminant $\Delta={}<0$, et donc cette équation n'a pas de solution réelle :".format(latex(Delta))
output += "\\bigbreak{}"
output += r"Ce trinôme admet une forme canonique : "
elif Delta == 0:
output += r"\item On reconnaît une équation du second degré de discriminant $\Delta={}$, et donc cette équation admet une unique solution $x_0={}$".format(latex(Delta), latex(alpha))
else:
x1 = simplify((-b-Delta^(1/2))/(2*a))
x2 = simplify((-b+Delta^(1/2))/(2*a))
ffactorisee(x) = a*(x-x1)*(x-x2)
output += r"\item On reconnaît une équation du second degré de discriminant $\Delta={}>0$, et donc cette équation admet deux solutions réelles $x_1$ et $x_2$ avec : \quad $\displaystyle x_1={}$ \quad et \quad $\displaystyle x_2={}$.".format(latex(Delta), latex(x1), latex(x2))
output += "\\bigbreak{}"
output += r"\end{enumerate}"
return(output)
and for example, calcul(5, 5, 5)
return :
"Soit $f$ le trinôme défini sur $\\R$ par ~$-x^{2} + 4 \\, x - 2=0$.\\medbreak\\begin{enumerate}\\item Déterminer une forme canonique de $f$.\\item Résoudre dans $\\R$ l'équation $f(x)=0$ par la méthode de votre choix.\\item $f$ est-elle factorisable ? Si oui, déterminer en une forme factorisée.\\item Résoudre dans $\\R$ l'équation $f(x)=-2$.\\item Résoudre dans $\\R$ l'équation $f(x)=2$.\\end{enumerate}\\medbreak\\uline{Réponses} :\\medbreak\\begin{enumerate}\\item On a $f(x)=-x + 4$\\item On reconnaît une équation du second degré de discriminant $\\Delta=8>0$, et donc cette équation admet deux solutions réelles $x_1$ et $x_2$ avec : \\quad $\\displaystyle x_1=\\sqrt{2} + 2$ \\quad et \\quad $\\displaystyle x_2=-\\sqrt{2} + 2$.\\bigbreak{}\\end{enumerate}"
Before if Delta < 0:
I would like output +=r"\item On a $f(x)={}$".format(latex(fcanonique(x)))
to display the formula without transformation.
Thanks.