楼主: ahnulxy
11733 24

[宏观经济学教材] 勘误和解释:《动态随机一般均衡(DSGE)模型:理论、方法和Dynare实践》2020.11第二次 [推广有奖]

11
oopp0099 发表于 2020-8-14 00:11:50 来自手机
ahnulxy 发表于 2020-1-7 02:54
《动态随机一般均衡(DSGE)模型:理论、方法和Dynare实践》一书自2018年12月出版以来,已经一年有余,收到 ...

12
marcus10 发表于 2020-10-31 23:58:02 来自手机
提示: 该帖被管理员或版主屏蔽  Ipub 语言不文明或人身攻击 2021-1-12 14:45

13
ahnulxy 发表于 2020-11-24 14:14:08
tulipsliu 发表于 2020-1-17 21:21
已下载,会传播。李向阳教授的书籍我也买了的。

非常棒的书籍
感谢支持!

14
ahnulxy 发表于 2020-11-24 14:15:35
higgspaul1 发表于 2020-6-13 16:10
请问楼主找到Monetary policy, inflation and the Business Cycle的课后题答案了么  有偿求一个
这本书目前没标准答案,不过有人正在组织准备弄

15
ahnulxy 发表于 2020-12-17 21:32:00
维柠a 发表于 2020-7-5 11:04
李老师您好
我是一名硕士研究生,我购买了您的书籍《动态随机一般均衡模型》,在学习的过程中遇到了一些问 ...
论坛里就有!你搜一下。或扫描本书封底二维码也能看到

16
飞马洪 发表于 2021-2-21 09:11:46
tulipsliu 发表于 2020-4-2 18:44
我们买的纸质版的书籍。这个是中文的书籍,暂时没有PDF 版本的吧。
150块钱,你想学买一本吧。
某多多不香吗,40多就可以了,盗版20多元。

17
tulipsliu 在职认证  发表于 2021-2-21 09:39:47
飞马洪 发表于 2021-2-21 09:11
某多多不香吗,40多就可以了,盗版20多元。
李向阳老师的教材,呕心沥血;

是别人的科研成果;作者拥有微软软件工程师资格。虽然教材里,编程在我看来是入门级的。
我也会 Micro soft visual studio.

现在电脑里的 MSVC ,除了可以编译 C++ 语言,已经集成了  Intel 公司的  FORTRAN 语言到 Micro soft Visual studio 里;

作者的编程功底强大, C++ 语言的编程,在程序员里也是非常难的。我们知道现在的动态语言 Python 非常容易入手。

但是,专业的程序员,最难编程的是 C++ ,我已经在论坛发布一些 R 混编 C++ 的工具包。比如  rugarch  package  ,做 GARCH  模型的R 工具包,也混编 C ++ ,

国际上最前沿的  DSGE ,也有混编 C++ ,以及 FORTRAN 语言。

我已经在论坛分享了程序,  MATLAB 编译 FORTRAN 语言。通过MATLAB 的 mex 命令,编译了FORTRAN 程序,生成为 MATLAB 可以执行的 .mexw64 (我的电脑系统和 MATLAB 均为 64-bit)。

作者的教材非常好。不但帮助国内的学生从基础的 MATLAB 语法以及 Dynare 的应用入手,我可以用这个句话来说:作者用心良苦。

即使这样的基础教学,没有五年以上的教学带,是无法完成的。
我打开MATLAB , 展示我的软件配置吧。

作者不但有可以从学生的基础入门编程(在我看来教材的编程非常入门,与作者的微软软件工程车资格不相符)。也有经济学国际上各种经济现象研究的深度理解。 是作者多年经济学研究呕心沥血之作。

这样的好教材, 150.00 元购买正版,一点也不亏。

18
tulipsliu 在职认证  发表于 2021-2-21 09:48:11
飞马洪 发表于 2021-2-21 09:11
某多多不香吗,40多就可以了,盗版20多元。
这里,我先回复里,我的电脑里MATLAB 编译FORTRAN的一段代码。
下一帖我不回复你,你自己看我在这里的留言,一个 MATLAB 可以编译的 FORTRAN 语言代码, MEX 文件不论是 C++ 语言的,还是 FORTRAN 语言的,funcion 前面必须有关键字 , mex
比如计算DSER的有一个叫  valueiterationfunction , 那么 FORTRAN 语言要被 MATLAB 能 mex 编译的话,必须有 mex 关键字开头。

mexValueIterationFunction.F90

