Maple Questions and Posts

These are Posts and Questions associated with the product, Maple

The question of colorbars for plots comes up now and then.

One particular theme involves creating an associated 2D plot as the colorbar, using the data within the given 3D plot. But the issue arises of how to easily display the pair together. I'll mention that Maple 2015.1 (the point-release update) provides quite a simple way to accomplish the display of a 3D plot and an associated 2D colorbar side-by-side.

I'm just going to use the example of the latest Question on this topic. There are two parts to here. The first part involves creating a suitable colorbar as a 2D plot, based on the data in the given 3D plot. The second part involves displaying both together.

Here's the 3D plot used for motivating example, for which in this initial experiment I'll apply shading by using the z-value for hue shading. There are a few ways to do that, and a more complete treatment of the first part below would be to detect the shading scheme and compute the colorbar appropriately.

Some of the code below requires update release Maple 2015.1 in order to work. The colors look much better in the actual Maple Standard GUI than they do in this mapleprimes post (rendered by MapleNet).

f := 1.7+1.3*r^2-7.9*r^4+16*r^6:

P := plot3d([r, theta, f],
            r=0..1, theta=0..2*Pi, coords=cylindrical,
            color=[f,1,1,colortype=HSV]):

P;

 

Now for the first part. I'll construct two variants, one for a vertical colorbar and one for a horizontal colorbar.

I'll use the minimal and maximal z-values in the data of 3D plot P. This is one of several aspects that needs to be handled according to what's actually inside the 3D plot's data structure.

zmin,zmax := [min,max](op([1,1],P)[..,..,3])[]:

verthuebar := plots:-densityplot(z, dummy=0..1, z=zmin..zmax, grid=[2,49],
                                 size=[90,260], colorstyle=HUE,
                                 style=surface, axes=frame, labels=[``,``],
                                 axis[1]=[tickmarks=[]]):

horizhuebar := plots:-densityplot(z, z=zmin..zmax, dummy=0..1, grid=[49,2],
                                  size=[300,90], colorstyle=HUE,
                                  style=surface, axes=frame, labels=[``,``],
                                  axis[2]=[tickmarks=[]]):

Now we can approach the second part, to display the 3D plot and its colorbar together.

An idea which is quite old is to use a GUI Table for this. Before Maple 2015 that could be done by calling plots:-display on an Array containing the plots. But that involves manual interation to fix it up to look nice: the Table occupies the full width of the worksheet's window and must be resized with the mouse cursor, the relative widths of the columns are not right and must be manually adjusted, the Table borders are all visible and (if unwanted) must be hidden using context-menu changes on the Table, etc. And also the rendering of 2D plots in the display of the generated _PLOTARRAY doesn't respect the size option if applied when creating 2D plots.

I initially thought that I'd have to use several of the commands for programmatic content generation (new in Maple 2015) to build the GUI Table. But in the point-release Maple 2015.1 the size option on 2D plots is respected when using the DocumentTools:-Tabulate command (also new to Maple 2015). So the insertion and display is now possible with that single command.

DocumentTools:-Tabulate([P,verthuebar],
                        exterior=none, interior=none,
                        weights=[100,25], widthmode=pixels, width=420);

 

 

 

DocumentTools:-Tabulate([[P],[horizhuebar]],
                        exterior=none, interior=none);

 

 

 

We may also with to restrict the view, vertically, and have the colorbar match the shades that are displayed.

DocumentTools:-Tabulate([plots:-display(P,view=2..5),
                         plots:-display(verthuebar,view=2..5)],
                        exterior=none, interior=none,
                        weights=[100,25], widthmode=pixels, width=420);

 

 

 

DocumentTools:-Tabulate([[plots:-display(P,view=2..5)],
                         [plots:-display(horizhuebar,view=[2..5,default])]],
                        exterior=none, interior=none);

 

 

 

I'd like to wrap both parts into either one or two procedures, and hopefully I'd find time to do that and post here as a followup comment.

Apart from considerations such as handling various kinds of 3D plot data (GRID vs MESH, etc, in the data structure) there are also the matters of detecting a view (VIEW) if specified when creating the 3D plot, handling custom shading schemes, and so on. And then there's the matter of what to do when multiple 3D surfaces (plots) have been merged together.

It's also possible that the construction of the 2D plot colorbar is the only part which requires decent programming as a procedure with special options. The Tabulate command already offers options to specify the placement, column weighting, Table borders, etc. Perhaps it's not necessary to roll both parts into a single command.

