janhardo

375 Reputation

8 Badges

10 years, 79 days

MaplePrimes Activity


These are replies submitted by janhardo

Try to make a procedure from two code examples what are doing the same.
Start first with only as procedure input a function, but that seems to be not working.
The procedure input must be a function , but the points where the tangentlines must occur inthe procedure is not understood. ( see task6 )

---------------------------------------------------------------------


 

 

 

------------------------------------------------------------------------------------------------

Seems that task 6 is about drawing tangentlines in graph for 6 points (x0..x5) and dividing the interval a..b in 5 intervals
So the procedure input  must be
procedure ( function,interval a..b)
Did not add the interval a..b in the interval in the procedure and  the tw procedures below are not working yet.

================================================================

Example 2.3 code ..

restart;

with(Student[Calculus1]):

 

f := x -> x^sin(x):
df := D(f):
ddf := D(D(f)):
G := Array(1..6, 1..4):
P := Array(1..6, 1..2):
G[1..6, 1] := <Student:-Calculus1:-Roots(ddf(x), x=0..16, numeric)>:
for i from 1 to 6 do
  G[i, 2] := f(G[i, 1]):
  G[i, 3] := df(G[i, 1]):
  G[i, 4] := G[i,2]+G[i,3]*(x-G[i,1]):
  P[i, 1] := plot(G[i,4], x=G[i,1]-1..G[i,1]+1,
                  colour=red, adaptive=false, numpoints=2):
  P[i, 2] := plots:-pointplot([G[i,1],G[i,2]], symbol=solidcircle,
                              symbolsize=15, color=blue):
end do:
plots:-display(plot(f, 0..16, color=black),
               seq(seq(P[i,j], i=1..6), j=1..2),
               size=[500,300]);

 

 

 

Using this code for making a procedure.
Function input in procedure : as expression or as function ?

Procedurename : InflectionF (function, interval,two points in interval  )

Note: in code above the interval has a fixed value, so a variable intvx=a..b is needed

 

InflectionF := proc(f)
     local df, ddf, G, P, G[1..6, 1], i, j ;
df := D(f):
ddf := D(D(f)):
G := Array(1..6, 1..4):
P := Array(1..6, 1..2):
G[1..6, 1] := <Student:-Calculus1:-Roots(ddf(x), x=0..16, numeric)>:
for i from 1 to 6 do
  G[i, 2] := f(G[i, 1]):
  G[i, 3] := df(G[i, 1]):
  G[i, 4] := G[i,2]+G[i,3]*(x-G[i,1]):
  P[i, 1] := plot(G[i,4], x=G[i,1]-1..G[i,1]+1,
                  colour=red, adaptive=false, numpoints=2):
  P[i, 2] := plots:-pointplot([G[i,1],G[i,2]], symbol=solidcircle,
                              symbolsize=15, color=blue):
end do:
plots:-display(plot(f, 0..16, color=black),
               seq(seq(P[i,j], i=1..6), j=1..2),
               size=[500,300]);
end proc:

Error, `[` unexpected

 

inflectionF(x -> x^sin(x));  

inflectionF(proc (x) options operator, arrow; x^sin(x) end proc)

(1)

 

 

-----------------------------------------------------------------------------------------------------------

Other solution of task .. procedure ?

restart;

with(Student:-Calculus1):
with(plots):

f := x -> x^sin(x);

proc (x) options operator, arrow; x^sin(x) end proc

(2)

df := D(f);

proc (x) options operator, arrow; x^sin(x)*(cos(x)*ln(x)+sin(x)/x) end proc

(3)

ddf := D(D(f));

proc (x) options operator, arrow; x^sin(x)*(cos(x)*ln(x)+sin(x)/x)^2+x^sin(x)*(-sin(x)*ln(x)+2*cos(x)/x-sin(x)/x^2) end proc

(4)

Inflpts := [ fsolve(ddf(x), x=0..16, maxsols=6) ];

[1.395288666, 2.916095859, 7.258616747, 8.576145755, 13.57205647, 14.75675948]

(5)

Q := map(p->[p,f(p)], Inflpts);

[[1.395288666, 1.388167079], [2.916095859, 1.270355627], [7.258616747, 5.161057836], [8.576145755, 5.015577540], [13.57205647, 9.048000408], [14.75675948, 8.947326153]]

(6)

# The tangent lines, using point-slope form
T := seq(plot(df(p)*(x-p)+f(p), x=p-1..p+1), p=Inflpts):

display(FunctionPlot(f(x), x=0.0..16.0, sign=[], slope=[],
                     caption="", pointoptions=[symbolsize=1],
                     concavity=[color(cyan,magenta),filled(coral,wheat)]),
        T,
        pointplot(Q, symbolsize=10, symbol=solidcircle,
                  color=blue, legend="inflection points"),
        axis[1]=[tickmarks=Inflpts], size=[800,400]);

 

 

-----------------------------------------------------------------------

InflectionF := proc(f)
local df, ddf, G, P, Inflpts ;
df := D(f);
ddf := D(D(f));
Inflpts := [ fsolve(ddf(x), x=0..16, maxsols=6) ];
Q := map(p->[p,f(p)], Inflpts);
T := seq(plot(df(p)*(x-p)+f(p), x=p-1..p+1), p=Inflpts):
display(FunctionPlot(f(x), x=0.0..16.0, sign=[], slope=[],
                     caption="", pointoptions=[symbolsize=1],
                     concavity=[color(cyan,magenta),filled(coral,wheat)]),
        T,
        pointplot(Q, symbolsize=10, symbol=solidcircle,
                  color=blue, legend="inflection points"),
        axis[1]=[tickmarks=Inflpts], size=[800,400]);
end proc:

Warning, (in InflectionF) `Q` is implicitly declared local

 

