MaplePrimes Commons General Technical Discussions

The primary forum for technical discussions.

In the recent years much software has undergone a change towards allowing for better sharing of documents. As is the case with other software as well, the users are no longer mainly single persons sitting in a dark corner doing their own stuff. Luckily Maplesoft has taken an important step in that direction too by introducing MapleCloud some years ago. This means that it is now possible quite easily to discuss calculations done in Maple in the classroom. One student uploads and the Teacher can find the document seconds later on his own computer connected to a Projector and show the student's solutions for the other  students in the classroom. That's indeed great! Maple is however lacking in one important aspect: It's Graphics User Interface (GUI) is not completely ready to for that challenge! I noticed that quite recently when the entire teaching staff received new netbooks: 14 inch Lenovo Yoga X1 with a resolution of 2560 x 1440 pixels. From factory defaults text zoom was set to 200%. Without it, text would be too small in all applications used on the computer. The Microsoft Office package and most other software has adapted to this new situation dealing with high variation in the users screen resolutions, but not Maplesoft:

  1. Plots and Images inserted become very small
  2. Open File dialogs and the like contain shortened text for folder names ... (you actually have to guess what the folders are)
  3. Help menus are cluttered up and difficult to read.

I show screen images of all three types below.

I know it is possible to make plots larger by using the option size, but since it relies on pixels it doesn't work when documents are shared between students and teachers. You cannot expect the receiving student/teacher to make a lot of changes in the document just to be able to read it. It will completely destroy the workflow!

Why doesn't Maplesoft allow for letting documents display proportionally on the users computer like so many other programs do? Why do it need to be in pixels? If it is possible to make it proportional, it would also solve another issue: Making prints (to a printer or to pdf) look more like they do on the screen than is the case at present.

I really hope Maplesoft will address this GUI challenge, because I am sure the issue will pile up quite rapidly. Due to higher costs, most laptops/netbooks among students don't have that high resolution compared to computer dimensions at the moment, but we already have received a few remarks from students owning such computers. Very soon those highend solution computers will dive into the consumer market and become very common.

I have mentioned this important GUI issue in the beta-testing group, but I don't think those groups really are adapted to discussions, more bug fixes. Therefore I have made this Post in the hope that some Maple users and some chief developers will comment on it!
     

Now I have criticized the Maple GUI, I also feel urged to tell in what departments I think Maple really excels:

  1. The Document-structure is great. One can produce good looking documents containing 'written math' (inactive math) and/or 'calculated math'. All-in-one! Other competting software does need one to handle things separatly.
  2. Sections and subsections. We have actually started using Maple to create documents containing entire chapters or surveys of mathematics or physics subjects, helping students to get a better overview. I am pretty sure the Workbook tool also will help here.
  3. Calculations are all connected. One can recalculate the document or parts of it, eventually using new parameters. Using Maple for performing matematical experiments. Mathematical experiments is a method entering more into the different mathematics curriculums.
  4. MapleCloud. Easy sharing of documents among students and teachers.
  5. Interactive possibilities through the Explore command and other commands. Math Apps as well.
  6. Besides that mathematical symbols can be accessed from the keyboard, they can also be accessed from palettes by less experinced users.  
  7. Good choice by Maple to let the user globally decide the size text and math is displayed in Maple - set globally in the menu Tools < Options.
  8. Maple can handle units in Physics
  9. Maple has World-Class capabilities. If you have a mathematical problem, Maple can probably handle it. You just need to figure out how.
  10. etc.

 

Small plots:

 

Shortened dialog text:

 

Cluttered help menus:

 

Regards,

Erik

 

The is and coulditbe commands of Maple are known to be buggy.
Here are some math inventions done by these commands in Maple 2016.2.

restart; assume(x::real, y::real);
is(exp(x+I*y) <> 0);
                             false
coulditbe(exp(x+I*y) = 0);
                              true
coulditbe(exp(x+I*y) = infinity);
                              true
coulditbe((x+I*y)^2 = infinity);
                              true

It should be noticed that

is((-infinity)::real);
                             false

though

exp(-infinity+0*I);
                               0

The latter means

limit(exp(x),x=-infinity);
                                   0

, no more and no less.

 

I have proposed a SE site for maple.

