Maple 2022 Questions and Posts

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

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)).

Hello everyone,

I am trying to solve a system of six equations through a matrix and a vector. The matrix is 6x6, so the function "LinearSolve" should find a solution 

The matrix is

Matrix(6, 6, [[1., -1., 1., -1., 1., -1.], [1., 1., 1., 1., 1., 1.], [-2., 1.618033989, 30.94427190, -153.8246851, 371.1559479, -572.9674774], [-2., 0.6180339876, 22.94427191, -41.15905356, -37.04759741, 149.3606798], [-2., -0.6180339876, 13.05572810, 22.82468509, -20.15594802, -81.03252254], [-2., -1.618033989, 5.055728096, 28.15905368, 68.04759752, 104.6393203]])

and the vector associated with the system is

Vector[column](6, [-1/3, -1, 0, 0, 0, 0])

I am trying to solve this system with

a := LinearSolve(M3, v);

but it stays evaluating.

I have solved a similar system (5x5) with this function (LinearSolve) and it took less than a second, so I dont understand why it takes so long in this case.

Thank you in advance.

Why the expression of lambda[1] is too large? One of the possible values of lambda[1] should be "sqrt(1/(4*omega^2 - 4))*a[-1]". 

JCN.mw 

Hi,

I want to illustrate the notion of volume generated by a plane region, with the disks. Ideas to animate my rectangles? Thanks

IdeaVolume.mw

I have a procedure that makes lots of plots using plots:-odeplot.

So that I don't have to write the "plots:-" part every time, at the beginning of the procedure I wrote "odeplot:=plots:-odeplot:".

Is this a bad idea in any way?

First 26 27 28 29 30 31 32 Last Page 28 of 43