acer

32373 Reputation

29 Badges

19 years, 334 days
Ontario, Canada

Social Networks and Content at Maplesoft.com

MaplePrimes Activity


These are answers submitted by acer

Regarding double precision: There is a scalar HFloat constructor. You can also store them in datatype=float[8] rtables, and do arithmetic on those. You can operate with double precision floats under evalhf mode, including passing in float[8] rtables. You can also operate with them in procedures treated by Compile:-Compile.

Regarding single precision: You can store single precision floats in datatype=float[4] rtables. With some effort you may be able to get arithmetic on those via external calling to MKL (not sure, it's picky).

For fun (and you could fix this up for negative values, I expect),

restart;

x := 0.25;
                           x := 0.25

h := convert(ArrayTools:-Alias(Vector([x],datatype=float[4]),
                               integer[4])[1],hex);

                         h := 3E800000

ArrayTools:-Alias(Vector([convert(h,decimal,16)],
                         datatype=integer[4]),float[4])[1];

                       0.250000000000000

restart;

x := 0.33;
                           x := 0.33

h := convert(ArrayTools:-Alias(Vector([x],datatype=float[4]),
                               integer[4])[1],hex);
                         h := 3EA8F5C3

ArrayTools:-Alias(Vector([convert(h,decimal,16)],
                         datatype=integer[4]),float[4])[1];

                       0.330000013113022

You may compare this with results obtained here (including the close radix-10 value obtained when reversing the process, compared to what that site describes as, "Most accurate representation = 3.300000131130218505859375E-1".)

plots:-shadebetween(sin(x), cos(x), x = -Pi .. Pi, gridlines = true);

restart;

N:=0:M:=0:N1:=1+N:w:=10:
ini1:= x(0)=0.5,y(0)=0.5,z(0)=0:
var:={x(t),y(t),z(t)}:
dsys:={diff(z(t),t)=-(N1+M*cos(2*w*t))*z(t)-1+f*(x(t)+y(t)),
       diff(x(t),t)=-(N1-I*w-2*M*exp(-2*I*w*t))*x(t)-f*(N1+(z(t)))
                    -2*f*M*exp(2*I*w*t),
       diff(y(t),t)=-(N1+I*w-2*M*exp(2*I*w*t))*y(t)-f*(N1+(z(t)))
                    -2*f*M*exp(-2*I*w*t)}:
zd:=subs(dsys,diff(z(t),t)):

res:=dsolve(dsys union {x(0)=0.5,y(0)=0.5,z(0)=0},
            parameters=[f] ,numeric, output=listprocedure):

zfun:=eval(z(t),res):

Zf:=proc(t,f)
  global lastf;
  if not [t,f]::list(numeric) then
    return 'procname'(args); end if;
  if f<>lastf then
    lastf:=f;
    zfun(parameters=[f]);
  end if;
  zfun(t);
end proc:

plot(Zf(t,1), t=0..7);

CodeTools:-Usage( plot3d(Zf(t,f), f=1..10, t=0..3, grid=[29,49]) );

memory used=1.07GiB, alloc change=0 bytes, cpu time=9.07s, real time=9.08s, gc time=1.28s

 

Download plot3d_ivp_param.mw

Calling plot3d the other way, as,
    plot3d(Zf(t,f), t=0..3, f=1..10, grid=[49,29])
takes about 3.6 minutes on my machine.

You could open a command line shell in your Operating System, and call Maple's Command Line Interface executable with the name of a text file containing Maple code.

For example, on Linux in a terminal window,

    /usr/local/maple/Maple2018/bin/maple  myfile.mpl

where file myfile.mpl is a plaintext file of Maple code.

On MS-Windows it might be something like,

   "C:\\Program Files\Maple 2018\bin.X86_64_WINDOWS\cmaple.exe"  myfile.mpl

(For MS-Windows, Inside a Maple session, including inside a Maple GUI session, you can issue the Maple command kernelopts(bindir) to see the location of the cmaple.exe executable.)

You can read about the options supported by the CLI executable on the Maple Help page with topic maple .

In the very first nested double loop of the worksheet (over i and j), there are assignments to PDE[5][i, j] and other PDE[..] entries.

In the assignment to PDE[5][i, j] there is an instance of chi without indices, in a subexpression like,

    ( chi+(sum(C[1][j, k]*W[i, k], k = 1 .. M))/lambda2 )

This seems like a mistake.

Later on, chi is replaced with a Matrix, so that subexpression seems to not make sense.

If I (guess and) change that to chi[i,j] then a valid system of equations gets passed to fsolve, and a numeric root is found for that system.

test_fsolve_ac.mw

 

One approach is to construct a Worksheet/Document that looks how you want it (pair of empty input lines, say), save it somewhere, and then make that your custom "start page".

Eg,  From the main menubar, Tools -> Options -> Interface and change the drop-menu item Open worksheet at startup to  Specified worksheet . Make that point at your saved file. Optionally, set that file as read-only in your Operating System, outside of Maple, so that you don't accidentally overwrite it once you start work. That is, always do Edit -> Save As before any Edit -> Save, to save new work to a new file.

You should then always be able to get to this template using the "start page" icon from the menubar, which looks like a house.

 

Thomas's answer is good and useful.

But, since you asked about sum, it could be noticed that there is a difference in behavior for eval versus limit of the reciprocal of that factorial call. And sum can try to use both.

restart;

eval(1/(n-1)!, n=0);
Error, numeric exception: division by zero

eval(1/GAMMA(n), n=0);
Error, (in GAMMA) numeric exception: division by zero

limit(1/GAMMA(n), n=0);
                               0

limit(1/(n-1)!, n=0);
                               0

So, when n is considered real (as under your sum examples), the limit of the reciprocal comes out as zero (even though the limit from left and right of the factorial call are infinity with opposite signs).

In the following attachment, sum does try to evaluate factorial with argument -1, early on. When that fails it can try limit instead (on the reciprocal expression) and get the 0 result.

factorial_sum_numericvent.mw

Use the stopat and unstopat commands to insert and remove DEBUG() calls within the procedure body.

You can supply an extra argument to the stopat command, to specifiy a line number.

You can see the line numbers by issuing the showstat command, eg. showstat(genpellsolve) .

It's hardly suprising that the debugger isn't being effective in your example, given that the DEBUG() is after all the computations in the genpellsolve procedure except for the return. So the debugger won't intervene until the return line, with the way you've written it.

debugger_basics.mw

Do you mean this?

restart;

expr := sqrt(1+diff(y(x),x)^2);

(1+(diff(y(x), x))^2)^(1/2)

Physics:-diff( expr, diff(y(x),x) );

(diff(y(x), x))/(1+(diff(y(x), x))^2)^(1/2)

subs( Y = diff(y(x), x),
      diff( subs( diff(y(x), x) = Y, expr ), Y ) );

(diff(y(x), x))/(1+(diff(y(x), x))^2)^(1/2)

 

Download physicsdiff.mw

There are lots of slight variations that can produce this. Here is another below, which happens to not require using op to yank out the first frame of the spacecurve animation.

You could also generate a 3D line-segment using just two end-points, rather than a spacecurve with its default number of data points.

You might be interested to know that the thickness=2 option you had in your second call to animate is eventually affecting most of the structures. It clobbers the thickness=3 you had on the spacecurve, and even affects the plane. This is because you have it as an option to the animate command itself, rather than as one of the arguments to the plotting command (which appear inside the brackets, the second argument passed to animate).

You could also use spacecurve instead of plot3d for the helix, and then pick up the color=red option which you seemed to be wanting(?) there. This also makes a smaller memory footprint. The "size" of animation structures in Maple can often affect GUI, or export, time performance, so I thought you might like to know.

restart;
with(VectorCalculus): with(Student[LinearAlgebra]): with(plots):

v[i] := 145000: thetabn := (1/8)*Pi: thetavn := (1/6)*Pi: k := 10: omegac := .5:
lrange := 6*Pi: v[b] := cos(2*thetabn)/cos(thetabn):
v[g] := sin(2*thetabn)/cos(thetabn): n := `<,>`(k*cos(thetabn), k*sin(thetabn), 0):
vr := [v[b]*t, v[g]*sin(omegac*t)/omegac, v[g]*cos(omegac*t)/omegac]:
lambda := v[i]*cos(thetavn)/cos(thetabn):

pt := [t, 0, v[g]/omegac]:
pline := A -> display(plottools:-line(eval(pt,t=lrange), eval(pt,t=A),
                      thickness = 3)):

shockplot := PlanePlot(n, caption = "",
                       planeoptions = [colour = blue, transparency = .5],
                       normaloptions = [shape = cylindrical_arrow, colour = red]):
t1 := textplot3d([k*cos(thetabn), k*sin(thetabn), 0, 'n'], align = above):
B := animate(pline, [A], A = lrange .. 0, paraminfo = false,
             background = display(shockplot, t1)):
C := animate(spacecurve, [[v[b]*t, v[g]*sin(omegac*t)/omegac,
                           v[g]*cos(omegac*t)/omegac],
                          t = 0 .. x, colour = red, thickness = 2],
             x = 0 .. lrange, paraminfo = false, labels = [" ", zeta, xi],
             background = display(shockplot, t1, pline(0))):

display([B, C], insequence,
        axes=none, orientation=[-158,-17,0], scaling=constrained);

 

There appear to be infinitely many solutions in the set determined just by {c11=-1. c9,c3=-1.,c5=-1. c7,omega=0} .

So, as long as you make c11, c3, c5, and omega respect that, then you could make the remaining variables take on whatever scalar values you want.

NULL

restart

eq(1) := 1+c(3)+c(5)+c(7)+c(9)+c(11) = 0

eq(2) := 1.0379456*c(2)*(omega^2)^(1/4)+1.0379456*c(4)*(omega^2)^(1/4)+.89185524*c(6)*(omega^2)^(1/4)+.89185524*c(8)*(omega^2)^(1/4)+1.0379456*c(10)*(omega^2)^(1/4)+1.0379456*c(12)*(omega^2)^(1/4) = 0

eq(3) := 1.1182111*(omega^2)^(3/4)*sin(.27713148*(omega^2)^(1/4))-1.1182111*c(2)*(omega^2)^(3/4)*cos(.27713148*(omega^2)^(1/4))+1.1182111*c(3)*(omega^2)^(3/4)*sinh(.27713148*(omega^2)^(1/4))+1.1182111*c(4)*(omega^2)^(3/4)*cosh(.27713148*(omega^2)^(1/4))+.70938680*c(5)*(omega^2)^(3/4)*sin(.23812535*(omega^2)^(1/4))-.70938680*c(6)*(omega^2)^(3/4)*cos(.23812535*(omega^2)^(1/4))+.70938680*c(7)*(omega^2)^(3/4)*sinh(.23812535*(omega^2)^(1/4))+.70938680*c(8)*(omega^2)^(3/4)*cosh(.23812535*(omega^2)^(1/4))+1.1182111*c(9)*(omega^2)^(3/4)*sin(.27713148*(omega^2)^(1/4))-1.1182111*c(10)*(omega^2)^(3/4)*cos(.27713148*(omega^2)^(1/4))+1.1182111*c(11)*(omega^2)^(3/4)*sinh(.27713148*(omega^2)^(1/4))+1.1182111*c(12)*(omega^2)^(3/4)*cosh(.27713148*(omega^2)^(1/4))+.20600541*omega^2*(cos(.27713148*(omega^2)^(1/4))+c(2)*sin(.27713148*(omega^2)^(1/4))+c(3)*cosh(.27713148*(omega^2)^(1/4))+c(4)*sinh(.27713148*(omega^2)^(1/4))+c(5)*cos(.23812535*(omega^2)^(1/4))+c(6)*sin(.23812535*(omega^2)^(1/4))+c(7)*cosh(.23812535*(omega^2)^(1/4))+c(8)*sinh(.23812535*(omega^2)^(1/4))+c(9)*cos(.27713148*(omega^2)^(1/4))+c(10)*sin(.27713148*(omega^2)^(1/4))+c(11)*cosh(.27713148*(omega^2)^(1/4))+c(12)*sinh(.27713148*(omega^2)^(1/4))-0.10275662e-1*(omega^2)^(1/4)*sin(.27713148*(omega^2)^(1/4))+0.10275662e-1*c(2)*(omega^2)^(1/4)*cos(.27713148*(omega^2)^(1/4))+0.10275662e-1*c(3)*(omega^2)^(1/4)*sinh(.27713148*(omega^2)^(1/4))+0.10275662e-1*c(4)*(omega^2)^(1/4)*cosh(.27713148*(omega^2)^(1/4))-0.88293670e-2*c(5)*(omega^2)^(1/4)*sin(.23812535*(omega^2)^(1/4))+0.88293670e-2*c(6)*(omega^2)^(1/4)*cos(.23812535*(omega^2)^(1/4))+0.88293670e-2*c(7)*(omega^2)^(1/4)*sinh(.23812535*(omega^2)^(1/4))+0.88293670e-2*c(8)*(omega^2)^(1/4)*cosh(.23812535*(omega^2)^(1/4))-0.10275662e-1*c(9)*(omega^2)^(1/4)*sin(.27713148*(omega^2)^(1/4))+0.10275662e-1*c(10)*(omega^2)^(1/4)*cos(.27713148*(omega^2)^(1/4))+0.10275662e-1*c(11)*(omega^2)^(1/4)*sinh(.27713148*(omega^2)^(1/4))+0.10275662e-1*c(12)*(omega^2)^(1/4)*cosh(.27713148*(omega^2)^(1/4))) = 0

eq(4) := 1.1182111*(omega^2)^(3/4)*sin(.27713148*(omega^2)^(1/4))-1.1182111*c(2)*(omega^2)^(3/4)*cos(.27713148*(omega^2)^(1/4))+1.1182111*c(3)*(omega^2)^(3/4)*sinh(.27713148*(omega^2)^(1/4))+1.1182111*c(4)*(omega^2)^(3/4)*cosh(.27713148*(omega^2)^(1/4))+.70938680*c(5)*(omega^2)^(3/4)*sin(.23812535*(omega^2)^(1/4))-.70938680*c(6)*(omega^2)^(3/4)*cos(.23812535*(omega^2)^(1/4))+.70938680*c(7)*(omega^2)^(3/4)*sinh(.23812535*(omega^2)^(1/4))+.70938680*c(8)*(omega^2)^(3/4)*cosh(.23812535*(omega^2)^(1/4))+1.1182111*c(9)*(omega^2)^(3/4)*sin(.27713148*(omega^2)^(1/4))-1.1182111*c(10)*(omega^2)^(3/4)*cos(.27713148*(omega^2)^(1/4))+1.1182111*c(11)*(omega^2)^(3/4)*sinh(.27713148*(omega^2)^(1/4))+1.1182111*c(12)*(omega^2)^(3/4)*cosh(.27713148*(omega^2)^(1/4))-.20600541*omega^2*(-0.79735630e-1*(omega^2)^(1/4)*sin(.27713148*(omega^2)^(1/4))+0.79735630e-1*c(2)*(omega^2)^(1/4)*cos(.27713148*(omega^2)^(1/4))+0.79735630e-1*c(3)*(omega^2)^(1/4)*sinh(.27713148*(omega^2)^(1/4))+0.79735630e-1*c(4)*(omega^2)^(1/4)*cosh(.27713148*(omega^2)^(1/4))-0.68512877e-1*c(5)*(omega^2)^(1/4)*sin(.23812535*(omega^2)^(1/4))+0.68512877e-1*c(6)*(omega^2)^(1/4)*cos(.23812535*(omega^2)^(1/4))+0.68512877e-1*c(7)*(omega^2)^(1/4)*sinh(.23812535*(omega^2)^(1/4))+0.68512877e-1*c(8)*(omega^2)^(1/4)*cosh(.23812535*(omega^2)^(1/4))-0.79735630e-1*c(9)*(omega^2)^(1/4)*sin(.27713148*(omega^2)^(1/4))+0.79735630e-1*c(10)*(omega^2)^(1/4)*cos(.27713148*(omega^2)^(1/4))+0.79735630e-1*c(11)*(omega^2)^(1/4)*sinh(.27713148*(omega^2)^(1/4))+0.79735630e-1*c(12)*(omega^2)^(1/4)*cosh(.27713148*(omega^2)^(1/4))+0.99000000e-2*cos(.27713148*(omega^2)^(1/4))+0.99000000e-2*c(2)*sin(.27713148*(omega^2)^(1/4))+0.99000000e-2*c(3)*cosh(.27713148*(omega^2)^(1/4))+0.99000000e-2*c(4)*sinh(.27713148*(omega^2)^(1/4))+0.99000000e-2*c(5)*cos(.23812535*(omega^2)^(1/4))+0.99000000e-2*c(6)*sin(.23812535*(omega^2)^(1/4))+0.99000000e-2*c(7)*cosh(.23812535*(omega^2)^(1/4))+0.99000000e-2*c(8)*sinh(.23812535*(omega^2)^(1/4))+0.99000000e-2*c(9)*cos(.27713148*(omega^2)^(1/4))+0.99000000e-2*c(10)*sin(.27713148*(omega^2)^(1/4))+0.99000000e-2*c(11)*cosh(.27713148*(omega^2)^(1/4))+0.99000000e-2*c(12)*sinh(.27713148*(omega^2)^(1/4))) = 0

eq(5) := cos(0.51897280e-3*(omega^2)^(1/4))+c(2)*sin(0.51897280e-3*(omega^2)^(1/4))+c(3)*cosh(0.51897280e-3*(omega^2)^(1/4))+c(4)*sinh(0.51897280e-3*(omega^2)^(1/4)) = c(5)*cos(0.44592762e-3*(omega^2)^(1/4))+c(6)*sin(0.44592762e-3*(omega^2)^(1/4))+c(7)*cosh(0.44592762e-3*(omega^2)^(1/4))+c(8)*sinh(0.44592762e-3*(omega^2)^(1/4))

eq(6) := -1.0379456*(omega^2)^(1/4)*sin(0.51897280e-3*(omega^2)^(1/4))+1.0379456*c(2)*(omega^2)^(1/4)*cos(0.51897280e-3*(omega^2)^(1/4))+1.0379456*c(3)*(omega^2)^(1/4)*sinh(0.51897280e-3*(omega^2)^(1/4))+1.0379456*c(4)*(omega^2)^(1/4)*cosh(0.51897280e-3*(omega^2)^(1/4)) = -.89185524*c(5)*(omega^2)^(1/4)*sin(0.44592762e-3*(omega^2)^(1/4))+.89185524*c(6)*(omega^2)^(1/4)*cos(0.44592762e-3*(omega^2)^(1/4))+.89185524*c(7)*(omega^2)^(1/4)*sinh(0.44592762e-3*(omega^2)^(1/4))+.89185524*c(8)*(omega^2)^(1/4)*cosh(0.44592762e-3*(omega^2)^(1/4))

eq(7) := -1.0773311*sqrt(omega^2)*cos(0.51897280e-3*(omega^2)^(1/4))-1.0773311*c(2)*sqrt(omega^2)*sin(0.51897280e-3*(omega^2)^(1/4))+1.0773311*c(3)*sqrt(omega^2)*cosh(0.51897280e-3*(omega^2)^(1/4))+1.0773311*c(4)*sqrt(omega^2)*sinh(0.51897280e-3*(omega^2)^(1/4)) = -4.4787661*c(5)*sqrt(omega^2)*cos(0.44592762e-3*(omega^2)^(1/4))-4.4787661*c(6)*sqrt(omega^2)*sin(0.44592762e-3*(omega^2)^(1/4))+4.4787661*c(7)*sqrt(omega^2)*cosh(0.44592762e-3*(omega^2)^(1/4))+4.4787661*c(8)*sqrt(omega^2)*sinh(0.44592762e-3*(omega^2)^(1/4))

eq(8) := 1.1182110*(omega^2)^(3/4)*sin(0.51897280e-3*(omega^2)^(1/4))-1.1182110*c(2)*(omega^2)^(3/4)*cos(0.51897280e-3*(omega^2)^(1/4))+1.1182110*c(3)*(omega^2)^(3/4)*sinh(0.51897280e-3*(omega^2)^(1/4))+1.1182110*c(4)*(omega^2)^(3/4)*cosh(0.51897280e-3*(omega^2)^(1/4)) = 3.9944110*c(5)*(omega^2)^(3/4)*sin(0.44592762e-3*(omega^2)^(1/4))-3.9944110*c(6)*(omega^2)^(3/4)*cos(0.44592762e-3*(omega^2)^(1/4))+3.9944110*c(7)*(omega^2)^(3/4)*sinh(0.44592762e-3*(omega^2)^(1/4))+3.9944110*c(8)*(omega^2)^(3/4)*cosh(0.44592762e-3*(omega^2)^(1/4))

eq(9) := c(5)*cos(0.28806924e-1*(omega^2)^(1/4))+c(6)*sin(0.28806924e-1*(omega^2)^(1/4))+c(7)*cosh(0.28806924e-1*(omega^2)^(1/4))+c(8)*sinh(0.28806924e-1*(omega^2)^(1/4)) = c(9)*cos(0.33525643e-1*(omega^2)^(1/4))+c(10)*sin(0.33525643e-1*(omega^2)^(1/4))+c(11)*cosh(0.33525643e-1*(omega^2)^(1/4))+c(12)*sinh(0.33525643e-1*(omega^2)^(1/4))

eq(10) := -.89185524*c(5)*(omega^2)^(1/4)*sin(0.28806924e-1*(omega^2)^(1/4))+.89185524*c(6)*(omega^2)^(1/4)*cos(0.28806924e-1*(omega^2)^(1/4))+.89185524*c(7)*(omega^2)^(1/4)*sinh(0.28806924e-1*(omega^2)^(1/4))+.89185524*c(8)*(omega^2)^(1/4)*cosh(0.28806924e-1*(omega^2)^(1/4)) = -1.0379456*c(9)*(omega^2)^(1/4)*sin(0.33525643e-1*(omega^2)^(1/4))+1.0379456*c(10)*(omega^2)^(1/4)*cos(0.33525643e-1*(omega^2)^(1/4))+1.0379456*c(11)*(omega^2)^(1/4)*sinh(0.33525643e-1*(omega^2)^(1/4))+1.0379456*c(12)*(omega^2)^(1/4)*cosh(0.33525643e-1*(omega^2)^(1/4))

eq(11) := -1.0773311*c(9)*sqrt(omega^2)*cos(0.33525643e-1*(omega^2)^(1/4))-1.0773311*c(10)*sqrt(omega^2)*sin(0.33525643e-1*(omega^2)^(1/4))+1.0773311*c(11)*sqrt(omega^2)*cosh(0.33525643e-1*(omega^2)^(1/4))+1.0773311*c(12)*sqrt(omega^2)*sinh(0.33525643e-1*(omega^2)^(1/4)) = -4.4787661*c(5)*sqrt(omega^2)*cos(0.28806924e-1*(omega^2)^(1/4))-4.4787661*c(6)*sqrt(omega^2)*sin(0.28806924e-1*(omega^2)^(1/4))+4.4787661*c(7)*sqrt(omega^2)*cosh(0.28806924e-1*(omega^2)^(1/4))+4.4787661*c(8)*sqrt(omega^2)*sinh(0.28806924e-1*(omega^2)^(1/4))

eq(12) := 1.1182110*c(9)*(omega^2)^(3/4)*sin(0.33525643e-1*(omega^2)^(1/4))-1.1182110*c(10)*(omega^2)^(3/4)*cos(0.33525643e-1*(omega^2)^(1/4))+1.1182110*c(11)*(omega^2)^(3/4)*sinh(0.33525643e-1*(omega^2)^(1/4))+1.1182110*c(12)*(omega^2)^(3/4)*cosh(0.33525643e-1*(omega^2)^(1/4)) = 3.9944110*c(5)*(omega^2)^(3/4)*sin(0.28806924e-1*(omega^2)^(1/4))-3.9944110*c(6)*(omega^2)^(3/4)*cos(0.28806924e-1*(omega^2)^(1/4))+3.9944110*c(7)*(omega^2)^(3/4)*sinh(0.28806924e-1*(omega^2)^(1/4))+3.9944110*c(8)*(omega^2)^(3/4)*cosh(0.28806924e-1*(omega^2)^(1/4))

sys:=eval({seq(eq(i),i=1..12)},
          map(u->u=cat(op(0,u),op(u)),indets({seq(eq(i),i=1..12)},specfunc(c)))):

cand := solve(eval(sys,omega=0));

{c11 = -1.*c9, c3 = -1., c5 = -1.*c7, c7 = c7, c9 = c9}

part := remove(evalb,{omega=0} union cand);

{c11 = -1.*c9, c3 = -1., c5 = -1.*c7, omega = 0}

eval(sys, part);

{0. = 0, 0. = 0.}

 

NULL

Download solve_ac.mw

 

Using Maple 18 (like you),

restart

lambda1 := 0.733e-1:

expr := (Z^(lambda2/lambda1))^2*ln(Z)^2/((Z-1+alpha)^2*(Z^(lambda2/lambda1)-1+alpha)^3):

evalf(Int(expr, Z = 1 .. infinity, method = _Dexp));

0.1150342055e-6

evalf(Int(1/expand(1/expr), Z = 1 .. infinity));

0.1150342058e-6

new := ln(Z)^2/((Z-1+alpha)^2*expand((Z^(lambda2/lambda1)-1+alpha)^3/(Z^(lambda2/lambda1))^2)):

evalf(Int(new, Z = 1 .. infinity));

0.1150342058e-6

 

NULL

Download ask_ac.mw

 

It's possible that `evalf/int/control` is not falling back gracefully, after encountering the overflow.

It might even be fun(?) to use the URL package to look up the current conversion rate and amend the AUD unit's conversion formula.

restart:

Units:-AddUnit(dollar, context=AUD, abbreviations=AUD, conversion=0.75*USD);

Units:-UseUnit(AUD): Units:-UseUnit(1/AUD):

BC:=6000*Unit(AUD); #Battery Cost

6000*Units:-Unit(AUD)

BS:=3*Unit(kWh/d); #Battery Storage

3*Units:-Unit(kWh/d)

EC:=.264*Unit(AUD/kWh); #Electricity Cost

.264*Units:-Unit(AUD/kWh)

BC/EC/(1+.035)^t/BS=t*Unit(yr)

7575.757577*Units:-Unit(AUD)/(Units:-Unit(AUD/kWh)*1.035^t*Units:-Unit(kWh/d)) = t*Units:-Unit(yr)

pt:=fsolve(%,t)

13.18033222

FIT:=0.09*Unit(AUD/kWh); #Feed In Tarrif rate

0.9e-1*Units:-Unit(AUD/kWh)

combine(BS*FIT*pt*Unit(year),units);

1299.783619*Units:-Unit(AUD)

combine(subs(t=pt,convert(EC*BS, units,AUD/yr)*(1+.035)^t*t*Unit(year)),units);

6000.000002*Units:-Unit(AUD)

 

Download CURRENCY_AUD.mw

You can left-align each of a sequence of Typesetting:-mtr rows, and then put them inside a call to Typesetting:-mtable .

(This is similar to how Matrices are typeset, but without the braces.)

I haven't bothered to remove your Tsprintf procedure, now unused. And I haven't bothered to make the conditional branches more streamlined (it shouldn't be necessary to make it all explicit like that).

You could also have various different procedures that each returned their own Typesetting:-mtr call (eg. for different kinds of question). You wouldn't be able to print them, until you could wrapped all such results in a single Typesetting:-mtable call.

restart

TSprintf := proc () Typesetting:-mrow(seq(`if`(e::string, Typesetting:-mn(e), Typesetting:-Typeset(Typesetting:-EV(e))), e = [args])) end proc

multiple := proc (jjj) local dsdsds, ii, tudo1, num1, num, dsd, dsss1, dsss2, dsss3, r, R; dsdsds := rand(1 .. 4); for r to jjj do ii := dsdsds(); tudo1 := [1, 123456, 12345667890, 123456789012345]; num1 := rand(1 .. nops(tudo1())); dsd := sprintf("%a", tudo1[num1()]); dsss1 := sprintf("%a", tudo1[num1()]); dsss2 := sprintf("%a", tudo1[num1()]); dsss3 := sprintf("%a", tudo1[num1()]); if ii = 1 then R[r] := Typesetting:-mtr(Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("A", mathcolor = `#ff0000`), Typesetting:-mtext(". "), Typesetting:-mtext(dsd))), Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("B"), Typesetting:-mtext(". "), Typesetting:-mtext(dsss1))), Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("C"), Typesetting:-mtext(". "), Typesetting:-mtext(dsss2))), Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("D"), Typesetting:-mtext(". "), Typesetting:-mtext(dsss3))), 'columnalign' = 'left') elif ii = 2 then R[r] := Typesetting:-mtr(Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("A"), Typesetting:-mtext(". "), Typesetting:-mtext(dsss1))), Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("B", mathcolor = `#ff0000`), Typesetting:-mtext(". "), Typesetting:-mtext(dsd))), Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("C"), Typesetting:-mtext(". "), Typesetting:-mtext(dsss2))), Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("D"), Typesetting:-mtext(". "), Typesetting:-mtext(dsss3))), 'columnalign' = 'left') elif ii = 3 then R[r] := Typesetting:-mtr(Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("A"), Typesetting:-mtext(". "), Typesetting:-mtext(dsss1))), Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("B"), Typesetting:-mtext(". "), Typesetting:-mtext(dsss2))), Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("C", mathcolor = `#ff0000`), Typesetting:-mtext(". "), Typesetting:-mtext(dsd))), Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("D"), Typesetting:-mtext(". "), Typesetting:-mtext(dsss3))), 'columnalign' = 'left') else R[r] := Typesetting:-mtr(Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("A"), Typesetting:-mtext(". "), Typesetting:-mtext(dsss1))), Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("B"), Typesetting:-mtext(". "), Typesetting:-mtext(dsss2))), Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("C"), Typesetting:-mtext(". "), Typesetting:-mtext(dsss3))), Typesetting:-mtd(Typesetting:-mrow(Typesetting:-mtext("D", mathcolor = `#ff0000`), Typesetting:-mtext(". "), Typesetting:-mtext(dsd))), 'columnalign' = 'left') end if end do; Typesetting:-mtable(seq(op([R[r], `$`(Typesetting:-mtr(), 2)]), r = 1 .. jjj)) end proc