This will help to put maple on SE.

Please follow this site.

http://area51.stackexchange.com/proposals/107315/maple

 Update

We have moved to the next phase Commitment. Come and join us.

The Joint Mathematics Meetings are taking place this week (January 4 – 7) in Atlanta, Georgia, U.S.A. This will be the 100th annual winter meeting of the Mathematical Association of America (MAA) and the 123nd annual meeting of the American Mathematical Society (AMS).

Maplesoft will be exhibiting at booth #118 as well as in the networking area. Please stop by our booth or the networking area to chat with me and other members of the Maplesoft team, as well as to pick up some free Maplesoft swag or win some prizes.

There are also several interesting Maple-related talks and events happening this week:

 

Teaching Cryptology to Increase Interest in Mathematics for Students Majoring in Non-Technical Disciplines and High School Students

Wednesday, January 4, 0820, L401 & L402, Lobby Level, Marriott Marquis

Neil Sigmon, Radford University

 

Enigma: A Combinatorial Analysis and Maple Simulator

Wednesday, January 4, 0900, L401 & L402, Lobby Level, Marriott Marquis

Rick Klima, Appalachian State University

 

MYMathApps Calculus - Building on Maplets for Calculus

Thursday, January 5, 0800, Courtland, Conference Level, Hyatt Regency

Philip B. Yasskin, Texas A&M University 
Douglas B. Meade, University of South Carolina 
Andrew Crenwelge, Texas A&M University

 

Maple Software Technology as a Stimulant Tool for Dynamic Interactive Calculus Teaching and Learning

Thursday, January 5, 1000, Courtland, Conference Level, Hyatt Regency

Lina Wu, Borough of Manhattan Community College-The City University of New York 

 

Collaborative Research: Maplets for Calculus

Thursday, January 5, 1400, Marquis Ballroom, Marquis Level, Marriott Marquis

Philip Yasskin, Texas A&M University 
Douglas Meade, U of South Carolina

 

Digital Graphic Calculus Art Design in Maple Software

Thursday, January 5, 1420, International 7, International Level, Marriott Marquis

Lina Wu, Borough of Manhattan Community College-The City University of New York 

 

Maplesoft will also be hosting a catered reception and brief presentation on Teaching STEM Online: Challenges and Solutions, Thursday January 5th, from 6:00pm – 7:30pm, at the Hyatt Regency, Hanover AB, on the exhibitor level. Please RSVP at www.maplesoft.com/jmm or at Maplesoft booth #118.

 

If you are attending the Joint Math meetings this week and plan on presenting anything on Maple, please feel free to let me know and I'll update this list accordingly.


See you in Atlanta!

Daniel

Maple Product Manager

Is this a bug?

hypergeom([1, -1, 1/2], [-12,-3], 1);
Error, (in hypergeom/check_parameters) function doesn't exist: missing appropriate negative integers in the first list of parameters to compensate the negatives integer(s): [-3], found in the second list.
 

Yet this hypergeometric series terminates and Maple should be able to handle it, at least according to the Maple help page (the second rule below applies, yet the numerator has a smaller absolute value, so the first rule below applies).

If some   n[i] is a non-positive integer, the series is finite (that is,   F(n, d, z)  is a polynomial in    z).
If some  d[j]  is a non-positive integer, the function is undefined for all non-zero  z, unless there is also a negative upper parameter of smaller absolute value, in which case the previous rule applies.
 

 

Interestingly, the Wolfram Mathematica app can evaluate this to 311/312.

 

 

The DFT windowing functions in the SignalProcessing package seem to be inconsistent in the type of data they will accept, and the type they return.

BartlettHannWindow,  BlackmanHarrisWindow, BlackmanNuttallWindow,   BohmanWindow, CauchyWindow, CosineWindow, ExponentialWindow, FlatTopWindow,  GaussianWindow, HannPoissonWindow, ParzenWindow, PoissonWindow,  RectangleWindow, ReiszWindow, RiemannWindow, TaperedCosineWindow, TriangleWindow, TukeyWindow

