Initialize continuation of Fold bifurcations
Contents
function [foldbranch,suc]=SetupFold(funcs,branch,ind,varargin)
Inputs
- funcs: functions used for DDE
- branch: branch of stst along which Fold was discovered
- ind: index of approximate Fold point
Important optional inputs (name-value pairs) outputs foldbranch: Fold branch with first point (or two points) suc: flag whether corection was successful
Important name-value pair inputs
- 'contpar' (integers default []): index of additional continuation parameters (in addition to free pars of branch
- 'correc' (logical, default true): apply p_correc to first points on fold branch
- 'dir' (integer, default []): which parameter to vary initially along fold branch (foldbranch has only single point if dir is empty)
- 'step' (real, default 1e-3): size of initial step if dir is non-empty
All other named arguments are passed on to fields of foldbranch
Outputs
- foldbranch: Hopf branch with first point (or two points)
- suc: flag whether corection was successful
(c) DDE-BIFTOOL v. 3.1.1(20), 11/04/2014
process options
default={'contpar',[],'correc',true,'dir',[],'step',1e-3}; [options,pass_on]=dde_set_options(default,varargin,'pass_on'); % initialize branch of folds (pbranch) foldbranch=df_brnch(funcs,options.contpar,'fold'); foldbranch.method.point=branch.method.point; foldbranch.method.continuation=dde_set_options(foldbranch.method.continuation,pass_on,'pass_on'); foldbranch.method.point=dde_set_options(foldbranch.method.point,pass_on,'pass_on'); foldbranch.method.stability=dde_set_options(foldbranch.method.stability,pass_on,'pass_on'); if isempty(options.contpar) % if no continuation parameters are given use free parameters of branch foldbranch.parameter.free=branch.parameter.free; elseif length(options.contpar)==1; % if single continuation parameter is given prepend to free parameters of branch foldbranch.parameter.free=[options.contpar,branch.parameter.free]; else foldbranch.parameter.free=options.contpar(:)'; end foldbranch.parameter=dde_set_options(foldbranch.parameter,pass_on,'pass_on'); point=branch.point(ind); if ~isfield(point,'stability') point.stability=p_stabil(funcs,point,branch.method.stability); end
set up functions of extended system
create initial guess for correction
foldini0=p_tofold(funcs,point);
correct and add 2nd point if desired
[foldbranch,suc]=correct_ini(funcs,foldbranch,foldini0,...
options.dir,options.step,options.correc);
end