# Question:Subprocedures in a main procedure

## Question:Subprocedures in a main procedure

Maple

How to add any/many subprocedure in a mainprocedure?
Somehow the mainprocedure must deliver the input for the mainprocedure

Here is a example

Note: probably can this old procedure be rewritten in modern Maple programming language ?

 > restart;

Code to Find the Max and Min Values in a List A

 > maxmin:=proc(A,maxv::evaln,minv::evaln)
 > local i;
 > maxv:=A[1]; minv:=A[1];
 > for i from 2 to nops(A) do
 > if eval(maxv) < A[i] then maxv:=A[i] end if;
 > if eval(minv) > A[i] then minv:=A[i] end if;
 > end do;
 > RETURN()
 > end proc:
 >

Now we can call the maxmin procedure from a procedure named optimize, which is designed to create the polygonal approximation, use maxmin to find the largest and smallest y-values from among the vertices, and produce some graphic output.

See the documentation in the book.

Code to Approximate the Max and Min Values of a Function  f :

 > optimize:=proc(f,a,b,N,pic::evaln)
 > local X,Y,L,i,A,xmax,xmin;
 > X:=array(0..N);Y:=array(0..N);L:=array(0..N);
 > with(plots,display);
 > for i from 0 to N do
 > X[i]:=evalf(a+i*(b-a)/N);
 > Y[i]:=f(X[i]);
 > L[i]:=plot([[X[i],0],[X[i],Y[i]]],color=black):
 > end do;
 > A:=[seq(Y[i-1],i=1..N+1)];
 > maxmin(A,maxv,minv); # USE OF SECOND PROCEDURE --------------
 > xmax:={};xmin:={};
 > for i from 0 to N do
 > if Y[i]=maxv then xmax:=xmax union {X[i]} end if;
 > if Y[i]=minv then xmin:=xmin union {X[i]} end if;
 > end do; #----------------------------------------------------
 > pic:=display({seq(L[i],i=1..N)}):
 > print(`maximum y value is`,maxv,`and occurs at these x values`,xmax);
 > print(`minimum y value is`,minv,`and occurs at these x values`,xmin);
 > end proc:
 >

Note that you must execute the code that defines maxmin before the procedure optimize will work. This only make sense.

We test the optimize procedure with the following function

 > f:=x->3+10*(-x^2+x^4)*exp(-x^2);
 (1)

on the interval [-1, 4].

 > optimize(f,-1,4,150,pic);
 (2)
 > pic;