Annotation of OpenXM_contrib/PHC/Ada/Continuation/directions_of_solution_paths.ads, Revision 1.1.1.1
1.1 maekawa 1: with text_io; use text_io;
2: with Standard_Floating_Numbers; use Standard_Floating_Numbers;
3: with Standard_Complex_Numbers; use Standard_Complex_Numbers;
4: with Standard_Floating_Vectors;
5: with Standard_Complex_Vectors;
6: with Standard_Floating_VecVecs; use Standard_Floating_VecVecs;
7:
8: package Directions_of_Solution_Paths is
9:
10: -- DESCRIPTION :
11: -- This package provides some routines to estimate numerically the direction
12: -- of a solution path diverging to a solution of a face system.
13:
14: procedure Affine_Update_Direction
15: ( t,prev_t,target : in Complex_Number;
16: x,prevx : in Standard_Complex_Vectors.Vector;
17: prevdls,prevstep : in out double_float;
18: prevdiff,v : in out Standard_Floating_Vectors.Vector );
19:
20: -- DESCRIPTION :
21: -- Computes an approximation of the direction of the path.
22: -- When prevdls /= 0.0, a second-order extrapolation will be applied.
23:
24: -- ON ENTRY :
25: -- t current value of continuation parameter;
26: -- prev_t previous value of continuation parameter;
27: -- target target value of continuation parameter;
28: -- x current solution vector;
29: -- prevx solution vector for previous value of continuation parameter;
30: -- prevdls previous difference of the logs of distances to target;
31: -- prevstep previous step size;
32: -- prevdiff previous difference of the logs of the solution vectors;
33: -- v current approximate direction of the path.
34:
35: procedure Projective_Update_Direction
36: ( t,prev_t,target : in Complex_Number;
37: x,prevx : in Standard_Complex_Vectors.Vector;
38: prevdls,prevstep : in out double_float;
39: prevdiff,v : in out Standard_Floating_Vectors.Vector );
40:
41: -- DESCRIPTION :
42: -- Does the same as the other procedure, under the assumption that the
43: -- solution vector lies in projective space.
44:
45: -- REQUIRED :
46: -- The homogenization variable is the last element of the solution vector.
47:
48: procedure Affine_Update_Direction
49: ( r,m,estm,cntm : in out natural; thresm : in natural;
50: er : in out integer; t,target : in Complex_Number;
51: x : in Standard_Complex_Vectors.Vector;
52: dt,s,logs : in out Standard_Floating_Vectors.Vector;
53: logx,wvl0,wvl1,wvltmp : in out VecVec;
54: v,diferr : in out Standard_Floating_Vectors.Vector;
55: error : in out double_float );
56:
57: procedure Affine_Update_Direction
58: ( file : in file_type;
59: r,m,estm,cntm : in out natural; thresm : in natural;
60: er : in out integer; t,target : in Complex_Number;
61: x : in Standard_Complex_Vectors.Vector;
62: dt,s,logs : in out Standard_Floating_Vectors.Vector;
63: logx,wvl0,wvl1,wvltmp : in out VecVec;
64: v,diferr : in out Standard_Floating_Vectors.Vector;
65: error : in out double_float );
66:
67: -- DESCRIPTION :
68: -- Higher-order extrapolation method that produces direction with error of
69: -- order (t-target)^r, when the solution path converges to regular solution
70: -- in affine space.
71:
72: -- REQUIRED : s'range = logs'range = logx'range = 0..max,
73: -- wvl'range = 1..max, logx(i)'range = wvl'range(i) = 1..n,
74: -- diferr'range = 0..max, max >= 1, equals maximal order of extrapolator.
75:
76: -- ON ENTRY :
77: -- file to write intermediate data, if not submitted, no output;
78: -- r last meaningful entry in logx and logs;
79: -- m current value for multiplicity;
80: -- estm current estimate for multiplicity;
81: -- cntm number of consecutive times estm has been guessed;
82: -- thresm threshold for changing the m to estm;
83: -- er order of extrapolator on the errors;
84: -- t current value of continuation parameter;
85: -- target target value of continuation parameter;
86: -- x current solution for t;
87: -- dt consecutive distances of t-values to target value;
88: -- s consecutive s-values, with proper value for m;
89: -- logs logarithms of previous values (target - t);
90: -- logx logarithms of previous solution vectors;
91: -- wvl0 previous consecutive estimates for direction;
92: -- wvl1 current consecutive estimates for direction;
93: -- wvltmp work space for updating wvl0 and wvl1.
94:
95: -- ON RETURN :
96: -- r if r < logs'last, then r will be raised by one,
97: -- otherwise r remains unchanged;
98: -- s updated distance vector;
99: -- logs updated vector of logarithms of distances to target;
100: -- logx updated vector of solution vectors;
101: -- wvl0 updated previous consecutive estimates, equals wvl1;
102: -- wvl1 updated current consecutive estimates for direction;
103: -- v estimated direction of path;
104: -- diferr norms of consecutive differences of estimates for v;
105: -- error norm of errorv;
106:
107: procedure Projective_Update_Direction
108: ( r,m,estm,cntm : in out natural; thresm : in natural;
109: er : in out integer; t,target : in Complex_Number;
110: x : in Standard_Complex_Vectors.Vector;
111: dt,s,logs : in out Standard_Floating_Vectors.Vector;
112: logx : in out VecVec;
113: prevv,v : in out Standard_Floating_Vectors.Vector;
114: error : in out double_float );
115:
116: procedure Projective_Update_Direction
117: ( file : in file_type;
118: r,m,estm,cntm : in out natural; thresm : in natural;
119: er : in out integer; t,target : in Complex_Number;
120: x : in Standard_Complex_Vectors.Vector;
121: dt,s,logs : in out Standard_Floating_Vectors.Vector;
122: logx : in out VecVec;
123: prevv,v : in out Standard_Floating_Vectors.Vector;
124: error : in out double_float );
125:
126: -- DESCRIPTION :
127: -- Higher-order extrapolation method that produces direction with error of
128: -- order (t-target)^r, when the solution path converges to regular solution
129: -- in affine space.
130:
131: -- REQUIRED :
132: -- x(x'last) contains value of variable introduced to homogenize the system.
133:
134: end Directions_of_Solution_Paths;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>