<< Click to Display Table of Contents >> Navigation: User DLLs > Add-In DLLs > Extra DLLs > Secant Iteration Move (dcu_iter_move_secant.dll) |
The purpose of this module is to provide faster routines than the Iteration Move for convergence of translational or rotational iterations. The Secant is converging 1.6 times faster than Bracket, if it converges, but may not converge. The Bracket method is robust but the slowest of the four methods. Sometimes it is not easy to find the initial two points.
Within this module: Bracketed Secant (Iter Move Better Bracket Secant) Better Bracket (Iter Move Better Bracket)
|
This routine uses the secant method to determine the next step size for each iteration.
Here is what the Secant method does: 1.Start with any two numbers ( x1 and x2 ) and calculate f(x1) and f(x2). 2.Make a line between two points (x1, f(x1)) and (x2 f(x2)), and find x3 at which the line intersects with the x-axis. 3.Calculate f(x3) and make a line between two points (x2 f(x2)) and (x3, f(x3)), and find x4 at which the line intersects with the x-axis. 4.Repeat until the difference between Xn and Xn-1 is small enough.
Input •If rotating, add a Target Feature. This will be the center of rotation. No Target Feature is required if translating. •Enter "1" for the Dir. No then set the vector for the direction of translation or axis of rotation about the center point. •Add a component to the Move Parts list. •In the move Options, set: oIterations: Set the maximum number of iteration loops oInterference: Select the Measure that will be used in the loop. The Move will stop iterating when the Measure is within the specified limits. oSearch Accuracy: Set the minimum value that the step size will be reduced to before the Move stops iterating •In MoreIn Values under More, add 3 Constant values: oConstant #1: 0 for translation or 1 for rotation oConstant #2: Initial iteration step size oConstant #3: Max Move Num - the number of Moves after the User DLL Move to be included in the loop and performed in each loop iteration. It does not include the User DLL Move itself.
Note: Because this routine uses the secant method, it is possible that the solution does not converge. If this happens, try one of the other routines. |
Bracketed Secant (Iter Move Better Bracket Secant)
This routine uses the bisection method (Bracket) to first bracket the solution then uses the Secant method to determine the next step size for each iteration.
Input •If rotating, add a Target Feature. This will be the center of rotation. No Target Feature is required if translating. •Enter "1" for the Dir. No then set the vector for the direction of translation or axis of rotation about the center point. •Add a component to the Move Parts list. •In the move Options, set: oIterations: Set the maximum number of iteration loops oInterference: Select the Measure that will be used in the loop. The Move will stop iterating when the Measure is within the specified limits. oSearch Accuracy: Set the minimum value that the step size will be reduced to before the Move stops iterating •In MoreIn Values under More, add 3 Constant values: oConstant #1: 0 for translation or 1 for rotation oConstant #2: Initial iteration step size oConstant #3: Max Move Num - the number of Moves after the User DLL Move to be included in the loop and performed in each loop iteration. It does not include the User DLL Move itself.
Note: Because this routine uses the secant method, it is possible that the solution does not converge. If this happens, try one of the other routines. |
Better Bracket (Iter Move Better Bracket)
This routine uses the bisection (Bracket) method.
The Bracket method is using the bisection method to find a root for a continuous function (determine the next step size for each iteration). This is what it does: 1.Two numbers (x1 and x2) have to be found to make sure f(x1) and f(x2) have a different sign. -- This step is like bracketing the root which means the root is somewhere in the middle, between x1 and x2. 2.Calculate the middle point x3 = (x1+x2)/2, and f(x3). 3.Examine the sign of f(x3) and replace either(x1, f(x1)) or (x2, f(x2)) with (x3, f(x3)), so that there is a zero crossing within the new interval either [x1, x3] or [x2, x3]. 4.Repeat until the difference between Xn and Xn-1 (Xn-2) is small enough or f(Xn) is small enough.
Input •If rotating, add a Target Feature. This will be the center of rotation. No Target Feature is required if translating. •Enter "1" for the Dir. No then set the vector for the direction of translation or axis of rotation about the center point. •Add a component to the Move Parts list. •In the move Options, set: oIterations: Set the maximum number of iteration loops oInterference: Select the Measure that will be used in the loop. The Move will stop iterating when the Measure is within the specified limits. oSearch Accuracy: Set the minimum value that the step size will be reduced to before the Move stops iterating •In MoreIn Values under More, add 3 Constant values: oConstant #1: 0 for translation or 1 for rotation oConstant #2: Initial iteration step size oConstant #3: Max Move Num - the number of Moves after the User DLL Move to be included in the loop and performed in each loop iteration. It does not include the User DLL Move itself. |
This is the same as using the Iteration Move. It was included here for testing purposes but can also be used for modeling.
Input •If rotating, add a Target Feature. This will be the center of rotation. No Target Feature is required if translating. •Enter "1" for the Dir. No then set the vector for the direction of translation or axis of rotation about the center point. •Add a component to the Move Parts list. •In the move Options, set: oIterations: Set the maximum number of iteration loops oInterference: Select the Measure that will be used in the loop. The Move will stop iterating when the Measure is within the specified limits. oSearch Accuracy: Set the minimum value that the step size will be reduced to before the Move stops iterating •In MoreIn Values under More, add 3 Constant values: oConstant #1: 0 for translation or 1 for rotation oConstant #2: Initial iteration step size oConstant #3: Max Move Num - the number of Moves after the User DLL Move to be included in the loop and performed in each loop iteration. It does not include the User DLL Move itself. |
See also: Iteration Move