3dhuecolorbarA.mw

acer

hi,

 

I am trying to implement some data-intensive algorithms like: comuting similarity scores, clustering etc. How efficient Maple is in doing these operations? I mean is it comparable to MATLAB in these operations? What toolboxes are useful in these? I am trying to build a recommender system.

 

I am using Maple18 and not sure if Maple has any advantage in implementing these type of algorithms over MATALB??

 

thanks

siba

Please consider this code:

restart;

with(DEtools):

test:=(diff(x(t),t,t))+(diff(a(t),t,t))=0;

FirstOrderSys := convertsys(test, [], x(t), t, y, yp );

When it is executed Maple says: Error, (in is/internal) too many levels of recursion

Now if i change just the letter a to, say, p (a(t)->p(t)) like this:

restart;

with(DEtools):

test:=(diff(x(t),t,t))+(diff(p(t),t,t))=0;

FirstOrderSys := convertsys(test, [], x(t), t, y, yp );

Lo and Behold! Suddenly Maple gives the answer:

/ d / d \\ / d / d \\ |--- |--- x(t)|| + |--- |--- p(t)|| = 0 \ dt \ dt // \ dt \ dt // [[ d / d \] [[yp[1] = y[2], yp[2] = ---- |--- p(t)|], [[ dt \ dt /] [ d ] ] [y[1] = x(t), y[2] = --- x(t)], undefined, []] [ dt ] ]

Why is that so? I don't see how one letter makes this difference. I have learned Maple on my own, so maybe I have missed something?

Please, i need help USING ODE1 and ODE2 with given BCS and Pr=0.714

it is needed to to generates   

                   [-0.2], [0.51553], [0.4000]
                  [-0.1], [0.57000], [0.4371]
                   [0.], [0.62756], [0.4764]
                  [0.1], [0.68811], [0.5176]
                  [0.2], [0.75153], [0.5609]

but it is generarting

                  [-0.2], [0.51553], [0.42342]
                  [-0.1], [0.57000], [0.46114]
                   [0.], [0.62756], [0.50088]
                  [0.1], [0.68811], [0.54261]
                  [0.2], [0.75153], [0.58628]

the values of D(theata)(0) is wrong. Please i need HELP. this the code below that i use:
>restart;
>with (plots):ode1:=diff(f(eta),eta,eta,eta)+f(eta)*diff(f(eta),eta,eta)-M*diff(f(eta),eta)=0:

>ode2:=diff(theta(eta),eta,eta)+Pr*f(eta)*diff(theta(eta),eta)=0:

>bcs1:= f(0)=w,D(f)(0)=1,D(f)(10)=0:
>bcs2theta(10)=0,theta(0)=1:
>fixedparameter1:=[M=0.0]:
>ode3:=eval(ode1,fixedparameter1):
>fixedparameter2:=[Pr=0.714]:
>ode4:=eval(ode2,fixedparameter2):

>G:=[-0.2,-0.1,0.0,0.1,0.2]:
>for ode3 and ode4:
  for k from 1 to 5 do
  sol_All:=dsolve(eval({ode3,ode4,bcs1},w=G[k]),    [f(eta),theta(eta)],numeric,output=listprocedure);
Y_sol||k:= -rhs(sol_All[4]);
YP_sol||k:=-rhs(sol_All[6]);
end do:
>Digits:=5:

>for k from 1 to 5 do
evalf([G[k]]),evalf([(Y_sol||k(0))]),evalf([YP_sol||k(0)]);    
od;
                  [-0.2], [0.51553], [0.42342]
                  [-0.1], [0.57000], [0.46114]
                   [0.], [0.62756], [0.50088]
                  [0.1], [0.68811], [0.54261]
                  [0.2], [0.75153], [0.58628]

Hi all.

I am using Maple2015.

I typed in as input y=x/sqrt(1-x^2).

I hit enter.  The output is:

 y=x/sqrt(1-x^2)

I know the 2 answers are equivalent.

My question is why did Maple swap 1-x^2 to -x^2+1???

Any advice to swap it back would be greatly appreciated.

How to find asymptotic behaviour of a function.

For example at infinity

sinh(x) behaves as 1/2*exp(x)

1/sinh(x)  behaves as 2*exp(-x)

exp(-x)*(exp(-x)+1) behaves as exp(-x)

