今天碰到一个问题,问题如下:
假设在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不熟悉,求解后得到很多解,第一个就是实数解,可以看到与上面的解法结果一样。
Pingback: 用MATHEMATICA计算一元高次方程(续) – TAHO
“用Solve函数得不到我们要的数值解,所以Solve并不能解高次方程。”这种说法不太科学吧,你再外面加个N或者用NSolve更合适
多谢建议,我试着用NSolve确实找到了解,感谢!!Solve为什么解不出来,可能与高次无关,与方程的复杂度有关。