今天碰到一个问题,问题如下:

假设在2020年,销售额是15000元,预期到2030年销售额是20000元,如果每年以相同的增长率增长,请问该增长率是多少?

这是求增长率的问题。方程很好列,2020年到2030年,刚好10年,每年增长率相等,则方程可以列为:

\[ 15000 (1+x)^{10}=20000 \]

输入格式:

15000*(1+x)^10=20000

这是个一元十次方程。接下来就是求解方程了。

问题是,10次方程似乎并不好解,借用Mathematica的Solve函数也不能直接求解,直接用Solve函数求解会得到如下结果:

可以看到用Solve函数得不到我们要的数值解,所以Solve并不能解高次方程。

我尝试过,用Solve求解4次和4次以下方程才可以直接得到结果,幂次再高的话就不能得到简单的数值解。因此得换个思路:

利用 FindRoot 而不是 Solve 来求解。

借用Mathematica可以按照如下方式求解(我已经做了注释):

可以得到增长率约为 2.92%

由此可以看到,借用函数图像的交叉点判断数值解的范围,再利用FindRoot来求得近似解,这种方法很快,也很高效。

类似的,可以换数值来求解负的增长率,比如下题:

假设在2020年,超污染排放厂是35个,预期到2030年降低到22个,如果每年以相同的递减率递减,请问该递减率是多少?

用类似的方法计算如下(这里没加注释,仿照上例来看,方法一模一样):

可以求得递减率约是 4.54%

对于其他次幂,该方法也是可用的。


感谢网友留言相告,以上方程可以用 NSolve 函数求解,怪我对Mathematica不熟悉,求解后得到很多解,第一个就是实数解,可以看到与上面的解法结果一样。

3条评论

  1. “用Solve函数得不到我们要的数值解,所以Solve并不能解高次方程。”这种说法不太科学吧,你再外面加个N或者用NSolve更合适

    1. 作者

      多谢建议,我试着用NSolve确实找到了解,感谢!!Solve为什么解不出来,可能与高次无关,与方程的复杂度有关。


发表评论

电子邮件地址不会被公开。 必填项已用*标注