Warning, (in InflectionF) `T` is implicitly declared local

 

inflectionF(x -> x^sin(x));

inflectionF(proc (x) options operator, arrow; x^sin(x) end proc)

(7)

 

 


 

Download betounes_ex_set_2_opg_6.mw

 

@Carl Love 

Thanks

Indeed i am struggling with the loops and try to improve this
Two forms of the do loop 
- for-from loop
- for -in loop

Your loopexample in the SumList procedure seems to be advanced ( don't know r+)
Tried making the factorial procedure, but make no progress yet.

Yes, the simpler loop example for the procedure SumList you mentioned, is for now easier to understand 
The capital S in the  do loop is a remainder that S is the last executed statement ?

@acer 

Thanks 

I found them back the worksheets from Roger Kraft about programming in Maple 

https://www.maplesoft.com/applications/view.aspx?SID=4744

@dharr 

Thanks

Cannot be shorter :)

@Axel Vogt 

Thanks 

Thereis not much to find about this in the book until now  

@Pascal4QM 

Thanks

@Carl Love 

Thanks

The use of the until statement, why to apply in what code context is yet not clear for me

@Axel Vogt 

Thanks

Yes,but is now by using a procedure for a general case..for all N 

@acer 

Thanks

Interesting books for starting for programming and hopefully i can make some progress

It is not my goal to go very deep in the programming skills, because its probably not neccesary and difficult

@rlopez 

Thanks

Yes, i did, but decided to use the book short introduction for now.

@acer 

Thanks

Makes it not easier to learn some programming in Maple (only one edition from 2002) 

I think there is no other book what teaches a introduction in programming in Maple ?

Can't folllow your explanation what is all wrong with this procedure  

Must a variable be declared in a procedure to be local ?, if not they are global ? : assigned outside the scope of the procedure   

 

CD2-6.MWS 

i@Preben Alsholm 

Thanks

The book mathematical computing -An ntroduction to programming using Maple   is way back from 2002 ( don't think there is newer version ? ) 

When i execute the code nothing happens.

 

@acer 

Thanks 

Makes the graphs really looking good with the legenda! 
i did some adjustment to your code in order to follow the task in two parts
 (part1 :draw 5 deratives, part 2: draw f, f' and f'' and reasoning  geometric the 3 graphs)

betounes_ex_set_task_4def_acc_aangepast.mw 

 

Thanks

I chanced at start at options the Output display to Maple input,that's the culprit

its my own fault..forget that i did this

Well,it is solved now 

betounes_ex_set_task_4def.mw


 

 

restart;

with(Student:-Calculus1):
with(plots):

#f := x -> exp(x)^(-x)*sin(x);# wrong

f := x -> exp(-x)*sin(x); intvx:= 0..3;

proc (x) options operator, arrow; exp(-x)*sin(x) end proc

 

0 .. 3

(1)

 

 to be a one-dimensional array for storing the first five deratives

A:=Array(1..5); #functions

Vector[row](5, {(1) = 0, (2) = 0, (3) = 0, (4) = 0, (5) = 0})

(2)

P:=Array(0..5);# plots functions  

 

 

Array(%id = 18446745684388898686)

(3)

i must make a general expression for f and deratives of f

 

F1:=D(f); F2:=D(F1);F(3):=D(F2); ....... using the D operator and a do loop for this would be

 

F:=Array(0..5);
F[0]:=eval(f);
for i from 1 to 5 do
F[i]:=D(F[i-1])
end do;

Array(%id = 18446745684388899766)

 

proc (x) options operator, arrow; exp(-x)*sin(x) end proc

 

proc (x) options operator, arrow; -exp(-x)*sin(x)+exp(-x)*cos(x) end proc

 

proc (x) options operator, arrow; -2*exp(-x)*cos(x) end proc

 

proc (x) options operator, arrow; 2*exp(-x)*cos(x)+2*exp(-x)*sin(x) end proc

 

proc (x) options operator, arrow; -4*exp(-x)*sin(x) end proc

 

proc (x) options operator, arrow; 4*exp(-x)*sin(x)-4*exp(-x)*cos(x) end proc

(4)

 

 

step(2) Graph all functions in one plot and use a array for coloring the graphs ?
Try to find out how to do this....

 

# P[i]:=plot(F[i],intvx):

# P[0]:=plot(f(x),intvx,color=black);

for i from 0 to 5 do
  F[i]:
  P[i]:=plot(F[i],intvx ):
end do:

P[0]:=plot(F[0],intvx,color=black):

with(plots):

display({seq(P[i],i=0..5)}):

 

Task was using an array to assign colors to each function and scaling plots above ?

 

C:=Array(0..5); #color functions

C[0]:=color =red:

Array(%id = 18446745686456624422)

(5)

C[1]:=color =blue:

C:

display({seq(P[i],i=0..1)}):

for i from 0 to 5 do
  F[i]:
  P[i]:=plot(F[i],intvx ):
end do:

 

P[0]:=plot(F[0],intvx,C[0],thickness=3):

P[1]:=plot(F[1],intvx,C[1],thickness=3):

 

Ok got a color red in one plot with a C[1] array element

 

C[0]:=color =red; C[1]:=color =blue; C[2]:=color =green; C[3]:= color =black;C[4]:=color =magenta; C[5]:=color =yellow;

color = red

 

color = blue

 

color = green

 

color = black

 

color = magenta

 

color = yellow

(6)

 

 for i from 0 to 5 do

  P[i]:=plot(F[i],intvx,C[i],thickness=2);
 end do:

 

 

display({seq(P[i],i=0..5)});

 

 

Complicated to get a function and his 5 deratives and all colored different by using array's


 

Download betounes_ex_set_task_4def.mw

First 40 41 42 43 44 45 46 Page 42 of 47