使用 pgfmath 制作二次方程

使用 pgfmath 制作二次方程

我已经使用此代码生成二次方程,有没有办法使解成为真实且可在较低级别求解?

\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]{...}为了在系数为正时打印加号(当系数为负时,默认打印减号)。

相关内容