LaborCapitalAndTheOptimalGr.../CobbDouglas/code/TransitionDynamics.R

56 lines
1.8 KiB
R
Raw Normal View History

2020-09-24 10:39:48 +00:00
# Transition dynamics
# install.packages("pracma")
library(pracma)
## For forward shooting
a1 <- function(t){
term_a1 = λ_1 *
((1- λ_1)/( λ_1 * w_3 * exp(γ_1 * t)))^((1-λ_1) * (1-η)) /
(k1_forward_shooting * exp((ρ-r_1) * t))
result_a1 = term_a1^(1/η)
return(result_a1)
}
a3 <- function(t){
first_term_a3 = w_3 * exp(γ_1 * t) * δ_3 * λ_3 *
β_3 * exp(γ_3 * t) / (r_1 - γ_1 - r_3)
second_term_a3 = (1-λ_3)/(λ_3 * w_3 * exp(γ_1 * t))
subresult_a3 = first_term_a3 * (second_term_a3^(δ_3*(1-λ_3)))
result_a3 = subresult_a3^(1/(1-δ_3))
return(result_a3)
}
s1 <- function(t){
result_s1 = ((1-λ_1)/ λ_1) * (a1_t / (x3_t * w_3 * exp(γ_1 * t)))
return(result_s1)
}
s3 <- function(t){
result_s3 = ((1-λ_3)/ λ_3) * (a3_t / (x3_t * w_3 * exp(γ_1 * t)))
return(result_s3)
}
dx1 <- function(t){
result_x1 = - a1_t - a3_t + x3_t * w_3 * exp(γ_1 * t) * (1-s1_t - s3_t)
return(result_x1)
}
dx3 <- function(t){
result_x3 = β_3 * exp(γ_3 * t) * (a3(t)^λ_3 * (s3_t*x3_t)^(1-λ_3))^δ_3
return(result_x3)
}
dx3_reverse_shooting <- function(t, guessmin, guessmax, x3_target, t_previous){
## Inverting dx3 turns out to be a little bit involved.
check_hypothesis <- function(x3_hypothesis){
dx3_hypothesis = β_3 * exp(γ_3 * t_previous) * (a3(t_previous)^λ_3 * (s3_t*x3_hypothesis)^(1-λ_3))^δ_3
difference = x3_target - (x3_hypothesis + dx3_hypothesis*stepsize)
return(difference)
}
x3_best_guess <- bisect(check_hypothesis, guessmin, guessmax)$root
#uniroot(check_hypothesis, lower=guessmin, upper=guessmax, tol = 10^(-22))[[1]]
# x3_best_guess <- uniroot(check_hypothesis, lower=(x3_target-2), upper=(x3_target), tol = 10^(-22), extendInt = "down")[[1]]
## x3_best_guess <- uniroot(check_hypothesis, c(0, x3_target), tol = 10^(-22), a = 0, extendInt = "upX")[[1]]
return(x3_best_guess)
}