> expr := x^3+3*x^2-x+1;
> f := x-> x^2+2*x-6;Below is how NOT to enter a function:
> f(x) := x^2+2*x-6;The difference between expressions and functions are first the obvious, that expressions do not have to satisfy the definition of a function in the sense that for each input , there is a unique value . A function may be defined as an expression, but not all expressions can be defined as functions. The differences in Maple are numerous as you will see below when we evaluate the expression or function for a given value as well as when using the plot command.
> subs(x=2,expr); > eval(expr,x=2); > r:=sin(theta) + 8*theta^2; > subs(theta=Pi/2,r);In the subs command, the first argument tells Maple what you would like to substitute in for . The second argument tells Maple what expression you are substituting into. Note the difference in outputs when a whole number or fraction is entered compared to a decimal.
>g:=2*x/3; >subs(x=4,g); >eval(g,x=1/2); >subs(x=4.0,g);The evalf command is used when we want Maple to output the answer in decimal form. If this command is not used, the output to your Maple commands will be calculated analytically, where as the evalf command forces Maple to calculate the answers numerically. The evalf command has one essential argument, however a second argument can be added in order to tell how many digits we want to be in the answer as shown below. >evalf(eval(expr,x=Pi)); >evalf(eval(expr,x=Pi),20); In Maple, functions are much easier to evaluate than expressions. In order to evaluate the function at , simply type
> f(2);
> g := 9*x^2-14; > h:=-x^2; > plot([g,h],x=-2..2); > solve(g=h,x);The plot shows that there are two intersection points and the solve command finds both values.It is good to get into the habit of naming your output so you can use it in a later command. Giving the values a name makes it easy to plug them into the function to find the values.
> ip:=solve(g=h,x);Since there are two values called , use [ ] to call up the one you want.
> eval(g,x=ip[1]); > eval(h,x=ip[2]);Therefore the two intersection points are and . This seems like the answer shown on the graph.
> j:=x->2*x^3-15*x^2-2*x+5; > k:=x->-50; > plot([j(x),k(x)],x=-3..8);The graph shows there should be three answers.
> solve(j(x)=k(x),x);That is some scary output! So instead of using the algebraic solve try the numerical fsolve.
> fsolve(j(x)=k(x),x);
> f:=theta->-1/2*theta+sin(theta); > plot(f(theta),theta=-8*Pi..8*Pi); > solve(f(theta)=0,theta);Wow, what is that?!?! We know from the graph that there should be three answers and solve wasn't a great option so try fsolve again.
> fsolve(f(theta)=0,theta);Where are the other two answers!? This is actually how fsolve usually works. It shoots for one answer and only gives that one. But you can tell fsolve where to look by getting an idea from the graph and typing that domain into the fsolve command.
> a:=fsolve(f(theta)=0,theta=-5..-1); > b:=fsolve(f(theta)=0,theta=-1..1); > c:=fsolve(f(theta)=0,theta=1..5);To find the values just plug in the names of the values.
> f(a); > f(b); > f(c);(Of course the y-values are zero!)
> with(plots): > f:=(x,y)->x^2+y^2; > plot3d(f(x,y),x=-5..5,y=-5..5); > f(2,1); > surf:=x^2+y^2+z^2=9; > with(plots): > implicitplot3d(surf,x=-5..5,y=-5..5,z=-5..5); > solve(eval(surf,{x=2,y=1}),z);