Maple 2022 Questions and Posts

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

I have plotted in the same display a pointplot and a constant (a horizontal line)..

The worksheet is:

restart;
with(plots);
plot1 := plots[pointplot]([seq([r, 1 - combinat[numbperm](180000, r)/180000^r], r = 1 .. 1000)]);

plot2 := plot(0.25, r = 1 .. 1000);
display({plot1, plot2}, axes = boxed);


How do I solve for when the constant plot2 is less than plot1? I know at r=323 it goes above the threshold, but I don't know how to show this in an expression in Maple, and I've looked for several hours now, both Google search and on Maplesoft with no luck.

If I type seq(i,i=1..1000) <enter> I get a large output.

Then when I type

for i from 1 to 5 do
  i;
end do;

It takes Maple 8 seconds to complete the job.  Is this normal when using Windows 7?

It is easy to simplify the following expression (to 4), but maple's ceil function does not seem to be interested in simplifying it.

where n is greater than or equal to 4. 

simplify(ceil((3*n-8)/(n-3))) assuming n>=4, n::positive # As-is output

We have to rewrite "(3*n-8)/(n-3)" in this form "3 + 1/(n - 3)" to recognize.

simplify(ceil(3 + 1/(n - 3))) assuming  n>=4, n::positive

4

  • My first question is: How to transform (3*n-8)/(n-3) into 3 + 1/(n - 3) by maple?
  • My second question: Can we see the steps of execution of the simplification involving  ceil)?

Don't know if this is a bug or just another proof of my incompetence, but I am struggling in storing values between sessions using DataTable components.

The problem seems to me to be related to nested tables, somehow.

I've made a little example showing the problem.

Quickly explained, you should do 2 runs to see the problem. The first run creates a matrix and a table, and stores the values in a DataTable cell. You shouldn't see any problems there.

Save the document and close it.

Then open the file once again, but just run the 2 commands in chapter 4. You should then see an error message.

My goal is to be able to save a nested variables with its values in a Datatable between sessions. The main variable and many of them below are tables, the last in the branch often string values or numbers with units.

StoreBetweenSessions.mw

I want to make proc that returns expression sequence of two numbers, say. A,B

This will be the normal return, but if the proc encounters an error, it should return FAIL. But this is not possible, because if I type A,B:=foo(0) and foo() happenes to return FAIL then Maple will complain

Error, mismatched multiple assignment of 2 variables on the left side and 1 value on the right side

The three workarounds I see are these

Method 1

I could wrap foo() with try/catch and have foo throw an exception when it encouters an error instead of returning FAIL, but I do not like this. This will look like

restart;
interface(warnlevel=4);
kernelopts('assertlevel'=2):
foo:=proc(n::integer)::integer,integer;
  if n=0 then
     error ("encountered error");
  else
     return 1,2;
  fi;
end proc;

And now the caller will do

try
   A,B:=foo(0);
catch:
   print("encountered error");
end try;

method 2

Another option is to have foo() return ONE value back. In the case of an error it will be FAIL, and in the case of normal behavior, it will be a LIST of the two items, which then I have to extract.  Like this

interface(warnlevel=4);
kernelopts('assertlevel'=2):
foo:=proc(n::integer)::Or(list(integer),identical(FAIL));
      if n=0 then
         return FAIL;
      else
         return [1,2];
      fi;
end proc;

And now the caller will do this

L:=foo(1);
if L<>FAIL then
   A:=L[1];
   B:=L[2];
else
   print("failed call");
fi;

But this is not as easy as just calling foo() as   A,B:=foo() but I can't do this due to the mismatch problem.

Another method, commonly used in C programming is to have the function return status an additional output and this will indicate if the call was success or not. so the caller has to remember to always check for this before using the returned values. These are handled by errno, perror(), strerror(). But for now, lets make the function return the status.

So caller will first check if status is success first and if so, then it will read the actual returned values that follow it. Like this (status is true/false)

method 3

interface(warnlevel=4);
kernelopts('assertlevel'=2):
foo:=proc(n::integer)::truefalse,integer,integer;
  if n=0 then
     return false,0,0;
  else
     return true,1,2;
  fi;
end proc;

And the caller will do

status,A,B:=foo(1);
if status then
   print("call was success, A and B are ",A,B);
else
   print("call failed");
fi;

So the return values will always have status as first argument that the caller has to check before reading the rest of returned values.

From the above three options which you think is best?

Anyone can suggest alternatives to the above methods?

tot := 1:         
for z in 1, x, y, q^2, 3 do    
    tot += z;  
end do:  
tot;

When I run the code above, Maple gives me "Error, unterminated loop".

However, if I change the code to 

tot := 1;
for z in 1, x, y, q^2, 3 do
    tot := tot + z;
end do:
tot;

Maple computes the result correctly.

I don't see how the loop is unterminated. Am I not allowed to use operator assignments in loops?

If I want to get an irreducible polynomial with root sqrt(5) and minimum degree, I can use:

