我正在尝试随机生成一个具有整数系数的平方方程。像这样3x^2 - 6x + 8 = 0
但我希望它们也有整数根,所以生成根然后产生系数会更聪明。我想出了这个
\pgfmathsetmacro{\x}{random(1,9)*((random(0,1)==0)?-1:1)}
\pgfmathsetmacro{\y}{random(1,8)*((random(0,1)==0)?-1:1)}
\pgfmathsetmacro{\a}{random(1,9)*((random(0,1)==0)?-1:1)}
\pgfmathsetmacro{\b}{-\a*(\x+\y)}
\pgfmathsetmacro{\c}{\a*\x*\y}
$$\a x^2 + \b x + \c = 0$$
这里有几个问题:
它看起来像 8.0,而不是 8。
当它产生负数时,我得到的是
+ -9.0x
而不是-9x
。我也可以生成随机符号吗?我试过了,但没有成功。- 显然,最好使用 x 而不是 1x。如果结果为 1,有没有办法删除 1?
- 嗯,主要思想当然是生成线性和二次方程和不等式(例如带参数的方程和不等式。
$4ax^2 -5x + 6a = 0 $
因为我不太理解这个代码随机二次方程 有人可以解释一下或者至少演示一下如何重新制作它吗?
生成系数的能力很重要,因为之后你可以做所有的事情。生成诸如 $3sin(x)^2 - 5sinx + 8 = 0$ 之类的东西
答案1
以下是针对您提出的一些问题的快速解决方案。
\documentclass{article}
\usepackage{amsmath}
\usepackage{pgfplots}
\begin{document}
\pgfmathtruncatemacro{\x}{random(1,9)*((random(0,1)==0)?-1:1)}
\pgfmathtruncatemacro{\y}{random(1,8)*((random(0,1)==0)?-1:1)}
\pgfmathtruncatemacro{\a}{random(1,9)*((random(0,1)==0)?-1:1)}
\pgfmathtruncatemacro{\b}{-\a*(\x+\y)}
\newcommand{\myb}{\ifnum\b>0
+\b x
\else
\ifnum\b<0
\b x
\fi
\fi
}
\pgfmathtruncatemacro{\c}{\a*\x*\y}
\newcommand{\myc}{\ifnum\c>0
+\c
\else
\ifnum\c<0
\c
\fi
\fi
}
\[\a x^2 \myb \myc = 0\]
\end{document}