accept Arrays, containing almost any data type (haven't tried them all!) as input. and always return a Vector[row].

But

BartlettWindow, BlackmanWindow, HammingWindow, HannWindow, KaiserWindow

require that the option datatype=float[8] be set in the Array() constructor, which is used as input and always return an hfarray.

Thus, for example

with(SignalProcessing);
sig:= Array( -50..50,
                        fill=1
                    ):
BartlettHannWindow(sig); # this works
BartlettWindow(sig);# this fails with datatype unsupported error

Very confusing!!!!

As mentioned a few weeks back, we have been working on an update to MaplePrimes designed to dramatically curtail the amount of spam we have been receiving. I'm happy to say that we implemented these features earlier today, and in the hour or so since publication, they have already helped prevent multiple messages from being posted.

Using content posted to MaplePrimes over the past few months as a baseline, this new feature is successfully able to detect 90% of spam, while maintaining a false positive (i.e., incorrectly identifying a legitimate question or post) rate of 1%.

If a message is detected as spam, it is immediately quarantined and not publicly posted. Importantly, any user who posts a message seen as spam is immediately informed, and is provided with a simple mechanism to let us know so that their post can be reinstated (if it is in fact legimate.)

We will be closely monitoring these services to ensure that they are working as intended. In the meantime, I am very hopeful that they help improve the experience for our members, and require much less effort from our dedicated group of spam fighters.

Today we have published an update to MaplePrimes that includes a variety of improvements. Many of these changes are a direct result of member feedback and suggestions, and I am very appreciative for that!

What follows is a brief summary of the changes. As always, we remain very interested in your thoughts and feedback, and look forward to your further suggestions.

Also, a note that, as mentioned in a previous post, we have already begun working on a further update to address the influx of spam we have been receiving. This update will be published within the next 2-3 weeks.

Updated Look and feel
The most obvious change is the updated interface. With a few exceptions, the previous layout and functionality has been maintained, but with a cleaner, more responsive, and more appealing look.

New message editor
This update includes a new text editor called CKEditor. This editor provides a simpler, cleaner experience for posting your messages and also aligns MaplePrimes more closely with the Maplesoft product suite.

Notifications
You will notice a new flag icon in the upper right hand corner of the interface. This is the new MaplePrimes Notification feature, and it provides similar functionality to what we have become accustomed to on other social media sites. The icon is displayed in an orange color when you have notifications, and then when opened, your new notifications are highlighted in blue. Clicking on a notification will take you directly to the item being referenced.

Improved flow for removing spam messages
As any MaplePrimes moderator could tell you, removing spam on MaplePrimes was a cumbersome process taking 4 clicks. In this update, this process has been streamlined to 2 clicks, which will make the process considerably faster for our legion of spam fighters. In addition, the ability to remove spam is now available on all message types – comments, replies, etc.

Identification Badges
There are now 3 identification badges that are used throughout MaplePrimes wherever member information is displayed. These include:

 Denotes a member who works at Maplesoft

 Site moderators are the heart and soul of MaplePrimes, and are now identified by this new badge

 A member who also particpates in the Maple Ambassador Program

Other fixes and improvements
In addition to the changes mentioned above, several other minor fixes and improvements were made.

After days of fruitlessly searching the help files and the Internet for a means of converting a Dataseries of strings into numeric values in Maple I changed tack and determined how to do it myself.

I was surprised there was no built in Maple function to do this. From searching the Internet I can see I am not alone.
Since there are no other solutions on the net, here is mine:

toNumeric := (y) -> map(x->parse(x),y);

This creates the function toNumeric() that accepts a DataSeries of text values and returns it converted to a Dataseries of numeric values.

thing := DataSeries(["10", "20", "30", "55.9"], 'labels' = ["a", "b", "c", "d"]);
thing := toNumeric(thing); 

dataframething := DataFrame([["cow", "sheep", "goat", "alpaca"], ["10", "20", "30", "55.9"]], rows = ["a", "b", "c", "d"]);
dataframething[2] := toNumeric(dataframething[2]);


If you want to see this in Maple, try:
 typecastdataseries-maple




 

In order to change Maple for the better, I use to submit SCRs. However, as i was kindly
informed by Bryon (a copy of his e-letter on demand), MaplePrimes are under reconstruction and do not
work properly. At least my three messages sent through the Contact button were lost.
I have  unsuccessfully tried to reach beta.maplesoft.com (see the result of ping in the screen screen.29.08.16.docx).
Please, help me!

Bruce Jenkins is President of Ora Research, an engineering research and advisory service. Maplesoft commissioned him to examine how systems-driven engineering practices are being integrated into the early stages of product development, the results of which are available in a free whitepaper entitled System-Level Physical Modeling and Simulation. In the coming weeks, Mr. Jenkins will discuss the results of his research in a series of blog posts.

This is the first entry in the series.

Discussions of how to bring simulation to bear starting in the early stages of product development have become commonplace today. Driving these discussions, I believe, is growing recognition that engineering design in general, and conceptual and preliminary engineering in particular, face unprecedented pressures to move beyond the intuition-based, guess-and-correct methods that have long dominated product development practices in discrete manufacturing. To continue meeting their enterprises’ strategic business imperatives, engineering organizations must move more deeply into applying all the capabilities for systematic, rational, rapid design development, exploration and optimization available from today’s simulation software technologies.

Unfortunately, discussions of how to simulate early still fixate all too often on 3D CAE methods such as finite element analysis and computational fluid dynamics. This reveals a widespread dearth of awareness and understanding—compounded by some fear, intimidation and avoidance—of system-level physical modeling and simulation software. This technology empowers engineers and engineering teams to begin studying, exploring and optimizing designs in the beginning stages of projects—when product geometry is seldom available for 3D CAE, but when informed engineering decision-making can have its strongest impact and leverage on product development outcomes. Then, properly applied, systems modeling tools can help engineering teams maintain visibility and control at the subsystems, systems and whole-product levels as the design evolves through development, integration, optimization and validation.

As part of my ongoing research and reporting intended to help remedy the low awareness and substantial under-utilization of system-level physical modeling software in too many manufacturing industries today, earlier this year I produced a white paper, “System-Level Physical Modeling and Simulation: Strategies for Accelerating the Move to Simulation-Led, Systems-Driven Engineering in Off-Highway Equipment and Mining Machinery.” The project that resulted in this white paper originated during a technology briefing I received in late 2015 from Maplesoft. The company had noticed my commentary in industry and trade publications expressing the views set out above, and approached me to explore what they saw as shared perspectives.

From these discussions, I proposed that Maplesoft commission me to further investigate these issues through primary research among expert practitioners and engineering management, with emphasis on the off-highway equipment and mining machinery industries. In this research, focused not on software-brand-specific factors but instead on industry-wide issues, I interviewed users of a broad range of systems modeling software products including Dassault Systèmes’ Dymola, Maplesoft’s MapleSim, The MathWorks’ Simulink, Siemens PLM’s LMS Imagine.Lab Amesim, and the Modelica tools and libraries from various providers. Interviewees were drawn from manufacturers of off-highway equipment and mining machinery as well as some makers of materials handling machinery.

At the outset, I worked with Maplesoft to define the project methodology. My firm, Ora Research, then executed the interviews, analyzed the findings and developed the white paper independently of input from Maplesoft. That said, I believe the findings of this project strongly support and validate Maplesoft’s vision and strategy for what it calls model-driven innovation. You can download the white paper here.

Bruce Jenkins, Ora Research
oraresearch.com

This post is about the relationship between the number of processors used in parallel processing with the Threads package and the resultant real times and cpu times for a computation.

In the worksheet below, I perform the same computation using each possible number of processors on my machine, one thru eight. The computation is adding a list of 32 million pre-selected random integers. The real times and cpu times are collected from each run, and these are analyzed with a variety of metrics that I devised. Note that garbage-collection (gc) time is not an issue in the timings; as you can see below, the gc times are zero throughout.

My conclusion is that there are severely diminishing returns as the number of processors increases. There is a major benefit in going from one processor to two; there is a not-as-great-but-still-substantial benefit in going from two processors to four. But the real-time reduction in going from four processors to eight is very small compared to the substantial increase in resource consumption.

Please discuss the relevance of my six metrics, the soundness of my test technique, and how the presentation could be better. If you have a computer capable of running more than eight threads, please modify and run my worksheet on it.

Diminishing Returns from Parallel Processing: Is it worth using more than four processors with Threads?

Author: Carl J Love, 2016-July-30 

Set up tests

 

restart:

currentdir(kernelopts(homedir)):
if kernelopts(numcpus) <> 8 then
     error "This worksheet needs to be adjusted for your number of CPUs."
end if:
try fremove("ThreadsData.m") catch: end try:
try fremove("ThreadsTestData.m") catch: end try:
try fremove("ThreadsTest.mpl") catch: end try:

#Create and save random test data
L:= RandomTools:-Generate(list(integer, 2^25)):
save L, "ThreadsTestData.m":

#Create code file to be read for the tests.
fd:= FileTools:-Text:-Open("ThreadsTest.mpl", create):
fprintf(
     fd,
     "gc();\n"
     "read \"ThreadsTestData.m\":\n"
     "CodeTools:-Usage(Threads:-Add(x, x= L)):\n"
     "fd:= FileTools:-Text:-Open(\"ThreadsData.m\", create, append):\n"
     "fprintf(\n"
     "     fd, \"%%m%%m%%m\\n\",\n"
     "     kernelopts(numcpus),\n"
     "     CodeTools:-Usage(\n"
     "          Threads:-Add(x, x= L),\n"
     "          iterations= 8,\n"
     "          output= [realtime, cputime]\n"
     "     )\n"
     "):\n"
     "fclose(fd):"
):
fclose(fd):

#Code review
fd:= FileTools:-Text:-Open("ThreadsTest.mpl"):
while not feof(fd) do
     printf("%s\n", FileTools:-Text:-ReadLine(fd))
end do:

fclose(fd):

gc();
read "ThreadsTestData.m":
CodeTools:-Usage(Threads:-Add(x, x= L)):
fd:= FileTools:-Text:-Open("ThreadsData.m", create, append):
fprintf(
     fd, "%m%m%m\n",
     kernelopts(numcpus),
     CodeTools:-Usage(
          Threads:-Add(x, x= L),
          iterations= 8,
          output= [realtime, cputime]
     )
):
fclose(fd):

 

Run the tests

restart:

kernelopts(numcpus= 1):
currentdir(kernelopts(homedir)):
read "ThreadsTest.mpl":

memory used=0.79MiB, alloc change=0 bytes, cpu time=2.66s, real time=2.66s, gc time=0ns

memory used=0.78MiB, alloc change=0 bytes, cpu time=2.26s, real time=2.26s, gc time=0ns

 

Repeat above test using numcpus= 2..8.

 

restart:

kernelopts(numcpus= 2):
currentdir(kernelopts(homedir)):
read "ThreadsTest.mpl":

memory used=0.79MiB, alloc change=2.19MiB, cpu time=2.73s, real time=1.65s, gc time=0ns

memory used=0.78MiB, alloc change=0 bytes, cpu time=2.37s, real time=1.28s, gc time=0ns

 

restart:

kernelopts(numcpus= 3):
currentdir(kernelopts(homedir)):
read "ThreadsTest.mpl":

memory used=0.79MiB, alloc change=4.38MiB, cpu time=2.98s, real time=1.38s, gc time=0ns

memory used=0.78MiB, alloc change=0 bytes, cpu time=2.75s, real time=1.05s, gc time=0ns

 

restart:

kernelopts(numcpus= 4):
currentdir(kernelopts(homedir)):
read "ThreadsTest.mpl":

memory used=0.80MiB, alloc change=6.56MiB, cpu time=3.76s, real time=1.38s, gc time=0ns

memory used=0.78MiB, alloc change=0 bytes, cpu time=3.26s, real time=959.75ms, gc time=0ns

 

restart:

kernelopts(numcpus= 5):
currentdir(kernelopts(homedir)):
read "ThreadsTest.mpl":

memory used=0.80MiB, alloc change=8.75MiB, cpu time=4.12s, real time=1.30s, gc time=0ns

memory used=0.78MiB, alloc change=0 bytes, cpu time=3.74s, real time=910.88ms, gc time=0ns

 

restart:

kernelopts(numcpus= 6):
currentdir(kernelopts(homedir)):
read "ThreadsTest.mpl":

memory used=0.81MiB, alloc change=10.94MiB, cpu time=4.59s, real time=1.26s, gc time=0ns

memory used=0.78MiB, alloc change=0 bytes, cpu time=4.29s, real time=894.00ms, gc time=0ns

 

restart:

kernelopts(numcpus= 7):
currentdir(kernelopts(homedir)):
read "ThreadsTest.mpl":

memory used=0.81MiB, alloc change=13.12MiB, cpu time=5.08s, real time=1.26s, gc time=0ns

memory used=0.78MiB, alloc change=0 bytes, cpu time=4.63s, real time=879.00ms, gc time=0ns

 

restart:

kernelopts(numcpus= 8):
currentdir(kernelopts(homedir)):
read "ThreadsTest.mpl":

memory used=0.82MiB, alloc change=15.31MiB, cpu time=5.08s, real time=1.25s, gc time=0ns

memory used=0.78MiB, alloc change=0 bytes, cpu time=4.69s, real time=845.75ms, gc time=0ns

 

Analyze the data

restart:

currentdir(kernelopts(homedir)):

(R,C):= 'Vector(kernelopts(numcpus))' $ 2:
N:= Vector(kernelopts(numcpus), i-> i):

fd:= FileTools:-Text:-Open("ThreadsData.m"):
while not feof(fd) do
     (n,Tr,Tc):= fscanf(fd, "%m%m%m\n")[];
     (R[n],C[n]):= (Tr,Tc)
end do:

fclose(fd):

plot(
     (V-> <N | 100*~V>)~([R /~ max(R), C /~ max(C)]),
     title= "Raw timing data (normalized)",
     legend= ["real", "CPU"],
     labels= [`number of processors\n`, `%  of  max`],
     labeldirections= [HORIZONTAL,VERTICAL],
     view= [DEFAULT, 0..100]
);

The metrics:

 

R[1] /~ R /~ N:          Gain: The gain from parallelism expressed as a percentage of the theoretical maximum gain given the number of processors

C /~ R /~ N:               Evenness: How evenly the task is distributed among the processors

1 -~ C[1] /~ C:           Overhead: The percentage of extra resource consumption due to parallelism

R /~ R[1]:                   Reduction: The percentage reduction in real time

1 -~ R[2..] /~ R[..-2]:  Marginal Reduction: Percentage reduction in real time by using one more processor

C[2..] /~ C[..-2] -~ 1:  Marginal Consumption: Percentage increase in resource consumption by using one more processor

 

plot(
     [
          (V-> <N | 100*~V>)~([
               R[1]/~R/~N,             #gain from parallelism
               C/~R/~N,                #how evenly distributed
               1 -~ C[1]/~C,           #overhead
               R/~R[1]                 #reduction
          ])[],
          (V-> <N[2..] -~ .5 | 100*~V>)~([
               1 -~ R[2..]/~R[..-2],   #marginal reduction rate
               C[2..]/~C[..-2] -~ 1    #marginal consumption rate        
          ])[]
     ],
     legend= typeset~([
          'r[1]/r/n',
          'c/r/n',
          '1 - c[1]/c',
          'r/r[1]',
          '1 - `Delta__%`(r)',
          '`Delta__%`(c) - 1'       
     ]),
     linestyle= ["solid"$4, "dash"$2], thickness= 2,
     title= "Efficiency metrics\n", titlefont= [HELVETICA,BOLD,16],
     labels= [`number of processors\n`, `% change`], labelfont= [TIMES,ITALIC,14],
     labeldirections= [HORIZONTAL,VERTICAL],
     caption= "\nr = real time,  c = CPU time,  n = # of processors",
     size= combinat:-fibonacci~([16,15]),
     gridlines
);

 

 

Download Threads_dim_ret.mw

What's up with Mapleprimes's timing today? Every time I click on a Post or Question, the main post loads at the normal speed (which is slow to start with), and then it takes a full minute for the Answers or Replies (or lack thereof) to load. This has been consistent for every Post or Question that I've read today. Is anyone else experiencing this?

 

Points on the coordinate plane

(Guidance manual for the 6th class)

Changing the initial coordinates and going through the entire program first, we get a new picture-task

 

    Point_on_co-plane.mws

 

And Another     Coordinate_plane.mws

 

 

 

Coordinate axis

6th class (in Russia)

Guidance manual for use at lessons (at school)

Coordinate_line_lesson.mws

(It is possible bad English)

1 2 3 4 5 6 7 Last Page 1 of 73