我已经使用此代码生成二次方程,有没有办法使解成为真实且可在较低级别求解?
\documentclass{article}
\usepackage{mathtools}
\usepackage{enumitem}
\usepackage{tikz}
\newcommand*{\Difficulty}{10}%
\newcommand{\QuadraticEquations}[1]{%
\foreach \i in {1,...,#1}{%
\pgfmathtruncatemacro{\A}{1)}%
\pgfmathtruncatemacro{\B}{random(\Difficulty)}%
\pgfmathtruncatemacro{\C}{random(\Difficulty)}%
\item $\A x^2 + \B x + \C = 0$%
}%
}%
\begin{document}
\QuadraticEquations{3}
\end{document}
答案1
您不应该随机化二次方程的系数Ax²+Bx+C
,而应该随机选择根,这样它们就会像您要求的那样成为实数。
为了恢复二次方程的展开形式,知道它的根,你需要使用韦达定理。
\documentclass{article}
\usepackage{mathtools}
\usepackage{enumitem}
\usepackage{tikz}
\newcommand*{\Difficulty}{10}%
\newcommand{\QuadraticEquations}[1]{%
\foreach \i in {1,...,#1}{%
\pgfmathtruncatemacro{\rootI}{random(-\Difficulty,\Difficulty)}%
\pgfmathtruncatemacro{\rootII}{random(-\Difficulty,\Difficulty)}%
\pgfmathtruncatemacro{\A}{1)}%
\pgfmathtruncatemacro{\B}{-\A*(\rootI+\rootII)}%
\pgfmathtruncatemacro{\C}{\A*\rootI*\rootII}%
\item $\A x^2 \pgfmathprintnumber[showpos]{\B} x \pgfmathprintnumber[showpos]{\C} = 0$%
}%
}%
\begin{document}
\begin{itemize}
\QuadraticEquations{3}
\end{itemize}
\end{document}
请注意,我使用是\pgfmathprintnumber[showpos]{...}
为了在系数为正时打印加号(当系数为负时,默认打印减号)。