我的编译结果如下:
>> mex policies_on_itc_mex.F90
Building with 'Intel Parallel Studio XE 2018 for Fortran with Microsoft Visual Studio 2017'.
MEX completed successfully.
>> dir

.                           myinterp4_mex.F90           policies_on_mex.F90         spcoefs_mex.F90            
..                          myinterp4_mex.mexw64        policies_on_mex.mexw64      spcoefs_mex.mexw64         
myinterp3_mex.F90           policies_on_itc_mex.F90     ppval_mex.F90               
myinterp3_mex.mexw64        policies_on_itc_mex.mexw64  ppval_mex.mexw64            

>>

19
tulipsliu 在职认证  发表于 2021-2-21 09:49:50
一段 MATLAB 可以编译的高级程序语言代码;

文件的后缀名是 .F90 格式。文件名 : policies_on_itc_mex.F90

  1. !
  2. !   myinterp3_mex.F90
  3. !   
  4. !
  5. !   Created by Volker Tjaden on 23.08.2013.
  6. !   Copyright 2013 __MyCompanyName__. All rights reserved.
  7. !
  8. #include "fintrf.h"

  9. !-----------------------------------------------------------------------
  10. ! Gateway routine
  11. !-----------------------------------------------------------------------

  12. subroutine mexFunction(nlhs,plhs,nrhs,prhs)
  13.             implicit none
  14.         ! Arguments in mexFunction
  15.             mwPointer  :: plhs(*), prhs(*)
  16.             integer    :: nlhs, nrhs

  17.             ! Function declarations
  18.             mwPointer   ::  mxGetPr, mxCreateNumericMatrix
  19.             integer(4)  ::  mxClassIDFromClassName
  20.             integer(4)  ::  mxGetString
  21.             mwPointer   ::  mxGetN , mxGetM

  22.             ! Pointers to input/output mxArrays:
  23.             ! Input
  24.             mwPointer  :: prices,EV,EV_down,EV_up,kgrid,q,rho,w,gam,del,b,beta,xibar
  25.                 mwPointer  :: tcred,itc
  26.             ! Output
  27.             mwPointer  :: kopt,xihat,up,down,uncont,kopt_ind
  28.        
  29.             ! Array size information
  30.             mwSize             :: nks, neps, mwOne
  31.             integer(4)   :: classid
  32.             integer(4)   :: complexflag

  33. !-----------------------------------------------------------------------
  34.         ! Copy pointers
  35.         prices        = mxGetPr(prhs(1))
  36.         EV        = mxGetPr(prhs(2))
  37.         EV_down = mxGetPr(prhs(3))
  38.         EV_up   = mxGetPr(prhs(4))
  39.         kgrid        = mxGetPr(prhs(5))
  40.         q        = mxGetPr(prhs(6))
  41.         rho        = mxGetPr(prhs(7))
  42.         w        = mxGetPr(prhs(8))
  43.         gam        = mxGetPr(prhs(9))
  44.         del        = mxGetPr(prhs(10))
  45.         b        = mxGetPr(prhs(11))
  46.         beta        = mxGetPr(prhs(12))
  47.         xibar   = mxGetPr(prhs(13))
  48.     tcred   = mxGetPr(prhs(14))
  49.         itc  = mxGetPr(prhs(15))

  50.         ! Retrieve size information
  51.         nks        = mxGetM(prhs(2))
  52.         neps    = mxGetN(prhs(2))       

  53.         ! Create return arguments
  54.         complexflag = 0  
  55.         mwOne=1       

  56.         classid = mxClassIDFromClassName('double')      
  57.             plhs(1) = mxCreateNumericMatrix(mwOne,neps,classid, complexflag)
  58.             kopt = mxGetPr(plhs(1))
  59.         plhs(2) = mxCreateNumericMatrix(nks,neps,classid, complexflag)       
  60.         xihat = mxGetPr(plhs(2))

  61.         classid = mxClassIDFromClassName('logical')  
  62.         plhs(3) = mxCreateNumericMatrix(nks,neps,classid, complexflag)
  63.             up = mxGetPr(plhs(3))
  64.         plhs(4) = mxCreateNumericMatrix(nks,neps,classid, complexflag)
  65.             down = mxGetPr(plhs(4))
  66.         plhs(5) = mxCreateNumericMatrix(nks,neps,classid, complexflag)
  67.             uncont = mxGetPr(plhs(5))
  68.         classid = mxClassIDFromClassName('double')  
  69.           plhs(6) = mxCreateNumericMatrix(mwOne,neps,classid, complexflag)
  70.             kopt_ind = mxGetPr(plhs(6))
  71.        
  72.         ! call subroutine
  73.         call policies_on(%val(kopt),%val(xihat),%val(up),%val(down),&
  74.                 %val(uncont),%val(kopt_ind),%val(EV),%val(EV_down),&
  75.                 %val(EV_up),%val(kgrid),%val(q),%val(rho),%val(w),&
  76.                 %val(gam),%val(del),%val(b),%val(beta),%val(xibar),&
  77.                 %val(tcred),%val(itc),nks,neps)

  78.         return
  79. end subroutine

  80. subroutine policies_on(kopt,xihat,up,down,uncont,kopt_ind,&
  81.         EV,EV_down,EV_up,kgrid,q,rho,w,&
  82.         gam,del,b,beta,xibar,tcred,tstate,nks,neps)
  83.         implicit none
  84.         real(8), intent(out)        :: kopt(neps)
  85.         real(8), intent(out)        :: xihat(nks,neps)
  86.         !logical*1, intent(out)        :: up(nks,neps)
  87.         !logical*1, intent(out)        :: uncont(nks,neps)
  88.         !logical*1, intent(out)        :: down(nks,neps)
  89.         integer*1, intent(out)        :: up(nks,neps)
  90.         integer*1, intent(out)        :: uncont(nks,neps)
  91.         integer*1, intent(out)        :: down(nks,neps)
  92.         real(8), intent(out)        :: kopt_ind(neps)
  93.         real(8), intent(in)        :: EV(nks,neps)
  94.         real(8), intent(in)        :: EV_down(nks,neps)
  95.         real(8), intent(in)        :: EV_up(nks,neps)
  96.         real(8), intent(in)        :: kgrid(nks)
  97.         real(8), intent(in)        :: q,rho,w,gam,del,b,beta,xibar
  98.         real(8), intent(in) :: tcred,tstate
  99.         mwSize, intent(in)        :: nks,neps
  100.         ! local variables       
  101.         integer(4)                :: i1,ind,pos,i2
  102.         real(8)                        :: E,EC,vbest,vcand
  103.        
  104.         ! Loop over idiosyncratic productivity states
  105.         ind=1       
  106.         do i1=1,neps
  107.                 ! 1. Find capital choice
  108.                 pos=0
  109.                 vbest=-huge(vbest)
  110.                 if (i1>1) then
  111.                         ind=int(kopt_ind(i1-1),4)
  112.                 end if
  113.                 do while (ind<=nks)
  114.                         vcand=-gam*kgrid(ind)*q*rho*(1.d0-tstate*tcred)&
  115.                         +beta*EV(ind,i1)
  116.                         if (vcand>vbest) then
  117.                                 vbest=vcand
  118.                                 pos=ind
  119.                         else
  120.                                 exit
  121.                         end if
  122.                         ind=ind+1
  123.                 end do
  124.                 E=vbest
  125.                 kopt_ind(i1)=real(pos,8)
  126.                 kopt(i1)=kgrid(pos)

  127.                 ! 2. Check whether optimal choice is within constrained
  128.                 !    set and if not, in what direction constrain
  129.                 do i2=1,nks
  130.                         ! (EC-repmat(E,mpar.nksim,1))./(rho*w);
  131.                         if (((1.d0-del+b)/gam)*kgrid(i2)<kopt(i1)) then
  132.                                 up(i2,i1)=1 !.true.
  133.                                 EC=-(1.d0-del+b)*kgrid(i2)*q*rho*(1.d0-tstate*tcred)+&
  134.                                         beta*EV_up(i2,i1)
  135.                                 xihat(i2,i1)=-(EC-E)/(rho*w)
  136.                                 xihat(i2,i1)=min(xibar,max(0.d0,xihat(i2,i1)))
  137.                         elseif(((1.d0-del-b)/gam)*kgrid(i2)>kopt(i1)) then
  138.                                 down(i2,i1)=1 !.true.
  139.                                 EC=-(1.d0-del-b)*kgrid(i2)*q*rho*(1.d0-tstate*tcred)+&
  140.                                         beta*EV_down(i2,i1)
  141.                                 xihat(i2,i1)=-(EC-E)/(rho*w)
  142.                                 xihat(i2,i1)=min(xibar,max(0.d0,xihat(i2,i1)))
  143.                         else
  144.                                 uncont(i2,i1)=1!.true.
  145.                                 xihat(i2,i1)=0.d0
  146.                         end if
  147.                 end do
  148.         end do                       

  149. end subroutine
复制代码

20
nmmd 发表于 2021-2-21 14:41:08 来自手机
支持

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-27 00:01