Mac Dude

1576 Reputation

17 Badges

14 years, 120 days

MaplePrimes Activity


These are questions asked by Mac Dude

I am having difficulties with a recursive function call with named parameters.

The proc is defind as follows:

Subs:=proc(eqn::seq(equation),elemt::Element,{num::boolean:=false},$) option remember;
...
qs[i]=Subs(eqn,elemt[qs[i]]); # This is where I need to add something like 'num'=num
...
end proc;

My difficulty is with the "num" flag. In the code this flag governs whether to try to evalf() certain results or not. That and the recursion per se all works. What does not work is when I add the num option to the internal call. I have been trying 'num'=num, ''num''=num, "num"=num and `num`=num.  I either get an error that something like true=true is not a valid argument here, or that "num" is not valid.

Any hint?

Thanks,

Mac Dude

I have the following function involving 2 piecewise constructs:

ftotal := -1.70678763408500*10^6*dpp[f]*piecewise(t < 0, 0, 0 <= t and t <= t1, 1-cos(t*Pi/t1), t1 < t, 2)-3.41357526817000*10^6*corrFac*piecewise(t < 0, 0, 0 <= t and t <= t1, 1/2-(1/2)*cos(2*t*Pi/t1), t1 < t, 0)+3.51914976100000*10^8;

(This is a result from a prior calculation in Maple; I did not create this construct orginally). The condition blocks are the same for both piecewise functions so this can be simplified to one piecewise function. Per the Help this can be achieved using convert:

convert(ftotal,piecewise,t);

but I get this error:

Error, (in PiecewiseTools:-Convert) unable to compare 0 and t1

Since I pasted everything into a new sheet I know that t has no assigned value. Same is true for t1 (and specifically I need this for general t and t1). The conversion to Heaviside works; but converting from that back to piecewise fails with the same error.

Is there any way I can achieve the desired result other than doing it by hand?

Sample sheet is attached. I originally ran into this in Maple 2016 but verified the same issue is present in Maple 2017.

Thanks,

M.D.

piecewise.mw

Maple has had object-oriented features since about version 15, implemented with modules and records and the ability to define exports of these. Methods can be defined and called using module:-Method() and properties in a similar way including hierarchical constructs. Overloading of functions is possible, although I have run into trouble trying to overload build-in function. While this mechanism is not fully oo, I have found it enormously helpful for larger projects and a distinguishing feature of Maple.

More recently, the option object was added to modules. What are the true new functionalities? I see that the syntax for methods has changed (Method(object,arguments) rather than module:-method(arguments)) but I do not see how that is an improvement. I guess there are also now bona-fide constructors, doing what used to be done with a module factory (a proc that returns an instance of a module). And Object(object) seems to do what copy(module) does.

I am conceptualizing a larger package that will make use of the oo features of modules. I know I can write this using the established :- syntax using modules. Are there any benefits to using the newer objects rather than modules and records (& I know that all these are essentially modules)?

TIA,

M.D.

I am trying to use the element properties Maple has in its ScientificConstants package. I am running into problems with the density of gaseous elements:

with(ScientificConstants);

Units:-UsingSystem(); # returns SI as expected

GetValue(Element('Si',density)); # returns 2329.0000 [kg/m^3] which is 2.329 g/cm^3, which is correct

GetValue(Element('H',density(gas))); # returns 88 [kg/m^3], which is incorrect.

PDG gives the density of hydrogen as 8.376E-5 g/cm^3, which is 0.08376 kg/m^3.  

Even more crazy for Krypton:

GetValue(Element('Kr',density(gas))); # returns 3677.000 [kg/m^3]. Heavy little buggers, these Kypton atoms! Should be 3.486 in the same units.

What gives? Am I missing something here?

Mac Dude

 

 

I would like to create a Maple Workbook of my Lattice Package so I can put it on MapleCloud. I had an email exchange with Daniel Skoog from Maplesoft about this, and he even sent me an example that looked easy enough to adapt to my purposes. Alas, it does not work. Here is the code I wrote to assemble the already extant files:

restart;
                "Maple Initialization loaded..."
# Build Lattice workbook following example from Daniel Skoog, MapleSoft:
currentdir();
 "/Applications/Math_Calc/Maple 2015/Packages/Lattice/Lattice

    Version 1.1.0 release files"
# We have all files already from the App Center submission, so just assemble the workbook
PackageTools:-Create("Lattice.maple",\
"MLA file"="Lattice.mla",\
"Lattice.help",\
"Source"="Lattice1.1.mpl",\
"Build procedure"="Lattice1.1.mw",\
"Manual"="The Lattice Package Users Guide.mw",\
"Release Notes"="V1.1 Release Notes.rtf");
Error, (in march) unable to attach worksheet file The Lattice Package Users Guide.mw


When I look at the created workbook (Lattice.maple), the only members included are Lattice.help, the Build procedure Lattice1.1.mw and the source file Lattice.mpl. In particular, Lattice.mla is not there, which is the most important one.

What am I doing wrong? What does "march" (which sounds like machine architecture) have to do with it??

I also don't quite know how to "install" it. I assume I just put the whole workbook into a directory accessible through libname ?

Mac Dude

PS: I could have sorted this privately with Daniel, but this may be of interest to others as well so I hope he'll answer through this forum.

Lattice1.1_workbook_maker.mw

4 5 6 7 8 9 10 Last Page 6 of 24