so that it works with a more complex expression.

when solving a system of equations, I want to get rid of all the absolute functions.

 

for example, |y-2|=x,I don't want maple solve this equation directly...because maple may has difficulties when dealing with absolute values. Instead, I want to transform this equation by squaring the both sides at the same time which end up this equation: (y-2)^2=x^2.

 

The example I provide is kind of simple...what if there are multiple absolute term in the equations? Is there a general way to get what I need? Or Is it practical to use Maple to achive such thing?

 

thanks in advance.

I wanted to let everyone know that there is a Maple 2015 update available. Maple 2015.1 provides:

  • Support for high-resolution monitors (e.g. 4K, UHD)
  • Updated translations for Brazilian Portuguese, French, Japanese, and Simplified Chinese
  • Enhancements to the Explore command
  • Improvements to the DataSets package
  • Updates to the Microsoft Excel plug-in
  • Enhancements to unit handling
  • A variety of improvements to the math engine, interface, and documentation

To get this update, you can use Tools>Check for Updates from within Maple, or visit Maple 2015.1 Downloads.

If you are a MapleSim 2015 user, you already have this update, as it was part of the MapleSim 2015 installation.

Kim

Hello Everyone

I have an expression which I wish to integrate. I would be grateful if you could please help me with it. I have uploaded the maple file for your refrence.

Thanks a lot for your time.

 

 

IntegrationExample.mw

 

restart;
pp:=-55471918776960000*tanh((1/3220)*sqrt(10368400-cp^2)*Pi*x/cp)+5350094400*tanh((1/3220)*sqrt(10368400-cp^2)*Pi*x/cp)*cp^2-129*tanh((1/3220)*sqrt(10368400-cp^2)*Pi*x/cp)*cp^4+2670899840*tanh((1/6450)*sqrt(41602500-cp^2)*Pi*x/cp)*sqrt(41602500-cp^2)*sqrt(10368400-cp^2);
Student[Calculus1]:-Roots(subs(x=8000,pp),cp=1..3220,numeric);
p1:=proc(v)
option hfloat;
local a;
a:=Student[Calculus1]:-Roots(subs(x=v,pp),cp=1..3220,numeric);
if nops(a)>=1 then seq([v,a[i]],i=1..nops(a));
end if;
end proc:
SS1:=[seq(p1(i),i=3500..20000,200)]:
plot(SS1,style=point,gridlines);

The final figure is different between maple12 and maple17.

On 17, unwanted points apprear.

is it a bug?

Dear Colleges

I have a problem with the following code. As you can see, procedure Q1 converges but I couldn't get the resutls from Q2.

I would be most grateful if you could help me on this problem.

 

Sincerely yours

Amir

 

restart;

Eq1:=diff(f(x),x$3)+diff(f(x),x$2)*f(x)+b^2*sqrt(2*reynolds)*diff(diff(f(x),x$2)^2*x^2,x$1);
Eq2:=diff(g(x),x$3)+diff(g(x),x$2)*g(x)+c*a^2*sqrt(2*reynolds)*diff(diff(g(x),x$2)^2*x,x$1);
eq1:=isolate(Eq1,diff(f(x),x,x,x));
eq2:=subs(g=f,isolate(Eq2,diff(g(x),x,x,x)));
EQ:=diff(f(x),x,x,x)=piecewise(x<c*0.1,rhs(eq1),rhs(eq2));
Eq11:=diff(theta(x),x$2)+pr*diff(theta(x),x$1)*f(x)+pr/prt*b^2*sqrt(2*reynolds)*diff(diff(f(x),x$2)*diff(theta(x),x$1)*x^2,x$1);
Eq22:=diff(g(x),x$2)+pr*diff(g(x),x$1)*f(x)+pr/prt*a^2*c*sqrt(2*reynolds)*diff(diff(f(x),x$2)*diff(g(x),x$1)*x^1,x$1);
eq11:=isolate(Eq11,diff(theta(x),x,x));
eq22:=subs(g=theta,isolate(Eq22,diff(g(x),x,x)));
EQT:=diff(theta(x),x,x)=piecewise(x<c*0.1,rhs(eq11),rhs(eq22));
EQT1a:=eval(EQT,EQ):
EQT2:=eval(EQT1a,{f(x)=G0(x),diff(f(x),x)=G1(x),diff(f(x),x,x)=G2(x)}):
bd:=c;
a:=0.13:
b:=0.41:
pr:=1;
prt:=0.86;
reynolds:=12734151.135786774055543653356602;     #10^6;   #1.125*10^8:

