Maple 2020 Questions and Posts

These are Posts and Questions associated with the product, Maple 2020

I want to get data from 2D plots and 3Dplots and want to export to Excel or Matlab.

 

For  2D plots, the following code works. The data can be exported to Excel. No problem.

restart: 

P1:=plot(sin(x));
data1:=op([1,1],P1); 

ExcelTools:-Export(data1, "C:/Users/student/Desktop/XLdat.csv", "Sheet1", "A1");
ExportMatrix("C:/Users/student/Desktop/XLdat.csv", data1); 

 

1. But the following code doesn' t work for exporting the data to Matlab. Why?

restart: P1:=plot(sin(x));
dataMat:=plottools:-getdata(P1);
dataMat2:=convert(dataMat,Matrix):
ExportMatrix( "test.mat",dataMat2, target=Matlab);

 

 

 2. How to write a code in order to get data from the 3D plot and to export to Excel or Matlab?

For example;

restart:
z=sin(x)*cos(y);
P2:=plot3d(z);

 

 

Maple 2020.2

Hello

I am trying to use Grid:-Seq to speed up some calculations.  To this end, I wrote the following procedure:

fun:=proc(model1::list,model2::list,vars::list,conds::set,tlim::numeric)
description "This function returns models with matching structures":
local ans1,ans2,res:=NULL:
if evalb(expand(model1)<>expand(model2)) then
     (ans1,ans2):=UtilsIORelation:-findMatchingStructures(subs(conds,model1),subs(conds,model2),vars,tlim):
     if nops(ans1) > 1 then
        res:=model1:
     end if:
end if:
return(res):
end proc:

I checked if the procedure works by issuing the following command

 

aux:=[seq](fun(modelX[i],model,vars,conds,2),i=1..nops(modelX)):

and it did work. The result is what I needed. 

But when I try it using Grid:-Seq instead of seq, I got the following error message:

infolevel[Grid:-Seq]:=3:
Grid:-Set(fun,findMatchingStructures,'model','vars','conds');
aux:=[Grid:-Seq](fun(modelX[i],model,vars,conds,2),i=1..nops(modelX)):

 

Error, (in fun) findMatchingStructures is not a command in the UtilsIORelation package.

 

What am I missing?   

Many thanks

 

 

 

How I can solve following differential equations.?

I want to plot phase diagrams versus time.

diff(xi[i](t), t) versts t (i=1,2,3,4,5,6)

66.mw

 

 

Hello.

I am currently working on a geometric proof, that cutting a cone can give you an ellipse. I have chosen the 'Dandelin spheres' proof, but i am having trouble plotting a hollow cone containing two solid spheres of different sizes. 

I thought i could maybe define each function, and then just display th surface area of the revolution of the cone, and the volume of revolution of the spheres in the same plotting table. However, this has proven more difficult than i thought.

f(x):=0.5*x

g(x):=sqrt(0.81-(x-2)^2)

h(x):=sqrt(3.57^2-(x-8)^2)

display([VolumeOfRevolution(f(x), x = 0 .. 10, output = plot, scaling = constrained), VolumeOfRevolution(g(x), x = 0 .. 10, output = plot, scaling = constrained), VolumeOfRevolution(h(x), x = 0 .. 10, output = plot, scaling = constrained)])

 

(I am aware that i have plotted the cone function (f(x), straight line) as volume and not surface area of revolution)
 