with(PolynomialTools):
MinimalPolynomial(sqrt(5), x)

But what if I want this irreducible polynomial of the minimum degree to have roots in both sqrt(2), sqrt(3), and sqrt(5)? How do I get this polynomial?

ps: The coefficients are all integers

Hi,

I used maple a long time ago. Now I bought it for my hobby projects (helping with online courses), but I noticed two things.

1. My Windows 10 is running in 4K on my screen, but with font scaling, which is not reflected in the Maple GUI. All dialog boxes have disproportionatly tiny fonts. Is there a way to fix this?

 

2. The background is sharp white, which also cannot be changed, and it hurts my eyes, so using Maple will be a challenge.

Is there a way to fix these? Even hacking.

Thanks.

I have a fairly simple worksheet with a 56x2 matrix M1 which I am trying to export to Excel with the following 

ExcelTools:-Export( M1, "C:/Temp/M1.xlsx", 1, "B2")

This causes the following message to appear

After that the program is frozen and totally unresponsive.  The only way to proceed is end the task in Task Manager..

I am trying to upload the worksheet but am not sure if I have succeeded

Download Calculation_of_pH_from_known_values_of_Vb.mwCalculation_of_pH_from_known_values_of_Vb.mw

I'm wondering if there is an equivalent implementation of the Mathematica Cases.

Usually, if I want to find all the occurrences of a specific pattern at any level in my expression I would use 
Cases[<expression>,<pattern>,Infinity]

For example, if I have 
expr = {sin[x]/(sin[2-x]+1)-12,sin[x/2]^2}
Then
Cases[expr,sin[_],Infinity]
will return 
{sin[x],sin[2-x],sin[x/2]}

Is there a way to achieve the same with Maple?

Dear Sir or Madam,

I cannot get a solution from this equation. Can someone show me how to find (a) solution(s) for it?

This is what I look for: The 'height' of a parabola expressed in terms of its arc length and its radius.

Hence, I would love to solve one of these two (equal) expressions:

solve(L = sqrt(a^2 + 4*h^2) + a^2/(2*h)*arcsinh(2*h/a), h)

solve(L = a^2*(h*sqrt(1 + 4*h^2/a^2)/a + 1/2*ln(2*h/a + sqrt(1 + 4*h^2/a^2)))/h, h)

Thank you for trying out !



I created a Github repository with files to reproduce the example that my question is based on.

I am using Grid:-Run to compute a 10000x3 matrix in each of 100 parallel runs. I then average the 100 matrices to obtain a final 10000x3 matrix, which I saved to an .m file.

It contains a variable called with the matrix.

Each row of the matrix is a 3d point, and the entire matrix represents a trajectory on a sphere. I'd like to display an animation of this trajectory. Now, my question is not about how to do this, but rather about the memory requirements necessary to do so.

I can plot trajectories with, say, 1000 points, but apparently 10000 requires too much memory.

The Github repository I linked to contains an example of all of this.

The worksheet matrixTest.mw reads the matrix from the .m file and reads some procedures defined in the .mpl file that are used for creating the animation data.

Then, a call to the procedure animateMatrices basically calls plots:-display to display the matrix as an animation.

I've been able to display the first 5000 rows of the matrix.

What type of memory is running out when I try to display the animation of the full 10000 rows?

Here is a screenshot of my Activity Monitor right before I get the

Error, out of memory error while processing result

I try to find the value of the highest peak by using Optimization. But Maple returns an error with the comment "Error, (in Optimization:-NLPSolve) abs is not differentiable at non-real arguments". How to remove it?

plot.mw

This question is based on the following worksheet I created specifically to show my question: Animation_Test.mw

Unfortunately, MaplePrimes gives me an error when I try to insert the contents here directly.

Basically my question is about the syntax of plots:-display.

I have a sphere

sphereDisplay := plottools:-sphere([0, 0, 0], 1, transparency = 0.9);

and something which is the result of calling plots:display on a sequence of two other other plots:-display.

arrowAndTrailDisplay := plots:-display(seq(plots:-display(computeArrowPlotFrame(m, t, red), computeTrailPlotFrame(m, t, windowSize, red)), t = times), insequence = true)

You can see in the attached worksheet what computeArrowPlotFrame and computeTrailPlotFrame are, but they are basically lists of plot structures. arrowAndTrailDisplay is thus an animation containing two different sequences of frames.

I wish to have Maple plot the sphere and the animation together. This works as expected (a static sphere and the animation of an arrow and a trail of the path of the tip of the arrow)

plots:-display([sphereDisplay, arrowAndTrailDisplay]):

but the following does not work as expected (instead it plots each frame separately)

plots:-display([arrowAndTrailDisplay])

adding insequence=true to the latter makes it work. But my question is why do I have to add that? I can't understand, from syntax standpoint why the former plots arrowAndTrailDisplay as an animation but the latter does not.

I would have thought the arcsin(sin(x)) = sin(arcsin(x)).

First 18 19 20 21 22 23 24 Last Page 20 of 35