nm

5966 Reputation

17 Badges

9 years, 143 days

MaplePrimes Activity


These are replies submitted by nm

   What items are on your list of wishes for Maple 2022?

My wish list: Many items on it are repeated year after year :(

1. Improve the debugger user interface. Maple debugger is very important for developing Maple applications but it remains very much primitive and hard and cumbersome to use since it is line based instead of being GUI based (we are in the year 2021 not 1981). Maplesoft continues to ignore this, but at same time devotes time for other GUI things all the time on the cloud and elsewhere. Which tells me that Maplesoft engineers have the skill to make good interfaces but do not care about developers to spend some time to add one for the debugger.  

2. Improve timelimit() more. This has improved in 2021 vs. 2020, but it continues to hang on occasions or not complete anywhere near the timelimit requested. Asking for 30 seconds timeout and getting 10 minutes completion, is not acceptable. I can prodvide many examples that shows timelimit() still does not work.

3. Improve build-in help pages. Help is very hard to read and follow. The formatting just makes it hard to read. It feels like reading a report or paper instead of a help page. Look at your main CAS competitor help pages for example, where it is much easier to read and to find options and it is broken into sections and subsections. 

Help needs much much more examples and links to related commands. The whole Maple help system really needs to be rewritten from scratch and with new design.

For an example, Maple type system is supposed to be one of its main strengths. Yet the help page on structured types "Definition of a Structured Type in Maple"  lists over 100 or more different possible ways to construct these types and different combinations, but there is only 30 or examples below, which 90% of them are so basic and do not cover the majority of possible usages given above in the page.  (specop, anyop, patfunc, specindex, typeindex, etc, etc...)

This page probably needs 1000 more examples.  Every construct/name  shown at the top of this page, should have an example or more showing how to use it. This is one of the main  purposes of a help page. To show examples how to use the commands.  

For the web based Maple help system, it is really hard to read.  Just look at this random page for example. 

https://www.maplesoft.com/support/help/maple/view.aspx?path=operators%2fD

it is all scrambled.

Hint: Maple is all about Mathematics.  So why not use Latex to make your web based help pages? Latex can be compiled to both HTML and PDF and can also uses Mathjax or svg for images on the web, which will make the pages much better to look at and read.

4. Adding an option to dsolve to solve and ode using asymptotic methods in addition to current ‘series’ would be useful.

5. Provide a way to "Remove output from worksheet" while the worksheet is still busy running something. The worksheet slows down when there is lots of stuff printed on it, but one is not able to clear the output until the script running completes because the above command is disabled. I noticed that clearing the output seems to speed up things.

6. Improve the Object model to allow type extension. Without this, the current OO system in Maple is not really an OO system 

https://www.mapleprimes.com/questions/233094-Provide-Way-To-Override-Variable-And%206

@Mac Dude 

I must be overlooking something. But there is no "type extension" here. dog() call just returns a module. This module does not even share the attributes of the base class Animal. 

Buster:=Animal:-dog();
Buster:-move();
Buster:-data1;

Error, module does not export `data1`

While when doing   option object(animal); now the new object has access to all base class animal data and methods.

How is this method you showed any better than just making a separate dog class?  As in

dogClass:=module()
   option object;

       export move:=proc(_self,$)
         print("In dog class. moving ....");
       end proc;  
end module;


Buster1:=Object(dogClass);
Buster2:=Object(dogClass);
etc...

But I agree with you in that Maple is not a true OOP language. I now just use Object as a "record" in other langauges (or "struct"). Where I have common data in one place. Then pass this object from one call to another. Just like when one passes a struct between functions in C.

@dharr 

"I think you wanted print(p) in B."

Yes ofcourse. Last minute change, forgot to update. Now typo fixed. The image is still not expored to a file. 

I nerver used interface(plotdevice=ps, etc...) before.  I am following https://maplesoft.com/support/help/maple/view.aspx?path=plotsetup  where it says to use plotsetup.  

But I just tried your suggestion, and it still did not work I am afraid.   now A wil call B1.


 

restart;

currentdir("C:\\tmp\\TEST_MAPLE");
p:=DocumentTools[RunWorksheet]( "B1.mw" , [the_function=sin(x),the_variable=x]  ):
print("Back from calling worksheet B. Here is the result");
p;

"C:\tmp\TEST_MAPLE"

"Back from calling worksheet B. Here is the result"

"OK"

 


 

Download A.mw

This is B1.mw. tried interface(plotdevice=ps, plotoutput=filename );  and interface(plotdevice=postscript, plotoutput=filename );


 

Inputs

 

the_function:=0;

the_variable:=0;


full_file_name:=cat("C:\\tmp\\TEST_MAPLE\\tmp.ps");
interface(plotdevice=postscript, plotoutput=filename );
plot(the_function,the_variable=-2*Pi..2*Pi):
return "OK";

 


 

Download B1.mw

 

@Rouben Rostamian  

"The format of the font specification is defined in ?plot,options under the "font" entry. Your specification axesfont=[12,12] does not fit that specification. Maple does not complain about that in the worksheet mode."

I am getting these errors. May be we are using different versions? (not able to post an image)

plot(sin(x),x=0..2*Pi,axesfont=12);
Error, (in plot) expecting option [axesfont, axes_font] to be of type list but received 12


plot(sin(x),x=0..2*Pi,axesfont=[12,12]);  #works OK
 

 

@vv 

It is not that easy. The issue becomes what value of slope to choose? 

Compare 

restart;
f:= (3 - 2*x)*exp(5*x);
f1:= diff(f, x):
maxslope:=100:
ff:=piecewise(abs(f1) < maxslope, f, undefined):
plot(ff, x=0..2*Pi);

With the result if using slope=5000 say

This choice worked better for this function as it shows more relevent parts.  But I will try setting some large slope value and run the program and see how the plots look like as there are 10's of thousands of functions to plot.  This will take 1-2 days to finish. This looks like a good solution until Maple smart view becomes more smart :)

 

 

 

@ecterrab 

Thanks for the quick fix. I confirm it is fixed in Latest Physics update. It it great job you are doing by giving fixes so quickly in these updates instead of one having to wait a year or so for a new version of Maple to get the fix.

I have found few more problems  elsewhere in Maple 2021.1 in the last 2-3 months, but I send these to technical support in emails already so I did not post them here.

The only main problem that remains for me with using Maple, is that timeout does not always timeout anywhere near the timeout value given all the time. I still see cases where it hangs or takes much much longer than the timeout value.

But I talked about this many times before so will not bring up anymore. I have many examples showing this. I'll wait for Maple 2022 to see if this problem is hopefully finally resolved.

Thanks again for your support.

@Preben Alsholm 

I think you did not get the errors when you simplified the integrand, is because of the call to simplify() being made before int(). This causes something to be loaded and changes memory layout?

To show this, I used the simplified version of the integrand (copied from different worksheet so I do not have to call simplify()) and repeated things, and now it fails.

 

Now repeated the same thing, but used simplify()  like you did, and the error went away.

This tells me that it has nothing to do with the simpler version of the integrand. It is due to the call to simplify() before which caused something to be loaded which had the side effect of removing the error.

To proof this more. I kept the original integrand, but loaded something else. Calendar package. And now i am not able to reproduce the error no matter how many times I tried.

Removing the call to Calender. Closing Maple. Starting again, and now tried it, and got the error back: of course Calender package has nothing to do with int() command. but this shows that it seems to be a memory layout or something related as loading something before, even if not related causes different behavior. These were all done after starting Maple again each time with nothing else running in Maple.