c:=88.419896050808975395120916434619:
;
Q:=proc(pp2) local res,F0,F1,F2;
print(pp2);
if not type(pp2,numeric) then return 'procname(_passed)' end if:
res:=dsolve({EQ,f(0)=0,D(f)(0)=0,(D@@2)(f)(0)=pp2},numeric,output=listprocedure);
F0,F1,F2:=op(subs(subs(res),[f(x),diff(f(x),x),diff(f(x),x,x)])):
F1(bd)-1;
end proc;
fsolve(Q(pp2)=0,pp2=(0..1002));
se:=%;
res2:=dsolve({EQ,f(0)=0,D(f)(0)=0,(D@@2)(f)(0)=se},numeric,output=listprocedure):
G0,G1,G2:=op(subs(subs(res2),[f(x),diff(f(x),x),diff(f(x),x,x)])):
plots:-odeplot(res2,[seq([x,diff(f(x),[x$i])],i=1..1)],0..c);



Q2:=proc(rr2) local solT,T0,T1;
print(rr2);
if not type(rr2,numeric) then return 'procname(_passed)' end if:
solT:=dsolve({EQT2,theta(0)=1,D(theta)(0)=-rr2},numeric,known=[G0,G1,G2],output=listprocedure):
T0,T1:=op(subs(subs(res),[theta(x),diff(theta(x),x)])):
T0(bd);
end proc;
fsolve(Q2(rr2)=0,rr2=(0..100));


shib:=%;
sol:=dsolve({EQT2,theta(0)=1,D(theta)(0)=-shib},numeric,known=[G0,G1,G2],output=listprocedure):
plots:-odeplot(sol,[x,theta(x)],0..c);
#fsolve(Q2(pp3)=0,pp3=-2..2):

Amir

could you help me about maple
i try to calculating using chevypade rational approximating and the answer for cos(x) xe is(-.221091073962959*T(1, x-1)+.7710737338*T(0, x-1)-0.4212446689e-1*T(2, x-1))/(0.836360586596837e-1*T(1, x-1)+T(0, x-1)+0.3360079945e-1*T(2, x-1)) i can not to convert to rational form as x^^n .maple is not very friendship
Thanks


> restart;
> with*plots;
> Eq1 := diff(f(eta), eta, eta, eta)+f(eta)*(diff(f(eta), eta, eta))-(diff(f(eta), eta))^2 = 0; 

> N := 1;

> blt := 10;
> Eq2 := (diff(theta(eta), eta, eta))/Pr+f(eta)*(diff(theta(eta), eta)) = 0; 
> bcs1 := f(0) = 0, (D(f))(0) = 1, (D(f))(blt) = 0;
> bcs2 := (D(theta))(0) = -N*(1+theta(0)), theta(blt) = 0;
> L := [2.5, 3, 5, 7, 10];
> for k to 5 do R := dsolve(eval({Eq1, Eq2, bcs1, bcs2}, Pr = L[k]), [f(eta), theta(eta)], numeric, output = listprocedure); X1 || k := rhs(R[3]); X2 || k := rhs(R[4]); Y1 || k := rhs(R[5]); Y2 || k := -rhs(R[6]) end do;

 

 how I will draw the graph for Pr against theta   for Pr=2.5 until 7  taking rest of the parameter fix

 

I wish to evaluate the expression

knowing that

where a is a constant.  It is not hard to see, assuming enough differentiability,  that the expression evaluates to

I know how to do this when all the derivatives are expressed in terms of the diff() operator.  Here it is:

eq := diff(u(x,t),t) = a^2*diff(u(x,t),x,x);
expr := diff(u(x,t),t,t);
eval['recurse'](expr,[eq]);

However, I would prefer to do the computations when all derivatives are expressed in terms of the D operator but cannot get that to work.  What is the trick?

Hello. I have a question. If you can help me, i am pleasure.

Have nice day. :)

 

restart;
soru := proc(n,x)
local top::0;
for x from 2 to n do
top =top+(((x^(2+i))*top)^(1/(n+2-i)));
print(top);
od;
end proc;

 

soru(5,1);

Error, (in soru) illegal use of a formal parameter

First 1262 1263 1264 1265 1266 1267 1268 Last Page 1264 of 2248