十二生肖怎么推算?
首先,我们看这个题目中的“推”字。推是推算、预测的意思。所以这个问题可以翻译成:如何推算(制作)十二生肖? 制作:创造、制造。 推算:根据已知的数据和前提条件,计算出所求的值。 用现代数学语言来描述这个问题就是:给定一个数据集和一个目标值,寻找一组函数参数使得目标值能尽可能接近于数据集中所有元素的计算值之和。 这实际上是一个优化问题,可以用最优化方法其中的梯度下降法进行求解。当然,如果数据集很小,通过手动计算函数参数并进行试算,也有可能得到正确答案。但这种方法不能保证找到的最优参数就是真实存在着的最佳参数。
为了寻找最优参数,必须知道函数本身的具体形式。假设我们需要制作的函数是sin(x)+x^2,那么最佳参数就是一个一元二次方程的两个根——也就是函数的两个零点。只要这两个零点的数值能够恰好对应于题目要求的12个元素,那么函数就制作完成了。 这里需要注意到的一点是:所求的参数并不是只有一个,而是有两个或更多。这是因为所求的参数是函数本身的参数,而函数本身是由无数个点组成的一条连续曲线,对于一个给定的函数,你可以找出它所有的参数,而多个参数的集合必然可以精确表示函数。反过来,对于给定的一个函数,你可以找到能使之成立的各个参数值。
回到题目中来,让我们假设所要求的函数是sin(x)+x²。那么,当x=0时,函数值为2;当x=1时,函数值为-1;当x=3.8时,函数值为0.65等等……所有这些在x取不同值时的函数值加起来正好等于12,这正符合题目要求。你很容易验证当x取不同的值时,这些加起来的函数值总是小于5,而这恰恰说明这个问题是一个优化问题,因为5大于12。
现在的问题是怎么求解满足上述条件的两个未知数。这需要一个步骤,即先假设其中一个未知数的初值,然后利用这一假设及题设条件求解另一个未知数,然后再代入第一个未知数进行检验。如此反复迭代,直到发现某一步迭代后的结果比前一步显著改进为止——显然,这时求出的两个未知数是近似最优解。 而所谓“显著改进”,在这里就是指在这一次迭代中某个元素的误差比前面一遍减小了几个数量级——比如千分位。
如果你感兴趣的话,可以在我的博客上看看用计算机模拟随机数求解这类问题的过程。最终的结果会显示最优解是非常靠近真实值的。 以上仅仅介绍了如何通过最小二乘法等最优化方法求解未知数,至于如何初始化假设未知数的值,这取决于你所使用的最优化算法——如果是梯度下降法,那么可以简单假定未知数的初始值为零。