全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
7341 10
2014-05-15
在经济学、管理学的学习中,经常会碰到求解高阶一元方程的问题,如用内部收益率法求解教育收益率、用成本收益法求投资项目的内部收益率等,有时候会碰到高达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,还有六个共轭虚根。求解速度非常快。
今后碰到求解高阶一次方程的坛友都可以用此方法非常简便地得到结果。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-5-17 15:01:24
好文,必须支持!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-5-28 15:44:08
你好,你所说的方法是线性运算,如果是矩阵运算应该怎么操作呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-5-28 21:25:17
martin-liao 发表于 2014-5-28 15:44
你好,你所说的方法是线性运算,如果是矩阵运算应该怎么操作呢?
问的很好,但我现在还不会,正在学习中,有结果我再告诉你,我们一起努力吧!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-5-29 12:52:38
pkl 发表于 2014-5-28 21:25
问的很好,但我现在还不会,正在学习中,有结果我再告诉你,我们一起努力吧!
好的,我其实也在思考如何用stata进行矩阵的高次运算,因为矩阵的高次运算牵涉的就不是二维三维这些东西了,很可能是一个混沌空间,matlab编程不是很会,哪天实验出了结果一起共享。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-6-9 23:58:07
赞一个!!!有用!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群