This does not give me one combined plot, but 3 seperate:(

I hope someone has the time to help!
Thank you

 

Why is a row of a matrix has type Matrix, but a column of a Matrix has type Vector (column vector)

I expected a row of a matrix to also be a Vector (row vector).

restart;
A:=Matrix([[1,2],[3,4]]);
A(1,..);
whattype(%);

A(..,1);
whattype(%);

This might be by design or documented somewhere. But I find it not consistent.  Either both results should be Matrices, or both should be Vectors (the more logical way).

 

Maple 2020.2 on windows 10.

Suppose that we have a excel file as follows:


 


We can import the excel file to Maple as follows:

restart:
ExcelTools:-Import("C:\\Users\\student\\list.xlsx", "Page1");
  • QUESTION 1: How to filter the cell including ".edu" in the column A and how to print them to column B as follows:

 

I am having problems with the code I am trying to write in Maple 2020. I have attached the code in this question. 

I hope someone can help me out.

 

Error, invalid input: rhs received 0, which is not valid for its 1st argument, expr

 

Thanks very much
 

Download EXAMPLE.mw

 

Hello,

When I typ:

> phi; kappa;

It gives symbols φ and K.

I do not want this, I want the words phi and kappa.

How do I turn this off?

 

I understand it has something to do with SYMBOL or a Palette?
I see a Palette left named 'Greek' or 'Trigonometric & Hyperbolic' that have phi in them, but how do I delete a Palette (If that is how I stop these symbols)?


I'm not really good with the software, I just use it for some school work.

Thank you in advance for your help!

Hey

 

Is it possible to draw a slope field for a second order differential equation with initial conditions?

 

Why 3D .eps figures produced by Maple 2020 are often excessively large?

So, it´s a little heavy to the viewer and to compile to PDF.

  • How could we reduce the size without losing any quality? 

eq:= x^2-y^2*z-y*z^2;

plot3d(eq,x=0..1,y=0..1);

memory used=177.9MB, alloc=44.3MB, time=2.29
Picked up JAVA_TOOL_OPTIONS:
Initializing Java runtime environment.
munmap_chunk(): invalid pointer
Error, (in Maplets:-Display) computation interrupted

 

sometimes I have a need to do an assignment inside  operator call `if`(......) . but it is not possible it seems to do this in Maple.

This happens when I am using `if`(...) inside cat() to build a long string, and  depending on some condition, different string is build.  

This works fine in general, until I need to assign new value to a variable at the same time as I am building the string.

An example will make it more clear. Instead of the following

str:="A";
x:=10;

str:=cat(str,`if`(x=10," it was 10","it was not 10"));

if x=10 then
   x:=11;
else
   x:=9;
fi;                         

I'd like to do something like this (which does not work in Maple)

str:="A";
x:=10;
str:=cat(str,`if`(x=10,  x:=11;" it was 10" , x:=9; "it was not 10"))

Tried assign() also. Does not work.  I tried different variation on the above, none works. 

In Mathematica, the above is possible. But this is using standard `If`, which can be inlined

Is it possible to do something like this in Maple? 

The reason is that I do not have to do the checking twice: once to build the string, and once after that is done, in order to do the assignment. It is better if both are done in one place. The above is just an example. I could have more than one `if` inside as I am building the long string. 

Btw, how does one look up help on the operator if and not the statement if ? the help page for if does not talk about it or give any examples.

Maple 2020.2

 

EDİT:
I wrote a procedure in order to add the legends inside plots as follows:

restart:
newlegend:=proc(f::algebraic,g::algebraic,x_left,x_right)
local A,B,location,y_min,y_max,L1,L2,rect,T,F,G:

y_min:=min(minimize(f,x=x_left..x_right),minimize(g,x=x_left..x_right));
y_max:=max(maximize(f,x=x_left..x_right),maximize(g,x=x_left..x_right));
F:=unapply(f,x):
G:=unapply(g,x):
L1, L2:=plottools:-line([x_left,0.9*y_max],[x_left+abs(x_right-x_left)/15,0.9*y_max],color=red), plottools:-line([x_left,0.7*y_max],[x_left+abs(x_right-x_left)/15,0.7*y_max],color=blue):
rect:=plottools:-rectangle([x_left,y_max-abs(y_max-y_min)/3],[x_left+abs(x_left+x_right)/4,y_max],color=cyan);
T:=plots:-textplot([[x_left+abs(x_right-x_left)/9,0.9*y_max,f],[abs(x_left+x_right)/9,0.7*y_max,g]]):
A:=plot(F(x), x=x_left..x_right, style=line, color=red   ):
B:=plot(G(x), x=x_left..x_right, style=line,  color=blue  ):

plots:-display(A, B, L1, L2, T,rect,  scaling=constrained, size=[800,300],axes=boxed);
end proc:
newlegend(sin(x),cos(x),0,2*3.14)

 

Question 1: The lines behind the cyan rectangle seem. How to make the rectangle opaque? 

Question 2:  Could you help me improving the procedure? Because I have bad results for some functions. 

For example;

newlegend(exp(x),x,0,3)

Some Suggestions:

  • If we add an option to change the location of the legends like 'northeast' or 'southwest' etc, it will be a really good procedure.
  • If we add an option to remove the rectangular like "rectangular=off", it will be great.

If you share your valuable ideas and comments, I will be very glad. 

Hi,


I was applying the Grip Map to the procedure LArip. It apparently finished in less than 5 seconds. But when I wanted to display the results as an Array, this step required minutes. How can this time be reduced? Here is a piece of the code:

n := 8;
r := 2^n;
M := Vector(r, randperm(r) + [-seq(1, i = 1 .. r)], datatype = integer[4]);

LArip := proc(k::integer, r::integer, M::Vector(datatype = integer[4]))
local N, j, t, i, A;
N := Vector(r, 0); A := Vector(r, 0);
i := k - 1;
for j from 0 to r - 1 do
for t from 0 to r - 1 do
N[t + 1] := Occurrences(1, Split(Xor(And(t, i), And(M[t + 1], j)))) mod 2;
end do;
A[j + 1] := Occurrences(0, convert(N[], list));
end do;
return convert(A, list);
end proc;

infolevel[Grid:-Map] := 3;
rt := time[real]();
Bb := Grid:-Map(k -> LArip(k, r, M), [$ (1 .. r)]);
GridMapTime := time[real]() - rt;
 

The worksheet is here:

Magma_GridMap.mw

Thank you for your help.

restart;
eq := 61*x^2 + 1 = y^2;
sols := (isolve(eq) assuming (x::posint, y::posint)):
for sol in sols do
  print(subs(_Z1 = 1, sol));
end do;

isolve returns the solution in terms of _Z1, indicating there may be infinite number of solutions?
I think {x = 226153980, y = 1766319049} is the only solution with x::posint, y::posint.

How do I restrict this to only positive integers in the solution?

First 7 8 9 10 11 12 13 Last Page 9 of 48