ITERATE: Difference between revisions
(Created page with "{{Keyword | 1= <code>ITERATE ( equation, expression, expression, integer )</code> <code>ITERATE (equation list, expression list, expression list, inte...") |
No edit summary |
||
(3 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
| | | | ||
2= | 2= | ||
Iterate an equation of the form <code>[[ | Iterate an equation of the form <code>[[symbol]] = [[expression]]</code> until it converges, that is, the difference between two consecutive values of the variable is less than the limit given as the third parameter. In every iteration step, the value of the variable found in the previous step is inserted into the expression on the right-hand side. | ||
The last parameter gives the maximum number of iterations, in case there is no convergence. | The last parameter gives the maximum number of iterations, in case there is no convergence. | ||
Line 13: | Line 13: | ||
It is highly recommended to set the maximum number of iterations to a very low value when testing new expressions. If for some reason the expression on the right-hand side does not evaluate to a numeric value, then <code>ITERATE</code> can create huge symbolic expressions! | It is highly recommended to set the maximum number of iterations to a very low value when testing new expressions. If for some reason the expression on the right-hand side does not evaluate to a numeric value, then <code>ITERATE</code> can create huge symbolic expressions! | ||
The second form of <code>ITERATE</code> iterates a list of equations that may depend on one another. The result is a vector. | The second form of <code>ITERATE</code> iterates a list of equations that may depend on one another. The result is a vector. If you want to assign this result to the corresponding variables, assign it to a column vector. | ||
| | | | ||
3= | 3= | ||
<code>EXDEF ITERATE(x = cos(x), | <code>EXDEF ITERATE(x = cos(x), 0.5, 0.01, 100)</code> will start iterating with <code>x=0.5</code>. The next value of <code>x</code> will be <code>cos(0.5)</code>. The result of the iteration will be approximately 0.74, since that is the solution of the equation <code>cos(x) - x = 0</code> | ||
<code>EQDEF | <code>EQDEF (stack{x#y}) = ITERATE(x = cos(y);y = cos(x), 1;1, 0.01;0.01, 100)</code> boils down to finding values of <code>x</code> and <code>y</code> where <code>x - cos y = 0</code> and <code>y - cos(x) = 0</code>, that is <code>x/y = cos y/cos x</code>. The resulting value e.g. for <code>x</code> can be accessed with <code>VAL(x)</code>. | ||
|4= | |||
}} | }} | ||
[[Category:Manipulation]] | [[Category:Manipulation]] |
Latest revision as of 19:38, 26 September 2024
Syntax
ITERATE ( equation, expression, expression, integer )
ITERATE (equation list, expression list, expression list, integer )
Implemented in iMath since version 2.2.0 or earlier.
Explanation
Iterate an equation of the form symbol = expression
until it converges, that is, the difference between two consecutive values of the variable is less than the limit given as the third parameter. In every iteration step, the value of the variable found in the previous step is inserted into the expression on the right-hand side.
The last parameter gives the maximum number of iterations, in case there is no convergence.
It is highly recommended to set the maximum number of iterations to a very low value when testing new expressions. If for some reason the expression on the right-hand side does not evaluate to a numeric value, then ITERATE
can create huge symbolic expressions!
The second form of ITERATE
iterates a list of equations that may depend on one another. The result is a vector. If you want to assign this result to the corresponding variables, assign it to a column vector.
Example
EXDEF ITERATE(x = cos(x), 0.5, 0.01, 100)
will start iterating with x=0.5
. The next value of x
will be cos(0.5)
. The result of the iteration will be approximately 0.74, since that is the solution of the equation cos(x) - x = 0
EQDEF (stack{x#y}) = ITERATE(x = cos(y);y = cos(x), 1;1, 0.01;0.01, 100)
boils down to finding values of x
and y
where x - cos y = 0
and y - cos(x) = 0
, that is x/y = cos y/cos x
. The resulting value e.g. for x
can be accessed with VAL(x)
.