EvolutionOfCapital.java
package net.finmath.climate.models.dice.submodels;
import java.util.function.BiFunction;
import java.util.function.Function;
import net.finmath.time.TimeDiscretization;
/**
* the evolution of the capital (economy)
* \(
* K(t_{i+1}) = (1-delta) K(t_{i}) + investment
* \)
*
* @author Christian Fries
*/
public class EvolutionOfCapital implements Function<Integer, BiFunction<Double, Double, Double>> {
private final TimeDiscretization timeDiscretization;
private final double capitalDeprecation;
public EvolutionOfCapital(TimeDiscretization timeDiscretization, double capitalDeprecation) {
super();
this.timeDiscretization = timeDiscretization;
this.capitalDeprecation = capitalDeprecation;
}
public EvolutionOfCapital(TimeDiscretization timeDiscretization) {
// capital deprecation per 1 year
this(timeDiscretization, -Math.log(1-0.1));
}
@Override
public BiFunction<Double, Double, Double> apply(Integer timeIndex) {
final double timeStep = timeDiscretization.getTimeStep(timeIndex);
return (Double capital, Double investment) -> capital * Math.exp(-capitalDeprecation * timeStep) + investment * timeStep;
}
}