编写一般均衡函数系统
Writing a system of general equilibrium function
我正在尝试创建一个方程组,理论上代表下面看到的函数(我们知道 Kt、alpha 和 beta 但不知道 Kt+q)- 非常感谢任何帮助:
我应该如何表示它并将其传递到我的 newton raphson 代码中(这里的任何输入也很受欢迎):
% newton raphson
function I = NR(f,x0)
x=x0; %starting point
fx=f(x);
J = CDJac(f,x);
I = x - fx/J;
end
% the jacobian below is validated;
function [DCD] = CDJac(f,xbar)%the jacobian
jk=length(xbar); %find the dimension of x
hstar=eps^(1/3); %choose value of h based upon Heer and Maussner machine eps
e=zeros(1,jk); %1 x j vector of zeros; j coresspond to the derivative
%with respect to the jth varibale. If j=1, I am taking the derivative of
%this multivraite function with respect to x1. Creates a bunch of zeros. AS
%we go through and evlaute everything. We replace that zeros with a one.
for j=1:length(xbar) %if j is 1:10. xbar is the vector of
%10 different points. you have 10 differetn x s.
e(j)=1; %replace the jth entry to 1 in the zero vector. (1,0). In a
%of loop, j become 2 after it is done with 1. We then take the second
%element of it and change it to a 1- (0,1).
fxbarph=f([xbar+e.*hstar]); %function evaluated at point xbar plus h
fxbarmh=f([xbar-e.*hstar]); %function evaluated at point xbar minus h
DCD(:,j)=(fxbarph-fxbarmh)./(2*hstar);
e=zeros(1,jk); %create the ej row vector of zeros. For instance, when j
%goes to 2, you need to have 0s everywhere except the second column.
end
end
我认为您需要执行以下步骤:
- 将每个函数表示为 f(k) = 0:从每个方程的两边减去 RHS。
- 计算线性增量的 Jacobean:J*dk = f
- 对未知的 k 向量进行初步猜测
- 求解未知增量向量 dk
- 更新向量k:k(new) = k(old) + dk
- 迭代收敛
我正在尝试创建一个方程组,理论上代表下面看到的函数(我们知道 Kt、alpha 和 beta 但不知道 Kt+q)- 非常感谢任何帮助:
我应该如何表示它并将其传递到我的 newton raphson 代码中(这里的任何输入也很受欢迎):
% newton raphson
function I = NR(f,x0)
x=x0; %starting point
fx=f(x);
J = CDJac(f,x);
I = x - fx/J;
end
% the jacobian below is validated;
function [DCD] = CDJac(f,xbar)%the jacobian
jk=length(xbar); %find the dimension of x
hstar=eps^(1/3); %choose value of h based upon Heer and Maussner machine eps
e=zeros(1,jk); %1 x j vector of zeros; j coresspond to the derivative
%with respect to the jth varibale. If j=1, I am taking the derivative of
%this multivraite function with respect to x1. Creates a bunch of zeros. AS
%we go through and evlaute everything. We replace that zeros with a one.
for j=1:length(xbar) %if j is 1:10. xbar is the vector of
%10 different points. you have 10 differetn x s.
e(j)=1; %replace the jth entry to 1 in the zero vector. (1,0). In a
%of loop, j become 2 after it is done with 1. We then take the second
%element of it and change it to a 1- (0,1).
fxbarph=f([xbar+e.*hstar]); %function evaluated at point xbar plus h
fxbarmh=f([xbar-e.*hstar]); %function evaluated at point xbar minus h
DCD(:,j)=(fxbarph-fxbarmh)./(2*hstar);
e=zeros(1,jk); %create the ej row vector of zeros. For instance, when j
%goes to 2, you need to have 0s everywhere except the second column.
end
end
我认为您需要执行以下步骤:
- 将每个函数表示为 f(k) = 0:从每个方程的两边减去 RHS。
- 计算线性增量的 Jacobean:J*dk = f
- 对未知的 k 向量进行初步猜测
- 求解未知增量向量 dk
- 更新向量k:k(new) = k(old) + dk
- 迭代收敛