JacquesC

Prof. Jacques Carette

2401 Reputation

17 Badges

20 years, 77 days
McMaster University
Professor or university staff
Hamilton, Ontario, Canada

Social Networks and Content at Maplesoft.com

From a Maple perspective: I first started using it in 1985 (it was Maple 4.0, but I still have a Maple 3.3 manual!). Worked as a Maple tutor in 1987. Joined the company in 1991 as the sole GUI developer and wrote the first Windows version of Maple (for Windows 3.0). Founded the Math group in 1992. Worked remotely from France (still in Math, hosted by the ALGO project) from fall 1993 to summer 1996 where I did my PhD in complex dynamics in Orsay. Soon after I returned to Ontario, I became the Manager of the Math Group, which I grew from 2 people to 12 in 2.5 years. Got "promoted" into project management (for Maple 6, the last of the releases which allowed a lot of backward incompatibilities, aka the last time that design mistakes from the past were allowed to be fixed), and then moved on to an ill-fated web project (it was 1999 after all). After that, worked on coordinating the output from the (many!) research labs Maplesoft then worked with, as well as some Maple design and coding (inert form, the box model for Maplets, some aspects of MathML, context menus, a prototype compiler, and more), as well as some of the initial work on MapleNet. In 2002, an opportunity came up for a faculty position, which I took. After many years of being confronted with Maple weaknesses, I got a number of ideas of how I would go about 'doing better' -- but these ideas required a radical change of architecture, which I could not do within Maplesoft. I have been working on producing a 'better' system ever since.

MaplePrimes Activity


These are answers submitted by JacquesC

In this worksheet (View file details), you see a few of my experiments with it. The 'best' route to solve such integrations problems is usually via dsolve! Anyways, one can at least rewrite in terms of the inverse Laplace transform of something fairly simple, which is perhaps a start. Another method of attack is via recurrences, viz:
> de := gfun[holexprtodiffeq](1/exp(eta)*eta*hypergeom([1, 1, 1],[2, 2, 2],eta), y(eta)):
> re := gfun[diffeqtorec](de, y(eta), q(n)):
> terms := rsolve(re,q(n)):
> sum(terms, n=0..infinity);

  infinity
   -----
    \          n
     )     (-1)
    /
   -----
   n = 0

        /                                                   2\
        |                         2                       Pi |
        |-1/2 (Psi(n + 1) + gamma)  + 1/2 Psi(1, n + 1) - ---|/
        \                                                 12 /

        GAMMA(n + 1)
What you are trying to do is, generally, a very bad idea. Maple lists are read-only, so 'modifying' them actually means making a copy (since some other variable might be referring to the 'old' list). Think of Maple lists as read-only arrays. Modifying such a list can be an absolute efficiency nightmare. Much better would be if you told us what you are actually trying to do, and we could help you find the 'best' Maple data-structure for your problem.
This is indeed a non-trivial issue, especially since Maple does offer so many good choices of data-structures here. The one-size-fits-all hammer of 'objects' of other languages is not a good guide to Maple design. You are better off getting out books on 'data-structures' and even some of the older ones on 'structured programming' to get an instinct of good Maple design. You can also apply design ideas from the functional languages. For your particular case, I would tend to use a Record (because it makes the code more readable). You could also use the older-style unevaluated function with positional arguments [ie Square(a,b,c) with position a for NumPossible, b for Possible(9), c for Number)]. You get more support from Maple (structured types, etc) to deal with this, but it is a fragile design. Tables should only be used when you have a really dynamic structure and you will be adding fairly random data (including very sparse data) to it. Or you need O(1) lookup. And sometimes when you are trying to get around idiosyncracies of Maple's list [but the ListTools package nowadays should be the way to get around that].
Change that 0.6 to 6/10, and (for me), solve returns an answer almost immediately. Strangely, fsolve, given the evalf'ed system, does not find a solution. By the way, if I evalf the solution I get from solve, it is {u = 13.96596590, v = .4284809961, w = .5641277712}
What about using AR := map(Re, A) and AI := map(Im, A) to split your data, and then issuing 2 separate writedata commands?
You have provided too few details about your problem, which is why you have not gotten any answers. Could you provide some sample code?
P[legend] := proc(l::posint,m::nonnegint, x::symbol)     local P1;     P1 := (1/(2^l*l!))*diff((x^2-1)^l, [x$l]);     ((1-(x^2))^(m/2))*diff(P1, [x$m]); end proc Note that the m=0 case is not separated out anymore. The main thing to notice is the [] in the call to diff - this is documented but not very often used feature, which is too bad since it works in more cases! Also, note the types. And I made the code 'functional' (Maple always returns the last expression evaluated). Last, but not least, globals are BAD, so I passed in a symbol.
While Maple can represent ranges in various ways (1..3, INTERVAL(1..3), RealRange(1,3) depending on the command), the standard mathematical notation of 1 ≤ x ≤ 3 does not work, at least in the Maple language. However, there is a (vague) chance that this notation can work in 2D input mode in Maple 11 - it would be worth a try. And if it doesn't work, then it is possible that Maplesoft would consider this something worth implementing.
This means that either x or y are vectors of dimension < 3. Try to do x[3] and y[3] to see which one. Also note that 'sum' is really for symbolic sums, in the case above you are much better off using add instead.
I believe what you are looking for is evala(Indep({RootOf(Q),RootOf(P)}, 'rels')); which will give you the set of all relations (if any) between algebraic extensions.
You probably used a naked < instead of &lt; in your post, so it got cut off.
The bug is in the 2D editor. Switch to 1D input and that will go away. There is a decent chance that this bug is fixed in 11.
The Maple symbol for infinity is the full name 'infinity'. With that in your worksheet, the integral comes out as 1/4*A^2*h^(1/2)/a^(1/2)/m^(1/2) (after a simplify), which is probably what you are looking for? By the way, the error function (see ?erf) is defined to be the cumulative density function for the Gaussian, which otherwise does not have a closed-form. In other words, it is essentially the 'name' for the input integral you gave!
subs(tan = (x->sin(x)/cos(x)), eq1) is what you are looking for. Actually, what you probably really want is convert(eq1, 'sincos'). Once in a while, that does too much, when you might want to instead use eval(eq1, tan=(x->sin(x)/cos(x))) It is extremely rare that 'subs' is the right tool - eval is almost always better. subs suffers from name-capture issues as well as not respecting alpha-equality of binders, both of which eval is designed to deal with.
The simplest way is A := LinearAlgebra[IdentityMatrix](5,5,'compact'=false);. If you know the type of the entries of your matrix, it is a good idea to also do B := LinearAlgebra[IdentityMatrix](5,5,'compact'=false, outputoptions=[datatype=integer]);
First 18 19 20 21 22 23 Page 20 of 23