在经济学、管理学的学习中,经常会碰到求解高阶一元方程的问题,如用内部收益率法求解教育收益率、用成本收益法求投资项目的内部收益率等,有时候会碰到高达20-30次方的一元方程,通常情况下,我们是通过matlab或maple采用迭代的方法求解,可能需要自己些一个小程序,有没有只要把方程输入就可以得出结果的简便方法呢?本人在学习stata中mata方法时,碰巧发现了一个可以直接求解高阶一元方程的程序,现发出来和大家分享,也与大家共勉,一起认真好好学习stata。
方法就是:mata中的polyroots程序,进入mata后,输入polytoots((a,b,c,......))就可以直接得到全部解,包括复数解。这里的a代表0阶系数,b代表一阶系数,c代表二阶系数。以指导手册中的例子为例,求方程3+5x+x^2的解,只需输入polyroots((3,5,1))就可以得到方程的跟为-4.303和-0.697。无论多高阶的一元方程都可以用该命令直接求得所有解(含复数根和实数根)。我做了个实验,求解-21103.15x^8+21305.52x^3-21.4x^2-89.2x+16162.91=0的解,用do文件表示如下:
mata //启动mata
mata clear //清空mata内存中的变量和函数
polyroots((16162.91,-89.2,-21.4,21305.52,0,0,0,0,-21103.15)) //输入求解方程的系数
end
得到结果: 1 2
+---------------------------------------------------------
1 | 1.09662013 -.818589097 - .695780877i
+---------------------------------------------------------
3 4
---------------------------------------------------------
1 -.818589097 + .695780877i .150795683 - .982459804i
---------------------------------------------------------
5 6
---------------------------------------------------------
1 .150795683 + .982459804i .530423703 - .681080223i
---------------------------------------------------------
7 8
---------------------------------------------------------+
1 .530423703 + .681080223i -.821880713 |
---------------------------------------------------------+
表示该方程有8个根,其中有两个实根:1.09662013和-0.82188.713,还有六个共轭虚根。求解速度非常快。
今后碰到求解高阶一次方程的坛友都可以用此方法非常简便地得到结果。


雷达卡





京公网安备 11010802022788号