randomize()

multiple(7)

"[["A"". ""123456","B"". ""12345667890","C"". ""12345667890","D"". ""123456789012345"],[],[],["A"". ""1","B"". ""1","C"". ""1","D"". ""123456"],[],[],["A"". ""12345667890","B"". ""123456","C"". ""123456789012345","D"". ""123456789012345"],[],[],["A"". ""12345667890","B"". ""12345667890","C"". ""1","D"". ""1"],[],[],["A"". ""123456","B"". ""123456789012345","C"". ""123456","D"". ""123456789012345"],[],[],["A"". ""12345667890","B"". ""1","C"". ""12345667890","D"". ""123456789012345"],[],[],["A"". ""12345667890","B"". ""123456789012345","C"". ""123456","D"". ""123456"],[],[]]"

``

Download Goi_mapleprime_ac.mw

You can easily generate a sequence of such things.

So, you could use such a generated sequence in the arguments of the Minimize command.

seq(x[i]=1..2, i=1..5);

    x[1] = 1 .. 2, x[2] = 1 .. 2, x[3] = 1 .. 2, x[4] = 1 .. 2, x[5] = 1 .. 2

op(map(v->v=1..2, [W, a, x, y]));

             W = 1 .. 2, a = 1 .. 2, x = 1 .. 2, y = 1 .. 2

expr := a^2+sin(b*Pi+c):

indets(expr, And(name,Non(constant)));

                          {a, b, c}

op(map(v->v=1..2, indets(expr, And(name,Non(constant)))));

               a = 1 .. 2, b = 1 .. 2, c = 1 .. 2
First 160 161 162 163 164 165 166 Last Page 162 of 336