On page 99 of Dr. Euler's Fabulous Formula, Nahin says that:
is true and I believe it, but I can't get Maple to confirm it. How can I get Maple to agree with Nahin? Are there assumptions that will make it happen?
You may use the following in Maple:
# differentiation w.r.t. to an integral bound
int(f(s)*(x-s),s=0..x):
'diff(%,x)': '%'=%;
/ x \ x
| / | /
d | | | |
-- | | f(s) (x - s) ds| = | f(s) ds
dx | | | |
|/ | /
\ 0 / 0
# now use integration having an anti-derivative
D(F)(x): int(%,x=0..t) = F(t) - F(0);
t
/
|
| D(F)(x) dx = F(t) - F(0)
|
/
0
# but you have an anti-derivate: this is your integral at
# the rhs of your equation, substitute it, it has F(0)=0
eval(%, F = 'xi -> int(f(s)*(xi-s),s=0..xi)');
t x t
/ / /
| | |
| | f(s) ds dx = | f(s) (t - s) ds
| | |
/ / /
0 0 0
Those advanced mathematical propositions are not within the scope of evalb's design or purpose.
They are not even within the current scope of the "mathematical" verifier `is`. (I don't see a continuous property or type, so I suppose that `is` couldn't make use of an assumption such as D(F)::continuous.) It would be lovely to learn that I'm wrong on that point.
I think that I've found the reason why I can't have it my way. It has to be Maple's way. The answer is on page 23 of history.siam.org/pdfs2/Gonnet_final.pdf
In this case, Maple could have in fact done things your way. t-x and x-t are definitely different expressions. And while, to Maple -t+x and x-t are the same, (-1)*f(t)*(t-x) and f(t)*(x-t) are in fact different.
Basically, this is due to Maple doing
internal ordering of sums by address
automatic distribution of integer factors inside sums.
Note that automatic distribution of integer factors does not happen inside products. So while you have no control over 2*(x-1) [it always show up as 2*x-2], you have control over 2*a*(x-1) [which shows as is]. So, in your case, it is possible to choose to put that -1 factor inside the polynomial factor instead of out.
In fact, it seems that Maple 11 (unlike Maple 9.5) chooses a form closer to your liking.
Of course, we humans prefer our binomial terms with one positive and one negative coefficient to show as A-B rather than -B+A. That is one of those deep design decisions from the early days (see a previous post on that topic) that is unlikely to change.
Thank you, Robert Israel and Jakubi. I can have it my way or at least almost my way. And, I was wrong again. I thought that I had found out why it had to be Maple's way but no, I was wrong.
I read all 84 pages of the Gaston Gonnet Interview and I am a slow reader. I found it very interesting. I also read all of the blog comments so far and I noticed that I am not the only one that says nice things about you:
"Your answers are deep, sharp, well documented and very useful to gain a wider and wiser knowledge of Maple and of what is related to computer algebra."
I agree.
I know nothing of Mathematica. Is there an unbiased comparison of Maple and Mathematica or two, one from each side? I don't think that I'll ever be able to experience Mathematica. I can't afford it.
Would Maple be better off if it had had an iron fisted leader as Mathematica does? What about open source? What is Maple's future?
I'm sorry if these questions are in the wrong place again but I concluded that my words are too close to noise to be in your Gaston Gonnet blog. It's better for me to listen than speak.
The only unbiased review(s) that I am aware of that cover a decent chunk of functionality (instead of being very very specific) are from Michael Wester, A Critique of the Mathematical Abilities of CA Systems. Unfortunately, it is quite old (1999), so quite a lot has changed then. Not that more than 20% of the bugs identified in that review have been fixed, but lots of new functionality has been added since. So the overall picture needs updating. But the time investment to do such a critique is gigantic, and under-appreciated.
Other reviews have appeared in the popular (technical) press, but I found all of them quite biased. For example, this review in Bitwise shows really poor understanding of Maple, and so Mathematica comes out ahead. Perhaps that review is really an indictment of how awful Maple's documentation is. Maple is a better functional language than Mathematica, but that reviewer does not think so. That is probably because the Mathematica documentation is not afraid to teach users new ideas, while the Maple documentation tries really hard to keep the number of concepts to an absolute minimum. [For a student audience, Maple's approach is clearly superior. For an audience of smart professionals, I believe that Mathematica's is better].
Would it have been better if Maple had an iron-fisted leader? If that leader was working at and for Maplesoft, and his job/salary depended on the success/failure of the product, then yes, I think that would have made things better. Not for the employees though -- I have talked to many very smart ex-Wolfram Research employees, and they all despised working for Stephen Wolfram. But they were also quite proud of their accomplishments. But having a remote boss is a very bad idea, no matter how good the boss might be.
Maplesoft currently firmly believes that it adds significant value to Maple every release, enough that it can convince the majority of its customers to upgrade. As long as that is that case (ie that they can convince enough customers that that is the case), then there is no real business case for going open source. Well, not completely. There are quite a few esoteric routines that exist in Maple, where Maplesoft has no real expertise in-house, but yet contain bugs; if these bugs annoy enough people, but at the same time it is clear that there is expertise in the greater Maple community to get these bugs fixed, then some parts of Maple could be heaved off into an open source "chunk" of the library. There are all sorts of ways this could be done in ways that could be win-win. The other possibility is that Maplesoft finds it has a much bigger market in derivative products, and the ROI on incremental improvements to Maple itself become negative [this could happen, but is not the case now]. At that time, the issue of open source could be fruitfully reconsidered.
Maple has 'lived' for 28 years. I doubt that it is going to die anytime soon, especially as the company is quite healthy (financially). But in software-years, 28 is very firmly into middle-age. Maple is showing a certain amount of 'bulging up' in the middle.
In the right column of this Bitwise review I see right now four Google adds. The first two are for WRI Mathematica (MathModelica, Mathematica 5) while the second two are not for MapleSoft Maple (Maple Bed, Maple Restaurants) .
Google adds change with time but this sends a message also.
So, how do you get the numerical integration of the first example made at times similar (or smaller) than Mathematica, if the answer was "Our development team will work to address this weakness for an upcoming release of Maple.”?
You can either wait an undefined amount of time for the weakness to be fixed, or write your own numerical integrator that is better, or write a review of Maple for a widely circulated magazine/journal.
In the mind of most physicists that I know, if Mathematica can do, and Maple cannot do, some calculation (like this integral) that they need at that moment, Maple is out. Almost certainly, if Mathematica does the job, nobody would loose time writing its own routine. I am not particularly interested in this kind of integrals.
I know this for experience as I have received myself many times requests of similar kind.
Numerical integration and special functions are areas of particular interest to many physicists where Maple has been behind Mathematica.
Or at least try to predict the future via reading the press releases :-) [For those not familiar with the expression, see reading tea leaves on Wikipedia].
It seems that the target market is mostly engineers now. They (engineers) seem to care much less about special functions. Numerical integration is still an issue, but (numerical) DE solving is even more important, as far as I can tell.
Note: why do engineers not care about special functions? Because they have been taught to work numerically, that's why. If they tried to work symbolically on some of their models, they would start to care about special functions as much as the physicists! It is always interesting to me how an education can sometimes act as a barrier to progress.
It seems to me that the main CAS have grown so large and extended to so much fields that no individual has enough knowledge nor time to provide a comprehensive review of a single system, not to say a fair comparative review. And keep it updated...
Eg, there are packages in Maple that deal with subjects that I have never studied and even I can hardly understand the language in which the help pages are written (eg PolynomialIdeals). Similarly, I think, a mathematician could have problems with the Physics package and so on.
And it would not be very useful to deal only with the sections of the system with which the reviewer is familiar with because the target is also fragmented: I doubt that many engineers would be interested on reading a review by a mathematician on ORE algebras. Or a researcher on string theory reading a review by an educator on a Student subpackage.
Thus, my current thinking is that these so much needed reviews can only be realized collaboratively. Perhaps in a wiki enviroment or something like that.
The association "Functional Programming" <-> Mathematica is not just in the mind of a particularly ignorant reviewer, but it is a "popular legend". A visible example is the article Functional Programming on Wikipedia, its reference 4 and its discussion.
The argumentation of the reviewer is very familiar to me. I have heard it in quite the same terms several times from colleague physicists. Not from anyone, but from the "computers veterans". While talking about our experiences, starting with the first programable calculators in the mid 70's, when we reach the point of the comparison between Maple and Mathematica, the mystical phrase appears: "But Mathematica has a functional programming language, eh!".
Quite probably, the first place where physicists have ever read "functional programming" was in the documentation of Mathematica. I think that it was my case. For sure, it was the thing that said that used it and you had at hand. But at that time I have found it confusing and I prefered very much the procedural programming language of Maple :)
So, where is the documentation explaining the use of the "functional programming paradigm" in Maple?"
I think that the subject of programming languages deserve a comparative review by itself.
Going into more detail, I think that this "wiki-based" system of reviews do
need of both kind of reviews. Specialized ones, you name it: General
Relativity, Statistics, etc; as well as general ones: core mathematics,
programming language, GUI, etc. The latter would be subject for "systemists" as well as serve for reference.
As I have said before, the Maple documentation tries really hard not to scare the users by using big words or fancy concepts that might be new. It uses functional ideas throughout, but it doesn't admit it in so many words.
Unlike the Mathematica documentation. Since the Mathematica marketing is that Mathematica is ground-breaking in pretty much everything it does and its users are better off using these brilliant new ideas rather than what they have been taught before, it boldly forges ahead with wild claims.
Frankly, I think both these extremes are awful. Amusingly, they both insult users' intelligence, but by completetely different means.
I read the Bitwise Maple 10 vs Mathematica 5.2 review that you referenced in your "A few comments". I was surprised when I got to the end and the reviewer picked Mathematica over Maple. I did gloss over "A Real Life Test" on my first pass. I think he said that he liked the GUI, graphical output and programming language better in Maple than in Mathematica. He also said that the Maple debugger was better than no debugger in Mathematica. In addition, he said that there was probably some other "Real Life Test" that would not run in Mathematica and would run in Maple.
Now this is something that I tried. It's not what the reviewer tried but what is there about this:
This is a messy integral. Even though the interval is reasonable, [0.35,1], the Bessel function is being evaluated on an interval that it 50001 times larger, [17500.35,50001]. Over this interval, the integrand oscillates quite a few times. An exact value for this integral is unlikely and the oscillations make it difficult to compute with any accuracy.
I am not sure why you were trying to plot the value of a definite integral. Here are a few steps to get a better view on this problem.
F := Int(BesselJ(0, 50001*x)*x*exp(I*(355*x^2*1/2)), x = .35 .. 1);
f := op(1,F);
fR := evalc( Re(f) );
plot( fR, x=0.35..1 );
evalf( Int( fR, x=0.35..1 ) ); # returns unevaluated
Doug
---------------------------------------------------------------------
Douglas B. Meade
Math, USC, Columbia, SC 29208 E-mail: mailto:meade@math.sc.edu
Phone: (803) 777-6183 URL: http://www.math.sc.edu/~meade/
Think first. I've heard that before. Unfortunately, I also too often hear myself saying, self: why didn't you, think of that. But I know why I didn’t think of that. It’s simple. You're way smarter than I am.
I was trying to plot because this problem came from this review:
There are a few things that might be holding Maple back here.
One of those is that the compiled external (NAG) routine d01akc which specializes in oscillatory non-singular integrands has a `max_num_subint` parameter which is not exposed at the user-level in Maple. The accuracy tolerances are exposed, via evalf/Int's `epsilon` parameter. But the maximal number of allowed subintervals is not so exposed. So that specialized routine will fail for an integral behaving like BesselJ(0,50001*x) when it attempts to use more than 200 (a hard coded default value) subintervals. With 200 subintervals only, one can only request an epsilon of about 5e-2 or so for the integrand at hand to succeed. I didn't try to subvert Maple and so test whether that routine could handle 50001*x in reasonable time, if allowed a very high number of subintervals.
Not having a super fast compiled hardware floating-point BesselJ0 may also affect the performance. Axel Vogt made some interesting posts and comments here a while back about fast BesselK and using that for numeric quadrature.
The number of things that people believe that they know how to accomplish is greater than the number which can be done well with the time and people resources available. That's the case for Maple development, too.
I don't think highly of an article which seems to put so much weight on a single computational result. I agree with another poster here, that in effect one could judge a CAS by how well it helps in a given discipline that is chosen up front.
Every CAS or piece of math software fails on some (different set of) simple problems. Look at the flood of bug reports about Mathematica 6 recently reported on comp.soft-sys.math.maple. I wouldn't pass definitive judgement on Mathematica based on just a few of those reports. Similarly I wouldn't discount Maple based on a single numerical quadrature result.
I was never a big fan of the Wester review that Jacques cited in an earlier comment in this thread. I can see that some people might like its attempt at breadth. But my view is that since complete coverage is next to impossible it is better to focus on one's particular needs. I'd rather see many discipline- or functionality-specific reviews. Pragmatism, that's all I have to offer.
There is one specialized review of which I'm aware. It focuses on statistics and data analysis, with a bit of overflow into general numerics, plots, i/o and format exchange, etc. It is the ncrunch review of Stefan Steinhaus. Granted it has a few problems, where use of the programs might have been better optimized. But he makes an effort to consult with a representative expert, to get the code into fair shape for all. It's not perfect, and not nearly as expert as Wester's, but it's a start toward discipline-specific analysis. I'd like to see a similar review by, say, mechanical engineers, or 1st-year-calculus college lecturers, or chemists, or...
I was surprised to find myself agreeing with much of what was said above. Nothing to do with acer, but rather that my instinct was to hold the opposite opinion to what was stated above. But acer convinced me that I wasn't so much wrong as suffering from a lack of perspective.
Basically the point is that >I< want a review like Wester's. That is because that fits my own usage pattern of a CAS! Of course, there are few people outside CAS builders and 'generalists' who have this particular use pattern. There are, whoever, definite use patterns amongst different communities that can be fruitfully used to generate good reviews that would be of use for each of those communities. Note that I agree with jakubi that one of the best ways to get these reviews done, especially to help with the aspect of getting representative experts involved, is to use a wiki.
Having said that, somewhere inside a review like Wester's, a really valuable review is hiding. Pretty much all uses of a CAS rely on a core set of features. Now, users of a CAS may not in fact realize that they are constantly using finite fields, polynomial rings or series expansions for a huge number of their (symbolic) computations, but they are. So there is a point to creating a focused review of a CAS's foundational capabilities. This lets you know how solid the base of the system is. Generally speaking, if you take the mathematics covered in all university courses (not just in math courses, but all math used) in first and second year as well as some selected 3rd year courses, that (indirectly) covers a very large part of the foundations. Basically, if a system cannot get that right, what hope is there for the more advanced features being right? If one were to redo a Wester-like review but focused on this aspect of things, I believe that that would be quite valuable. Perhaps not as a tool for deciding which product to purchase, but certainly as a tool to understand which product seems to be built on the most solid foundations.
“I would think that someone would have taken notice of this review and by this time figured out how to get Maple to produce the correct answer.”
I didn’t think that Maple 13 was necessary.
I was thinking that you, Doug Meade, Robert Israel, Jacques Carette or another Maple expert would have, by now, magically wiggled your nose or your digits and fix the problem, just like you fix my problems. I assumed that there must be something wrong with the way that Dermot Hogan used Maple to try to solve his particular obstructed circular optical aperture diffraction problem.
I believe that you can insert a URL by selecting some existing text with the mouse and then, with that text highlighted, using the Insert/Edit Link button.
If you haven't yet written that part of the text then you can insert the link first and then edit it afterwards as source. By that I mean switch to source-mode using the "Source" button at the top of the Editor. Then edit by hand what lies between the <a..> and </a> (leaving the href part alone).
It's mildly inconvenient if the text portion cannot be entered or edited in the Insert/Edit Link pop-up.
That numeric integral is hard, I think, to get with good accuracy. Which is something that the author did not address. How accurate an answer did he want? How accurate an answer did he receive from Mathematica? He appeared to have ignored Mathematica's printed advice and bumped up the MaxRecursion parameter but not chosen Method->Oscillatory. He did not mention that Maple's evalf(Int(..) has [documented] separate options to control both the working precision and an accuracy tolerance.
What I liked about the example is that it illustrates a dichotomy for software. Should it always just try and be super smart and magically handle everything? Or should it provide lots of powerful options and controls to assist with the nastier problems? How should it balance ease of use versus power? And how should it guide the user? Maple's evalf(Int()) can dump out a lot of userinfo messages, if infolevel[`evalf/int`] is set higher than 0. But I don't think that it will use Maple's WARNING() mechanism to offer succinct advice when it fails to converge and returns unevaluated.
An alternative view of the performance on that example is how the two systems behaved when the author threw a nasty problem at them -- likely deliberately in a naive way. On the one hand I think that Maple does have more documented controls than the author claimed to have found (he hinted that he tried stuff), but on the other hand Mathematica was helpful.
This Maple is based on Airy disk. Please take a look and let me know what you think. It's a lot simpler approach than Hogan's. That's because I'm a lot simpler fella.
Unfortunately I don't think that this is going to do anything for Dr. Dermot Hogan or any of the readers of his comparison of Mathematica and Maple. He and they are not going to be satisfied until Maple transforms his expression into a numeric answer.
Hm, yes, Maple is very slow for that functions (which explains a good part of the linked test results).
One way is either to code it (had posted something towards that) or to use a compiled external library like GSL,
so there is no need to use 100 Digits (as in the test report)
However it would not heal the problem of high oscillations, I think that is a filed of its own in Numerics.
The problem however is not (only) numerics for Bessel: since it is used for large arguments one might think of using
asymptotics - and sees that the problem would be at least similar if using sin(50001*x) instead.
Wow, what an effort. I'd like to study that Maple closely. Can you upload a file that I can download or is that not the fasion? I suppose that there are some folks that don't want to take the time to download. They'd rather have it right in front of them. I want to run it and to do so I'll have to cut it, past it and edit it and I'm sure to make mistakes. I'm new around here. I don't know the way that gets results.
I put libgsl.dll in the same directory as 143_acer-method-win.mws and it works. Where is a better place to put the GSL library? I tried c:/binw but that didn't work for me. I got a message that said I should reinstall...
Also, why is all of Acer's Maple red?
And, why do I get a dialog box that says "The worksheet may contain features which are not compatible with the chosen format. Continue?" when I save Acer's and your Maple after I twiddle with it?
a) On WIN the usual directory is the system directory, like C:\WINDOWS\system32
Then usually one does not need to type in the path and just uses the file name
b) jakubi uses the classical interface and there input=red, output=blue
c) You use the standard interface
There are lots of differences between the both, they have different file extensions:
*.mws versus *.mw. Open the original sheet in classical mode, the it works.
Generally (not even for beginners) it is easier to use the classical interface,
but I am quite sure it was said quite often at this board
The place for libgsl.dll is C:\windows\system32. Thank you. I think that that will help a lot.
The thread is chaotic. Is there any way to get it to display in chronological order?
I got this started by asking a stupid question about the equivalence of a definite double integral and a definite single integral. I should have started a new thread back there somewhere and from my blog rather than from this student forum. I hope that I haven't offended anybody. I think that Acer's amazingly magical solution to the Maple won't and Mathematica will problem, this thread and its chaos should end soon.
For convenience in maintenance, I prefer to keep the unix utilities ported to win32 and installed by hand, separated in their own directory within the path. My choice is c:\binw.
I like that idea but when I tried it, it didn't work for me. There must be some path somewhere that needs to have c:\binw added to it. Can you tell me what file I need to edit? TIA
You did it. I think you did it. I'm not quite sure since even though I can run a Windows XP version of your Maple/GSL I don't quite know what all that fancy stuff is about.
So far, I have never seen a problem that can not be solved using Maple. Not that I can solve them all. Please, everybody, do not feel obligated to show me one.
Thank you and all the wizards that gather here. You make this place so amazingly magical and entertaining.
You may use the following
evalb() doesn't return true
Thank you, but Maple still doesn't seem to agree that the last of your equations is always true.
Here is my attempt to repeat what you posted:
View 4937_Page 99 integration Alex Vogt.mw on MapleNet or Download 4937_Page 99 integration Alex Vogt.mw
View file details
I'm sure that I'm doing something that you did not intend. Can you straighten me out?
Not in scope of purpose of evalb
Those advanced mathematical propositions are not within the scope of evalb's design or purpose.
They are not even within the current scope of the "mathematical" verifier `is`. (I don't see a continuous property or type, so I suppose that `is` couldn't make use of an assumption such as D(F)::continuous.) It would be lovely to learn that I'm wrong on that point.
acer
Nice, but can it be nicer still?
Very nice, Axel.
But it seems to me that you have helped Maple out more than you should have had to, by "giving" it the FTOC result.
How about this: instead of,
you could have,
so that Maple does more of the work.
acer
©¿©
acer, Thx ... for reminding that integration option (which actually is needed ...)
Integration by parts
Actually this is a case of integration by parts.
> with(student):
J := int(int(f(s),s=0..t),t=0..x);
intparts(J, op(1,J));
> factor(combine(subs(s=t,value(%))));
My Way
Thank you.
Maple likes this:
I like this:
Can you tell me how to get Maple to display it the way I like it?
View 4937_Page 99 integration Alex Vogt.mw on MapleNet or Download 4937_Page 99 integration Alex Vogt.mw
View file details
Your way
Now, how to get that -t+x to become x-t? Use sort.
And this will make all occurrences of -t+x become x-t. So:
Well, it's almost right. I'm not sure there's an easy way to get the f(t) before the x-t, except entering f(t)*(x-t) by hand before creating J1.
this should be easier
but things sort of this can be done for viewing:
The fact is that frequently it is easier to make the final "touch" of the calculations with pen and paper.
Maple's Way
I think that I've found the reason why I can't have it my way. It has to be Maple's way. The answer is on page 23 of history.siam.org/pdfs2/Gonnet_final.pdf
Not in this case
In this case, Maple could have in fact done things your way. t-x and x-t are definitely different expressions. And while, to Maple -t+x and x-t are the same, (-1)*f(t)*(t-x) and f(t)*(x-t) are in fact different.
Basically, this is due to Maple doing
Note that automatic distribution of integer factors does not happen inside products. So while you have no control over 2*(x-1) [it always show up as 2*x-2], you have control over 2*a*(x-1) [which shows as is]. So, in your case, it is possible to choose to put that -1 factor inside the polynomial factor instead of out.
In fact, it seems that Maple 11 (unlike Maple 9.5) chooses a form closer to your liking.
Of course, we humans prefer our binomial terms with one positive and one negative coefficient to show as A-B rather than -B+A. That is one of those deep design decisions from the early days (see a previous post on that topic) that is unlikely to change.
My Way vs Maple's Way
Jacques,
Thank you, Robert Israel and Jakubi. I can have it my way or at least almost my way. And, I was wrong again. I thought that I had found out why it had to be Maple's way but no, I was wrong.
I read all 84 pages of the Gaston Gonnet Interview and I am a slow reader. I found it very interesting. I also read all of the blog comments so far and I noticed that I am not the only one that says nice things about you:
"Your answers are deep, sharp, well documented and very useful to gain a wider and wiser knowledge of Maple and of what is related to computer algebra."
I agree.
I know nothing of Mathematica. Is there an unbiased comparison of Maple and Mathematica or two, one from each side? I don't think that I'll ever be able to experience Mathematica. I can't afford it.
Would Maple be better off if it had had an iron fisted leader as Mathematica does? What about open source? What is Maple's future?
I'm sorry if these questions are in the wrong place again but I concluded that my words are too close to noise to be in your Gaston Gonnet blog. It's better for me to listen than speak.
A few comments
The only unbiased review(s) that I am aware of that cover a decent chunk of functionality (instead of being very very specific) are from Michael Wester, A Critique of the Mathematical Abilities of CA Systems. Unfortunately, it is quite old (1999), so quite a lot has changed then. Not that more than 20% of the bugs identified in that review have been fixed, but lots of new functionality has been added since. So the overall picture needs updating. But the time investment to do such a critique is gigantic, and under-appreciated.
Other reviews have appeared in the popular (technical) press, but I found all of them quite biased. For example, this review in Bitwise shows really poor understanding of Maple, and so Mathematica comes out ahead. Perhaps that review is really an indictment of how awful Maple's documentation is. Maple is a better functional language than Mathematica, but that reviewer does not think so. That is probably because the Mathematica documentation is not afraid to teach users new ideas, while the Maple documentation tries really hard to keep the number of concepts to an absolute minimum. [For a student audience, Maple's approach is clearly superior. For an audience of smart professionals, I believe that Mathematica's is better].
Would it have been better if Maple had an iron-fisted leader? If that leader was working at and for Maplesoft, and his job/salary depended on the success/failure of the product, then yes, I think that would have made things better. Not for the employees though -- I have talked to many very smart ex-Wolfram Research employees, and they all despised working for Stephen Wolfram. But they were also quite proud of their accomplishments. But having a remote boss is a very bad idea, no matter how good the boss might be.
Maplesoft currently firmly believes that it adds significant value to Maple every release, enough that it can convince the majority of its customers to upgrade. As long as that is that case (ie that they can convince enough customers that that is the case), then there is no real business case for going open source. Well, not completely. There are quite a few esoteric routines that exist in Maple, where Maplesoft has no real expertise in-house, but yet contain bugs; if these bugs annoy enough people, but at the same time it is clear that there is expertise in the greater Maple community to get these bugs fixed, then some parts of Maple could be heaved off into an open source "chunk" of the library. There are all sorts of ways this could be done in ways that could be win-win. The other possibility is that Maplesoft finds it has a much bigger market in derivative products, and the ROI on incremental improvements to Maple itself become negative [this could happen, but is not the case now]. At that time, the issue of open source could be fruitfully reconsidered.
Maple has 'lived' for 28 years. I doubt that it is going to die anytime soon, especially as the company is quite healthy (financially). But in software-years, 28 is very firmly into middle-age. Maple is showing a certain amount of 'bulging up' in the middle.
Google adds
A curiosity.
In the right column of this Bitwise review I see right now four Google adds. The first two are for WRI Mathematica (MathModelica, Mathematica 5) while the second two are not for MapleSoft Maple (Maple Bed, Maple Restaurants) .
Google adds change with time but this sends a message also.
speed of integration
So, how do you get the numerical integration of the first example made at times similar (or smaller) than Mathematica, if the answer was "Our development team will work to address this weakness for an upcoming release of Maple.”?
Wait, work very hard or lobby
You can either wait an undefined amount of time for the weakness to be fixed, or write your own numerical integrator that is better, or write a review of Maple for a widely circulated magazine/journal.
That failure decided the review
The rest is cosmetics.
In the mind of most physicists that I know, if Mathematica can do, and Maple cannot do, some calculation (like this integral) that they need at that moment, Maple is out. Almost certainly, if Mathematica does the job, nobody would loose time writing its own routine. I am not particularly interested in this kind of integrals.
I know this for experience as I have received myself many times requests of similar kind.
Numerical integration and special functions are areas of particular interest to many physicists where Maple has been behind Mathematica.
Read the tea leaves
Or at least try to predict the future via reading the press releases :-) [For those not familiar with the expression, see reading tea leaves on Wikipedia].
It seems that the target market is mostly engineers now. They (engineers) seem to care much less about special functions. Numerical integration is still an issue, but (numerical) DE solving is even more important, as far as I can tell.
Note: why do engineers not care about special functions? Because they have been taught to work numerically, that's why. If they tried to work symbolically on some of their models, they would start to care about special functions as much as the physicists! It is always interesting to me how an education can sometimes act as a barrier to progress.
Writing reviews
It seems to me that the main CAS have grown so large and extended to so much fields that no individual has enough knowledge nor time to provide a comprehensive review of a single system, not to say a fair comparative review. And keep it updated...
Eg, there are packages in Maple that deal with subjects that I have never studied and even I can hardly understand the language in which the help pages are written (eg PolynomialIdeals). Similarly, I think, a mathematician could have problems with the Physics package and so on.
And it would not be very useful to deal only with the sections of the system with which the reviewer is familiar with because the target is also fragmented: I doubt that many engineers would be interested on reading a review by a mathematician on ORE algebras. Or a researcher on string theory reading a review by an educator on a Student subpackage.
Thus, my current thinking is that these so much needed reviews can only be realized collaboratively. Perhaps in a wiki enviroment or something like that.
Folklore on Functional Programming
The association "Functional Programming" <-> Mathematica is not just in the mind of a particularly ignorant reviewer, but it is a "popular legend". A visible example is the article Functional Programming on Wikipedia, its reference 4 and its discussion.
The argumentation of the reviewer is very familiar to me. I have heard it in quite the same terms several times from colleague physicists. Not from anyone, but from the "computers veterans". While talking about our experiences, starting with the first programable calculators in the mid 70's, when we reach the point of the comparison between Maple and Mathematica, the mystical phrase appears: "But Mathematica has a functional programming language, eh!".
Quite probably, the first place where physicists have ever read "functional programming" was in the documentation of Mathematica. I think that it was my case. For sure, it was the thing that said that used it and you had at hand. But at that time I have found it confusing and I prefered very much the procedural programming language of Maple :)
So, where is the documentation explaining the use of the "functional programming paradigm" in Maple?"
I think that the subject of programming languages deserve a comparative review by itself.
Going into more detail, I think that this "wiki-based" system of reviews do
need of both kind of reviews. Specialized ones, you name it: General
Relativity, Statistics, etc; as well as general ones: core mathematics,
programming language, GUI, etc. The latter would be subject for "systemists" as well as serve for reference.
I don't think it exists
As I have said before, the Maple documentation tries really hard not to scare the users by using big words or fancy concepts that might be new. It uses functional ideas throughout, but it doesn't admit it in so many words.
Unlike the Mathematica documentation. Since the Mathematica marketing is that Mathematica is ground-breaking in pretty much everything it does and its users are better off using these brilliant new ideas rather than what they have been taught before, it boldly forges ahead with wild claims.
Frankly, I think both these extremes are awful. Amusingly, they both insult users' intelligence, but by completetely different means.
A Real Life Test
I read the Bitwise Maple 10 vs Mathematica 5.2 review that you referenced in your "A few comments". I was surprised when I got to the end and the reviewer picked Mathematica over Maple. I did gloss over "A Real Life Test" on my first pass. I think he said that he liked the GUI, graphical output and programming language better in Maple than in Mathematica. He also said that the Maple debugger was better than no debugger in Mathematica. In addition, he said that there was probably some other "Real Life Test" that would not run in Mathematica and would run in Maple.
Now this is something that I tried. It's not what the reviewer tried but what is there about this:
that caused it to run for such a very long time?
Not Real
I think that part of the problem with trying to plot that thing is that it may not be real.
I tried this
and still something went wrong.
Let's think about it first
This is a messy integral. Even though the interval is reasonable, [0.35,1], the Bessel function is being evaluated on an interval that it 50001 times larger, [17500.35,50001]. Over this interval, the integrand oscillates quite a few times. An exact value for this integral is unlikely and the oscillations make it difficult to compute with any accuracy.
I am not sure why you were trying to plot the value of a definite integral. Here are a few steps to get a better view on this problem.
Doug
50001
Doug,
Thank you.
Think first. I've heard that before. Unfortunately, I also too often hear myself saying, self: why didn't you, think of that. But I know why I didn’t think of that. It’s simple. You're way smarter than I am.
I was trying to plot because this problem came from this review:
www.bitwisemag.com/copy/reviews/software/maths/maple10_mathematica52.html
and the ultimate answer is a plot (kind of looks like a pulse) in the review.
Please look at this Maple:
View 4937_More Maple vs Mathematica.mw on MapleNet or Download 4937_More Maple vs Mathematica.mw
View file details
I've only been able to get this to run with 5001. Can you make it run with 50001?
highly oscillatory
There are a few things that might be holding Maple back here.
One of those is that the compiled external (NAG) routine d01akc which specializes in oscillatory non-singular integrands has a `max_num_subint` parameter which is not exposed at the user-level in Maple. The accuracy tolerances are exposed, via evalf/Int's `epsilon` parameter. But the maximal number of allowed subintervals is not so exposed. So that specialized routine will fail for an integral behaving like BesselJ(0,50001*x) when it attempts to use more than 200 (a hard coded default value) subintervals. With 200 subintervals only, one can only request an epsilon of about 5e-2 or so for the integrand at hand to succeed. I didn't try to subvert Maple and so test whether that routine could handle 50001*x in reasonable time, if allowed a very high number of subintervals.
Not having a super fast compiled hardware floating-point BesselJ0 may also affect the performance. Axel Vogt made some interesting posts and comments here a while back about fast BesselK and using that for numeric quadrature.
acer
Novice
Is there anything that a novice like me might do to make this happen.
I would think that someone would have taken notice of this review and by this time figured out how to get Maple to produce the correct answer.
resources
The number of things that people believe that they know how to accomplish is greater than the number which can be done well with the time and people resources available. That's the case for Maple development, too.
I don't think highly of an article which seems to put so much weight on a single computational result. I agree with another poster here, that in effect one could judge a CAS by how well it helps in a given discipline that is chosen up front.
Every CAS or piece of math software fails on some (different set of) simple problems. Look at the flood of bug reports about Mathematica 6 recently reported on comp.soft-sys.math.maple. I wouldn't pass definitive judgement on Mathematica based on just a few of those reports. Similarly I wouldn't discount Maple based on a single numerical quadrature result.
I was never a big fan of the Wester review that Jacques cited in an earlier comment in this thread. I can see that some people might like its attempt at breadth. But my view is that since complete coverage is next to impossible it is better to focus on one's particular needs. I'd rather see many discipline- or functionality-specific reviews. Pragmatism, that's all I have to offer.
There is one specialized review of which I'm aware. It focuses on statistics and data analysis, with a bit of overflow into general numerics, plots, i/o and format exchange, etc. It is the ncrunch review of Stefan Steinhaus. Granted it has a few problems, where use of the programs might have been better optimized. But he makes an effort to consult with a representative expert, to get the code into fair shape for all. It's not perfect, and not nearly as expert as Wester's, but it's a start toward discipline-specific analysis. I'd like to see a similar review by, say, mechanical engineers, or 1st-year-calculus college lecturers, or chemists, or...
acer
I generally agree
I was surprised to find myself agreeing with much of what was said above. Nothing to do with acer, but rather that my instinct was to hold the opposite opinion to what was stated above. But acer convinced me that I wasn't so much wrong as suffering from a lack of perspective.
Basically the point is that >I< want a review like Wester's. That is because that fits my own usage pattern of a CAS! Of course, there are few people outside CAS builders and 'generalists' who have this particular use pattern. There are, whoever, definite use patterns amongst different communities that can be fruitfully used to generate good reviews that would be of use for each of those communities. Note that I agree with jakubi that one of the best ways to get these reviews done, especially to help with the aspect of getting representative experts involved, is to use a wiki.
Having said that, somewhere inside a review like Wester's, a really valuable review is hiding. Pretty much all uses of a CAS rely on a core set of features. Now, users of a CAS may not in fact realize that they are constantly using finite fields, polynomial rings or series expansions for a huge number of their (symbolic) computations, but they are. So there is a point to creating a focused review of a CAS's foundational capabilities. This lets you know how solid the base of the system is. Generally speaking, if you take the mathematics covered in all university courses (not just in math courses, but all math used) in first and second year as well as some selected 3rd year courses, that (indirectly) covers a very large part of the foundations. Basically, if a system cannot get that right, what hope is there for the more advanced features being right? If one were to redo a Wester-like review but focused on this aspect of things, I believe that that would be quite valuable. Perhaps not as a tool for deciding which product to purchase, but certainly as a tool to understand which product seems to be built on the most solid foundations.
Resources
Acer,
I think that you misunderstood me when I said:
“I would think that someone would have taken notice of this review and by this time figured out how to get Maple to produce the correct answer.”
I didn’t think that Maple 13 was necessary.
I was thinking that you, Doug Meade, Robert Israel, Jacques Carette or another Maple expert would have, by now, magically wiggled your nose or your digits and fix the problem, just like you fix my problems. I assumed that there must be something wrong with the way that Dermot Hogan used Maple to try to solve his particular obstructed circular optical aperture diffraction problem.
en.wikipedia.org/wiki/Diffraction
en.wikipedia.org/wiki/Airy_disc
www.bitwisemag.com/copy/reviews/software/maths/maple10_mathematica52.html
nvl.nist.gov/pub/nistpubs/jres/103/5/j35mie.pdf
By the way, how do you get nice little discriptive names to appear rather than big ugly URLs?
URLs
I believe that you can insert a URL by selecting some existing text with the mouse and then, with that text highlighted, using the Insert/Edit Link button.
If you haven't yet written that part of the text then you can insert the link first and then edit it afterwards as source. By that I mean switch to source-mode using the "Source" button at the top of the Editor. Then edit by hand what lies between the <a..> and </a> (leaving the href part alone).
It's mildly inconvenient if the text portion cannot be entered or edited in the Insert/Edit Link pop-up.
That numeric integral is hard, I think, to get with good accuracy. Which is something that the author did not address. How accurate an answer did he want? How accurate an answer did he receive from Mathematica? He appeared to have ignored Mathematica's printed advice and bumped up the MaxRecursion parameter but not chosen Method->Oscillatory. He did not mention that Maple's evalf(Int(..) has [documented] separate options to control both the working precision and an accuracy tolerance.
What I liked about the example is that it illustrates a dichotomy for software. Should it always just try and be super smart and magically handle everything? Or should it provide lots of powerful options and controls to assist with the nastier problems? How should it balance ease of use versus power? And how should it guide the user? Maple's evalf(Int()) can dump out a lot of userinfo messages, if infolevel[`evalf/int`] is set higher than 0. But I don't think that it will use Maple's WARNING() mechanism to offer succinct advice when it fails to converge and returns unevaluated.
An alternative view of the performance on that example is how the two systems behaved when the author threw a nasty problem at them -- likely deliberately in a naive way. On the one hand I think that Maple does have more documented controls than the author claimed to have found (he hinted that he tried stuff), but on the other hand Mathematica was helpful.
Hmm. Why isn't Warning a help alias for WARNING.
acer
Simpler
Acer,
That was a lot of words and I enjoyed them all. Thank you.
I think that the answer to Dermot Hogan's “A Real Life Test” in his review is not too many steps beyond the Maple in the following:
View 4937_Airy disc.mw on MapleNet or Download 4937_Airy disc.mw
View file details
This Maple is based on Airy disk. Please take a look and let me know what you think. It's a lot simpler approach than Hogan's. That's because I'm a lot simpler fella.
5.2 dB
Here is some Maple that shows that with a 35% obstructed aperture the first side lobe of the airy disc is 5.2 dB higher than a clear aperture.
View 4937_Airy disc.mw on MapleNet or Download 4937_Airy disc.mw
View file details
Unfortunately I don't think that this is going to do anything for Dr. Dermot Hogan or any of the readers of his comparison of Mathematica and Maple. He and they are not going to be satisfied until Maple transforms his expression into a numeric answer.
Bessel-Functions & numerics
Hm, yes, Maple is very slow for that functions (which explains a good part of the linked test results).
One way is either to code it (had posted something towards that) or to use a compiled external library like GSL,
so there is no need to use 100 Digits (as in the test report)
However it would not heal the problem of high oscillations, I think that is a filed of its own in Numerics.
a crack at it
At the author's special request due to licensing concerns, this comment has been replaced by
this blog entry
Will
nice, I like that :-)
The problem however is not (only) numerics for Bessel: since it is used for large arguments one might think of using
asymptotics - and sees that the problem would be at least similar if using sin(50001*x) instead.
B.T.W. that thread is a bit chaotic
Chaotic Thread
Ya, chaotic and off topic but interesting.
very interesting (moved)
Moved here
A Crack At It
Wow, what an effort. I'd like to study that Maple closely. Can you upload a file that I can download or is that not the fasion? I suppose that there are some folks that don't want to take the time to download. They'd rather have it right in front of them. I want to run it and to do so I'll have to cut it, past it and edit it and I'm sure to make mistakes. I'm new around here. I don't know the way that gets results.
Windows version
Find here a Maple 11 Classical worksheet with this Windows version of the acer's calculation:
Download 143_acer-method-win.mws
Except, perhaps, for the small numerical differences I do not know whether there is something else to remark here.
And excuses for my contribution to the chaos :)
libgsl.dll
Thank you but I seem to be missing a library. I don't have libgsl.dll. I searched for it and didn't find it. I got the following message:
"Error, external linking: error loading external library c:/binw/libgsl.dll: The specified module could not be found."
What, everybody's not using Windows XP! So Bill Gates isn't Hegeman yet. I've got an OLPC on order.
It looks like Google can help me find and get libgsl.dll.
Moving
Read here. It is for Windows.
If your operating system is Linux, I guess that acer's code should work straight away.
It Works!
Thanks, I got it running. I think that
-2.00775e-7 + I*4.27539e-8 should be
-2.00775e-7 + I*4.27539e-7
Acer seems to be getting the correct answer. Does any body but Acer have any doubts?
Is there any place I can read about NAG? I'm not sure I want to read about it but I might.
GNU Scientific Library
I put libgsl.dll in the same directory as 143_acer-method-win.mws and it works. Where is a better place to put the GSL library? I tried c:/binw but that didn't work for me. I got a message that said I should reinstall...
Also, why is all of Acer's Maple red?
And, why do I get a dialog box that says "The worksheet may contain features which are not compatible with the chosen format. Continue?" when I save Acer's and your Maple after I twiddle with it?
Download 4937_143_acer-method-win.mws
View file details
o weh ...
this is a chaotic thread ...
a) On WIN the usual directory is the system directory, like C:\WINDOWS\system32
Then usually one does not need to type in the path and just uses the file name
b) jakubi uses the classical interface and there input=red, output=blue
c) You use the standard interface
There are lots of differences between the both, they have different file extensions:
*.mws versus *.mw. Open the original sheet in classical mode, the it works.
Generally (not even for beginners) it is easier to use the classical interface,
but I am quite sure it was said quite often at this board
GSL place
The place for libgsl.dll is C:\windows\system32. Thank you. I think that that will help a lot.
The thread is chaotic. Is there any way to get it to display in chronological order?
I got this started by asking a stupid question about the equivalence of a definite double integral and a definite single integral. I should have started a new thread back there somewhere and from my blog rather than from this student forum. I hope that I haven't offended anybody. I think that Acer's amazingly magical solution to the Maple won't and Mathematica will problem, this thread and its chaos should end soon.
unix ports
For convenience in maintenance, I prefer to keep the unix utilities ported to win32 and installed by hand, separated in their own directory within the path. My choice is c:\binw.
Path
I like that idea but when I tried it, it didn't work for me. There must be some path somewhere that needs to have c:\binw added to it. Can you tell me what file I need to edit? TIA
You Did It
Acer,
You did it. I think you did it. I'm not quite sure since even though I can run a Windows XP version of your Maple/GSL I don't quite know what all that fancy stuff is about.
So far, I have never seen a problem that can not be solved using Maple. Not that I can solve them all. Please, everybody, do not feel obligated to show me one.
Thank you and all the wizards that gather here. You make this place so amazingly magical and entertaining.
p_0 vs p0
Why is it that I can not replace p0 with p_0 in the following Maple?
View 4937_Airy disc.mw on MapleNet or Download 4937_Airy disc.mw
View file details
I can not get p[0] to work either. p0 works fine.