> |
#Definition of a Procedure in Maple:
hello := proc() |
![`:=`(hello, proc () print(](maple-images2/Maple_Programming_Intro_1.gif) |
(1) |
![Hello World](maple-images2/Maple_Programming_Intro_2.gif) |
(2) |
> |
local a; #a will be a local variable inside the procedure |
![`:=`(f, proc (x) local a; `:=`(a, `/`(1, 3)); evalf(`*`(x, `*`(a))) end proc)](maple-images2/Maple_Programming_Intro_3.gif) |
(3) |
![1.666666667](maple-images2/Maple_Programming_Intro_4.gif) |
(4) |
Error, invalid input: f uses a 1st argument, x, which is missing
|
|
> |
#Types in Maple:
whattype(a); |
![symbol](maple-images2/Maple_Programming_Intro_5.gif) |
(5) |
> |
whattype(2);
g:= x->x^2;
whattype(g); |
![integer](maple-images2/Maple_Programming_Intro_6.gif) |
(6) |
![`:=`(g, proc (x) options operator, arrow; `*`(`^`(x, 2)) end proc)](maple-images2/Maple_Programming_Intro_7.gif) |
(6) |
![symbol](maple-images2/Maple_Programming_Intro_8.gif) |
(6) |
![float](maple-images2/Maple_Programming_Intro_9.gif) |
(7) |
![complex(extended_numeric)](maple-images2/Maple_Programming_Intro_10.gif) |
(8) |
![function](maple-images2/Maple_Programming_Intro_11.gif) |
(9) |
![list](maple-images2/Maple_Programming_Intro_12.gif) |
(10) |
![This is a string](maple-images2/Maple_Programming_Intro_13.gif) |
(11) |
![string](maple-images2/Maple_Programming_Intro_14.gif) |
(12) |
> |
s:="sin(2.1)+cos(5.1)"; |
![`:=`(s,](maple-images2/Maple_Programming_Intro_15.gif) |
(13) |
![sin(2.1)+cos(5.1)](maple-images2/Maple_Programming_Intro_16.gif) |
(14) |
![`+`(sin(2.1), cos(5.1))](maple-images2/Maple_Programming_Intro_17.gif) |
(15) |
![1.241187109](maple-images2/Maple_Programming_Intro_18.gif) |
(16) |
![sin(2.1)+cos(5.1)](maple-images2/Maple_Programming_Intro_19.gif) |
(17) |
![set](maple-images2/Maple_Programming_Intro_20.gif) |
(18) |
![3](maple-images2/Maple_Programming_Intro_21.gif) |
(19) |
![`+`](maple-images2/Maple_Programming_Intro_22.gif) |
(20) |
> |
whattype(1..10);
myset:=[seq(1..5,0.5)]; |
![`..`](maple-images2/Maple_Programming_Intro_23.gif) |
(21) |
![`:=`(myset, [1, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0])](maple-images2/Maple_Programming_Intro_24.gif) |
(21) |
> |
whattype(myset);
nops(myset); #nops returns the number of operands, in this case operands are members of the list
e:= a > b; |
![list](maple-images2/Maple_Programming_Intro_25.gif) |
(22) |
![9](maple-images2/Maple_Programming_Intro_26.gif) |
(22) |
![`:=`(e, `<`(b, a))](maple-images2/Maple_Programming_Intro_27.gif) |
(22) |
![`:=`(a, 1)](maple-images2/Maple_Programming_Intro_28.gif) |
(23) |
![`:=`(b, 2)](maple-images2/Maple_Programming_Intro_29.gif) |
(24) |
![`<`](maple-images2/Maple_Programming_Intro_30.gif) |
(25) |
![false](maple-images2/Maple_Programming_Intro_31.gif) |
(26) |
![`:=`(f, factorial(n))](maple-images2/Maple_Programming_Intro_32.gif) |
(27) |
![true](maple-images2/Maple_Programming_Intro_33.gif) |
(28) |
> |
op(f); #finds the operant of a expression |
![n](maple-images2/Maple_Programming_Intro_34.gif) |
(29) |
> |
op(0,f); #finds the operator of an expression |
![factorial](maple-images2/Maple_Programming_Intro_35.gif) |
(30) |
![n](maple-images2/Maple_Programming_Intro_36.gif) |
(31) |
![`:=`(z, `+`(x, y))](maple-images2/Maple_Programming_Intro_37.gif) |
(32) |
![false](maple-images2/Maple_Programming_Intro_38.gif) |
(33) |
![x, y](maple-images2/Maple_Programming_Intro_39.gif) |
(34) |
![`+`](maple-images2/Maple_Programming_Intro_40.gif) |
(35) |
![x](maple-images2/Maple_Programming_Intro_41.gif) |
(36) |
![y](maple-images2/Maple_Programming_Intro_42.gif) |
(37) |
![false](maple-images2/Maple_Programming_Intro_43.gif) |
(38) |
![true](maple-images2/Maple_Programming_Intro_44.gif) |
(39) |
![`+`(x, y)](maple-images2/Maple_Programming_Intro_45.gif) |
(40) |
Error, (in unassign) cannot unassign `x+y' (argument must be assignable)
|
|
![z](maple-images2/Maple_Programming_Intro_46.gif) |
(41) |
> |
my_fact := proc(x::integer) |
> |
local i; # 'i' will be a local variable |
> |
local result;
if x > 0 then |
> |
error "Invalid argument"; |
![120](maple-images2/Maple_Programming_Intro_55.gif) |
(43) |
Error, invalid input: my_fact expects its 1st argument, x, to be of type integer, but received 2.1
|
|
Error, (in my_fact) Invalid argument
|
|
> |
fib := proc(x::integer) |
> |
b := 3;
print(a);
print(b);
c := 5; |
> |
c := a + b;
if ( c <= x) then |
> |
print(c);
else
break;
end if; |
![2](maple-images2/Maple_Programming_Intro_67.gif) |
(45) |
![3](maple-images2/Maple_Programming_Intro_68.gif) |
(45) |
![5](maple-images2/Maple_Programming_Intro_69.gif) |
(45) |
![8](maple-images2/Maple_Programming_Intro_70.gif) |
(45) |
![13](maple-images2/Maple_Programming_Intro_71.gif) |
(45) |
![21](maple-images2/Maple_Programming_Intro_72.gif) |
(45) |
![34](maple-images2/Maple_Programming_Intro_73.gif) |
(45) |
![55](maple-images2/Maple_Programming_Intro_74.gif) |
(45) |
![89](maple-images2/Maple_Programming_Intro_75.gif) |
(45) |
> |
#Note that reason we still see 89 is that maple returns the last calculation done in the proc as well |
> |
local i,m :: numerics;
description "finds the maximum of a list of numbers"; |
> |
if nargs=0 then #nargs is the number of arguments |
> |
m:= args[1]; #arguments can be grabbed from args[i] list |
> |
for i from 2 to nargs do |
> |
return m; #explicit return, otherwise maple's procedure will return the value of last statement
end if; |
![`+`(`-`(infinity))](maple-images2/Maple_Programming_Intro_87.gif) |
(47) |
![12](maple-images2/Maple_Programming_Intro_88.gif) |
(48) |
![infinity](maple-images2/Maple_Programming_Intro_89.gif) |
(49) |
Error, (in my_MAX) cannot determine if this expression is true or false: 2 < s
|
|
> |
save my_MAX, "My_Procs.mpl"; #Saves the procedure in a text file |
> |
#Procedure to integrate a given function numerically: |
> |
my_int:=proc(f::operator, N:: integer, xmin::float, xmax::float) |
> |
local x;
local dx;
dx := (xmax-xmin)/(N-1); |
> |
x:=Array([seq(xmin+i*dx,i=0..N-1)]); |
> |
intf:=Array(1..N);
intf[1]:=0; |
> |
intf(i) := intf(i-1) + ( f(x[i])+f(x[i-1]) ) / 2 * dx; |
![`:=`(h, proc (x) options operator, arrow; sin(x) end proc)](maple-images2/Maple_Programming_Intro_118.gif) |
(53) |
> |
intsin:=my_int(h,10000,0.0,evalf(4*Pi,10)); |
![`:=`(intsin, delayCrossProduct)](maple-images2/Maple_Programming_Intro_119.gif) |
(54) |
> |
plot([seq(i*(4*evalf(Pi,10))/9999,i=0..9999)],intsin); |
> |
s:=readline("/home/arman/examples/maple/data.txt"); |
![`:=`(s,](maple-images2/Maple_Programming_Intro_121.gif) |
(55) |
> |
a:=readstat("Enter an integer number:"); |
Enter an integer number: |
5: |
![`:=`(a, 5)](maple-images2/Maple_Programming_Intro_122.gif) |
(56) |
> |
A:=readdata("data.txt",float);
#Reads the first column |
![`:=`(A, [1.0, 2.0, 3.0])](maple-images2/Maple_Programming_Intro_123.gif) |
(57) |
> |
B:=readdata("data.txt",[float,integer]);
#Reads the first two column |
![`:=`(B, [[1.0, 2], [2.0, 5], [3.0, 4]])](maple-images2/Maple_Programming_Intro_124.gif) |
(58) |
> |
C:=readdata("data.txt",[float,integer,float]); |
![`:=`(C, [[1.0, 2, 3.100], [2.0, 5, 4.200], [3.0, 4, 7.120]])](maple-images2/Maple_Programming_Intro_125.gif) |
(59) |
> |
writedata("data2.txt",C,float); |
last update: Wed May 11, 2016