Skip to content

Commit

Permalink
Update 1_MainFunctions.jl
Browse files Browse the repository at this point in the history
Add constraint that ConvergenceMetric is a function. Fix bug in default ReportingSigFig
  • Loading branch information
s-baumann committed Jan 3, 2019
1 parent cbd70e3 commit 26a7852
Showing 1 changed file with 5 additions and 5 deletions.
10 changes: 5 additions & 5 deletions src/1_MainFunctions.jl
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ A function for finding the fixed point of another function
#' F = fixed_point(Func, Inputs; Algorithm = Anderson, MaxM = 4, ReportingSigFig = 13)
"""
function fixed_point(func::Function, previous_FixedPointResults::FixedPointResults;
Algorithm::FixedPointAccelerationAlgorithm = Anderson, ConvergenceMetric = supnorm(Resids::Array{Float64, 1}) = maximum(abs.(Resids)),
Algorithm::FixedPointAccelerationAlgorithm = Anderson, ConvergenceMetric::Function = supnorm(Resids::Array{Float64, 1}) = maximum(abs.(Resids)),
ConvergenceMetricThreshold::Float64 = 1e-10, MaxIter::Int = 1000, MaxM::Int = 10, ExtrapolationPeriod::Int = 7, Dampening::Float64 = 1.0,
PrintReports::Bool = false, ReportingSigFig::Int = 10, ReplaceInvalids::InvalidReplacement = NoAction, ConditionNumberThreshold::Float64 = 1e3)
Inputs = previous_FixedPointResults.Inputs_
Expand All @@ -97,7 +97,7 @@ function fixed_point(func::Function, previous_FixedPointResults::FixedPointResul
ReplaceInvalids = ReplaceInvalids, ConditionNumberThreshold = ConditionNumberThreshold)
end
function fixed_point(func::Function, Inputs::Array{Float64, 1};
Algorithm::FixedPointAccelerationAlgorithm = Anderson, ConvergenceMetric = supnorm(Resids::Array{Float64, 1}) = maximum(abs.(Resids)),
Algorithm::FixedPointAccelerationAlgorithm = Anderson, ConvergenceMetric::Function = supnorm(Resids::Array{Float64, 1}) = maximum(abs.(Resids)),
ConvergenceMetricThreshold::Float64 = 1e-10, MaxIter::Int = 1000, MaxM::Int = 10, ExtrapolationPeriod::Int = 7, Dampening::Float64 = 1.0,
PrintReports::Bool = false, ReportingSigFig::Int = 10, ReplaceInvalids::InvalidReplacement = NoAction, ConditionNumberThreshold::Float64 = 1e3)
Inputs2 = Array{Float64, 2}(undef,size(Inputs)[1],1)
Expand All @@ -107,7 +107,7 @@ function fixed_point(func::Function, Inputs::Array{Float64, 1};
ReplaceInvalids = ReplaceInvalids, ConditionNumberThreshold = ConditionNumberThreshold)
end
function fixed_point(func::Function, Inputs::Float64;
Algorithm::FixedPointAccelerationAlgorithm = Anderson, ConvergenceMetric = supnorm(Resids::Array{Float64, 1}) = maximum(abs.(Resids)),
Algorithm::FixedPointAccelerationAlgorithm = Anderson, ConvergenceMetric::Function = supnorm(Resids::Array{Float64, 1}) = maximum(abs.(Resids)),
ConvergenceMetricThreshold::Float64 = 1e-10, MaxIter::Int = 1000, MaxM::Int = 10, ExtrapolationPeriod::Int = 7, Dampening::Float64 = 1.0,
PrintReports::Bool = false, ReportingSigFig::Int = 10, ReplaceInvalids::InvalidReplacement = NoAction, ConditionNumberThreshold::Float64 = 1e3)
Inputs2 = Array{Float64, 2}(undef,1,1)
Expand All @@ -117,9 +117,9 @@ function fixed_point(func::Function, Inputs::Float64;
ReplaceInvalids = ReplaceInvalids, ConditionNumberThreshold = ConditionNumberThreshold)
end
function fixed_point(func::Function, Inputs::Array{Float64, 2}; Outputs::Array{Float64,2} = Array{Float64,2}(undef,size(Inputs)[1],0),
Algorithm::FixedPointAccelerationAlgorithm = Anderson, ConvergenceMetric = supnorm(Resids::Array{Float64, 1}) = maximum(abs.(Resids)),
Algorithm::FixedPointAccelerationAlgorithm = Anderson, ConvergenceMetric::Function = supnorm(Resids::Array{Float64, 1}) = maximum(abs.(Resids)),
ConvergenceMetricThreshold::Float64 = 1e-10, MaxIter::Int = 1000, MaxM::Int = 10, ExtrapolationPeriod::Int = 7, Dampening::Float64 = 1.0,
PrintReports::Bool = false, ReportingSigFig::Int = 5, ReplaceInvalids::InvalidReplacement = NoAction, ConditionNumberThreshold::Float64 = 1e3)
PrintReports::Bool = false, ReportingSigFig::Int = 10, ReplaceInvalids::InvalidReplacement = NoAction, ConditionNumberThreshold::Float64 = 1e3)
# This code first tests if the input point is a fixed point. Then if it is not a while loop runs to try to find a fixed point.
if (ConditionNumberThreshold < 1) error("ConditionNumberThreshold must be at least 1.") end
SimpleStartIndex = size(Outputs)[2]
Expand Down

0 comments on commit 26a7852

Please sign in to comment.