next up previous contents
Next: Ordering a list of Up: Utilities procedures of ALIAS-Maple Previous: Multiple occurrences of variables:   Contents


Mathematical functions in an expression

The procedure Math_Func allows one to obtain a list of mathematical functions (in the Maple sense) and of their power in a given expression. For example

Math_Func([(sin(x)^2+cos(x)^3)/x+sin(x)^2*cos(x)^3+1/sin(x)^2])
returns in the global variable ALIAS_MATH_FUNC the list
                                3        2     1
                          [cos(x) , sin(x) , -------]
                                                   2
                                             sin(x)
If these terms appears more than once in the expression the MakeF procedure (see section 2.1.1) will generate a code where they are evaluated for each occurrence, which is costly. The ALIAS_FSIMPLIFY mechanism described in the MakeF section may be used to evaluate only once these expressions and substitute them by interval when calculating the interval evaluation. The end-user write its own ALIAS_FSIMPLIFY procedure but the result of Math_Func may be used to write such a procedure. A typical ALIAS_FSIMPLIFY using this functionality is as follows:
 
ALIAS_FSIMPLIFY:=proc(fid,expr)
local aux,ai:
if type(expr,string) then
   fprintf(fid,"INTERVAL_VECTOR ALIAS_S(%d);\n",nops(ALIAS_MATH_FUNC)):
   for ai from 1 to nops(ALIAS_MATH_FUNC) do
       aux:=Convert_Frac_Cons(Code(ALIAS_MATH_FUNC[ai],[x,y,z,w])):
       fprintf(fid,"ALIAS_S(%d)=%s;\n",ai,aux):
   od:
RETURN(0):
fi:
aux:=expr:
for ai from 1 to nops(ALIAS_MATH_FUNC) do
   aux:=subs(ALIAS_MATH_FUNC[ai]=ALIAS_S(ai),aux):
od:
RETURN(aux):
end:
Note the use of the Code procedure to convert the expression into an interval equivalent.



Jean-Pierre Merlet 2012-12-20