acer

32587 Reputation

29 Badges

20 years, 35 days
Ontario, Canada

Social Networks and Content at Maplesoft.com

MaplePrimes Activity


These are answers submitted by acer

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

As far as I know it is only possible to specify one light source.

The wording in the documentation might be improved, but I suppose the idea is that it is providing an alternative to the Light1, Light2, etc, stock lighting model choices.

[edited] Sorry, I was in a rush earlier.

I often find it helpful to remember that the results of plotting commands -- plot structures -- are just unevaluated function calls. One can assemble them manually, as well as pick them apart. The stock plotting commands just happen to provide useful functionally for constructing particular plot structures that the GUI renders with some commonly wanted appearances.

There are a few interesting things that can be constructed manually, yet don't have a path to that construction via the stock commands. I don't believe that's the case here.

There are also a few things one can discover.

The PLOT3D function call (structure) can have a MESH substructure as one representation of a surface. The LIGHT function call (substructure) has no effect if it appears as a local plot option within a MESH substructure.

The LIGHT substructure only has an effect as one of the arguments of the outer PLOT3D structure. Sometimes this is referred to as a global plot option, on account of this. And the Standard GUI seems to only utilize the last LIGHT substructure found in the outer PLOT3D structure. In other words, only one lighting source can be specified per PLOT3D structure.

note. One of the important jobs of plots:-display is to sort out what global plot options are present, when passed multiple plot structures, and merge them when possible.

LIGHT_structure.mw

I'm not sure what you want changed.

For your animations, you don't have to put the common plot (common to all frames) in a display call with the other bits. If you use the plots:-animate command then it can look a little tighter, IMO.

Also, if you use a few procedures then you could probably avoid using do-loops that assigned to k, n, etc. And so you might not need to keep unassigning those.

And some plot options like xtickmarks, labels, etc, only need to be supplied to the final display call (or animate).

with(Statistics): with(plots):
ChisquarePDF := unapply(PDF(RandomVariable(ChiSquare(a)),var), [a,var]):
NormalPDF := unapply(PDF(RandomVariable(Normal(mu,sigma)),var), [mu,sigma,var]):

h := algsubs(x = sqrt(2*n)*w + n,sqrt(2*n)*ChisquarePDF(n, x)):
makeN := k -> display(plot(eval(h,n=20*k), w = -3.52 .. 3.52, color=red, thickness=2),
                      textplot([1.8, 0.3, sprintf("n = %a",round(20*k))],
                               font=[TIMES,BOLD,12], color=blue)):
animate(makeN, [k], k=1..15, frames=15, paraminfo=false,
        background = plot(NormalPDF(0, 1, x), x = -3.52 .. 3.52, color = blue, thickness=2),
        title = `pdf of the Sum of Transformed Chi-square(1)\nRandom Variables and the N(0,1) pdf`,
        titlefont=[TIMES,BOLD,12], labels=[``,``],
        xtickmarks=[-3.5+0.5*k$k=0..14], ytickmarks=[0.05*k$k=1..8]);

It would be much better to upload a worksheet with 2D Input, rather than to try and paste that in as plain text.

If your term typed in as 2 k alpha[1] alpha[2]0 is just a typographical mistake, and you intended 2 k alpha[1] alpha[2] instead, then how do you feel about k=0, w=0 ?

solve_sys.mw

For fun, here are a few additional ways to customize plots for this.

You can uncomment some of the options below, for a few more variations.

restart;

plots:-setoptions(gridlines=false):

A := [3, 4, 10, 14, 15, 16];
B := [10, 20, 30, 40, 50, 60];

[3, 4, 10, 14, 15, 16]

[10, 20, 30, 40, 50, 60]

 

plots:-display(((a,b)->plottools:-line([a,0],[a,b],color=blue))~(A,B)
               #, view=[0..max(A),DEFAULT]
               , thickness=1
               #, xtickmarks=A
               );

plots:-display(((a,b,r)->plottools:-line([a,0],[a,b/r],color=blue))~(A,B,add(B))
               , view=[0..max(A),DEFAULT]
               , thickness=3
               , xtickmarks=A
              );

r := add(B):
plots:-display(seq(plottools:-polygon([ [A[i]-1/2, 0], [A[i]-1/2, B[i]/r],
                                        [A[i]+1/2, B[i]/r], [A[i]+1/2, 0] ],
                                      color=blue),
                   i=1..nops(A))
               #, view=[0..max(A)+1/2,DEFAULT]
               , thickness=0
               #, style=surface
               #, xtickmarks=A
              );

plots:-display(((i,b,r)->plottools:-line([i,0],[i,b/r],color=blue))~([$1..nops(A)],B,add(B))
               , view=[0..nops(A),DEFAULT]
               , thickness=3
               , xtickmarks=[seq(i=A[i],i=1..nops(A))]
              );

r := add(B):
plots:-display(seq(plottools:-polygon([ [i-1/2, 0], [i-1/2, B[i]/r],
                                        [i+1/2, B[i]/r], [i+1/2, 0] ],
                                      color=blue),
                   i=1..nops(A))
               #, view=[0..max(A)+1/2,DEFAULT]
               , thickness=0
               #, style=surface
               , xtickmarks=[seq(i=A[i],i=1..nops(A))]
              );

 

NULL

Download Histogram_varieties.mw

Regarding your Question 2, yes, you can construct procedures that can selectively apply trig formulas according to their argument.

Here is one example of using applyrule to selectively apply a formula.

There are several other ways to accomplish your goal. For example, you could programmatically build some side-relation equations -- using chosen names or arguments -- for use within a call to simplify. Or you could utilize applyrule with a general rule and temporarily freeze the trig calls you want untouched. And most of these approaches could be abstracted further, where one writes procedures which generate the rules, or procedures which generate procedures.

restart;

 

Rdcos := proc(ff::algebraic,nm::list(algebraic):=anything)
                local tp, x;
                if nm=anything then tp := nm;
                else tp := :-identical(op(nm));
                end if;
                applyrule([cos(x::tp)^2=(cos(2*x)+1)/2,
                           cos(x::tp)^(-2)=2/(cos(2*x)+1)], ff);
              end proc:

 

Rdcos( 2*cos(t)^2-1 );

cos(2*t)

Rdcos( cos(t)^2 );

(1/2)*cos(2*t)+1/2

Rdcos( cos(p*t+q)^(-2) );

2/(cos(2*p*t+2*q)+1)

# targeted
Rdcos( cos(p*t+q)^(-2) + cos(a*t+c)^(-2), [a*t+c] );

1/cos(p*t+q)^2+2/(cos(2*a*t+2*c)+1)

foo := expand( cos(2*t) + cos(2*s)/2 + 1 + cos(2*phi) ) + cos(3*y)^2;

2*cos(t)^2-3/2+cos(s)^2+2*cos(phi)^2+cos(3*y)^2

# targeted
Rdcos(foo, [t]);

cos(2*t)-1/2+cos(s)^2+2*cos(phi)^2+cos(3*y)^2

# targeted
Rdcos(foo, [t, s]);

cos(2*t)+(1/2)*cos(2*s)+2*cos(phi)^2+cos(3*y)^2

Rdcos(foo);
simplify(%-foo);

cos(2*t)+3/2+(1/2)*cos(2*s)+cos(2*phi)+(1/2)*cos(6*y)

0

 

Download targeted_doubleangle.mw

The call rand(1 .. 2) constructs and returns a procedure which can then be called to obtained a (random) number in the given range.

If instead you call rand(1 .. 2)() then the constructed procedure will be called immediately and return an actual number.

But you don't need to call rand each time through the loop. You can call it once, outside the loop, to construct the random number generating procedure. Then, inside the loop, you can call that procedure to get actual numbers.

restart

a := Vector[row](1 .. 10)

Vector[row](%id = 18446884022782214982)

randomize()

r := rand(1 .. 2); for k to 10 do if r() < 3/2 then a[k] := "H" else a[k] := "T" end if end do

a

Vector[row](%id = 18446884022782214982)

NULL

Download CoinToss_acc.mw

You cannot sensibly assign to xi and xi[0] like that. I suggest using another name instead of xi[0]. The name xi__0 will also prettyrpint as a subscripted name.

restart;
l := -2;
m := 1;
k := sqrt(-1/(6*beta))/l;
w := (1/5)*alpha/(beta*l);
a[2] := -12*sqrt(-1/(6*beta))*alpha*m^2/(5*l*l);
a[0] := 0;
a[1] := 0;
F := -l*C[1]/(m*(C[1]+cosh(l*(xi+xi__0))-sinh(l*(xi+xi__0))));
beta := -2;
alpha := 3;
C[1] := -1/1000;
xi__0 := 1;
xi := k*x-t*w;
u := a[0]+a[1]*F+a[2]*F*F;

plot3d(u, x = -3 .. 3, t = -3 .. 3);

Any fixed image will look pixelated if you zoom in enough. Your example creates a 500-by-500 pixel image, so of course it'll look pixelated with even a moderate amount of zoom, if embedded at the same resolution.

You can either increase the resolution of the image (you had it as 500-by-500), or you can dynamically recreate the image as you zoom in.

Eg, (with all the calls in separete Execution Groups or Document Blocks!)

restart;
# Compare these next two results.
# You can chop, crop, and then rescale the one with higher resolution,
# to get the effect of zooming.

ImageTools:-Embed(Fractals:-EscapeTime:-Julia(900,
                                     -0.01*(1.0+I)+(-1.7-1.7*I),
                                     0.01*(1.0+I)+(1.7+1.7*I),
                                     -0.8 + 0.16*I,
                                     iterationlimit=70, output=layer1)):

ImageTools:-Embed(Fractals:-EscapeTime:-Julia(500,
                                     -0.01*(1.0+I)+(-1.7-1.7*I),
                                     0.01*(1.0+I)+(1.7+1.7*I),
                                     -0.8 + 0.16*I,
                                     iterationlimit=70, output=layer1)):


restart;
# Or you can regenerate and redisplay, to the modest size, as you zoom.

Explore( Fractals:-EscapeTime:-Julia(500,
                                     -0.01*(3.0+I)+(-2.0-2.0*I)/exp(zoom),
                                     0.01*(3.0+I)+(2.0+2.0*I)/exp(zoom),
                                     -0.8 + 0.16*I,
                                     iterationlimit=70, output=layer1)
         , parameters=[ zoom=0.0..4.0 ]
         , size=[500,500]
         , animate
         , placement=left );

julia_zoom.mw

Another alternative is to create a high resolution image just once, and then Explore the fixed smaller resolution (say, 500-by-500) effect of using ImageTools:-Scale to chop and scale that original, thus zooming in. That would also let you pan around. And most of the computational time would be "up front". Here's an example of that with a 6000-by-6000 starting image. (Reduce that initial size, if it uses too much memory for you.) As you can see, no matter how high the resolution of the original, eventually zooming in far enough to a fixed image willl result in a pixelated look. Hence my preference for the former scheme above, where the computation is re-done for every "zoomed" range.

restart;

N := 6000;

# This first computation takes some time. (7sec for me, but YMMV)
raw := Fractals:-EscapeTime:-Julia(N,
                                   -0.01*(1.0+I)+(-1.7-1.7*I),
                                   0.01*(1.0+I)+(1.7+1.7*I),
                                   -0.8 + 0.16*I,
                                   iterationlimit=70, output=layer1):

Z:=proc(N,cv,ch,s)
   uses ImageTools;
   if not [cv,ch]::list(posint) then
     return 'procname'(args);
   end if;
   Scale(raw[ceil(cv-(N/2-s)/2)..floor(cv+(N/2-s)/2),
             ceil(ch-(N/2-s)/2)..floor(ch+(N/2-s)/2)],
             1..500,1..500);
end proc:

Explore(Z(N, cv, ch, s),
        cv=N/4..3*N/4, ch=N/4..3*N/4, s=0..N/2,
        initialvalues=[cv=N/2, ch=N/2]);

image_zoom.mw

If your whole computation is intended to deal with floating-point arithmetic (like your example) then you can improve performance by using either evalhf or Compile, as shown below.

You have unwisely chosen to show us only a portion of your complete work. It's is possibly that other parts of your complete work will not run directly under evalhf or Compile. But in that case you could still split off the portions which do from those which do not. Help cannot be given for the parts you do not reveal to us.

You mentioned memory issues, and name the figure 4Gb, for your complete work. It's not clear at all whether that refers to bytes used or bytes allocated. It's also unclear whether you're main difficulty is in how long the computation takes, or whether the whole problem requires excessive allocation of memory.

restart; FF := proc (xx::Array, nn::integer) local gg, i, j; gg := 0; for i by 3 to nn do for j from i+3 by 3 to nn do gg := gg+1/((xx[i]-xx[j])^2+(xx[i+1]-xx[j+1])^2+(xx[i+2]-xx[j+2])^2) end do end do; return gg end proc; N := 10^4-1; A := Array(1 .. N, [seq(i^2, i = 1 .. N)], datatype = float[8]); CodeTools:-Usage(evalhf(FF(A, N)))

9999

memory used=1.36KiB, alloc change=0 bytes, cpu time=2.09s, real time=2.09s, gc time=0ns

0.166139869037898848e-2

restart; FF := proc (xx::(Array(datatype = float[8])), nn::integer) local gg, i, j; gg := 0.; for i by 3 to nn do for j from i+3 by 3 to nn do gg := gg+1/((xx[i]-xx[j])^2+(xx[i+1]-xx[j+1])^2+(xx[i+2]-xx[j+2])^2) end do end do; return gg end proc; cFF := Compiler:-Compile(FF); N := 10^4-1; A := Array(1 .. N, [seq(i^2, i = 1 .. N)], datatype = float[8]); CodeTools:-Usage(cFF(A, N))

9999

memory used=1.35KiB, alloc change=0 bytes, cpu time=219.00ms, real time=219.00ms, gc time=0ns

0.166139869037898848e-2

``

Download procedure_new_ac.mw

[edited] I've put my earlier Answer's commentary, into this attached copy of my earlier worksheet. That took about 7 minutes to find a point that attained about 1e-3 as largest equation residual of the problem cast as a global optimization problem. It turned out that minimum point could be used by fsolve to quickly find an actual root. kompletter_nachbau_v0_acer_fsolve_commented.mw

The methodology includes eliminating h[0] by equating the rhs's of two pairs from the three equations containing that that variable (after isolating for it). The variable p was treated specially, and bounds supplied for all remaining variables.

Later, it occurred to me that fsolve could be attempted for every p value attempted, following the inner DirectSearch:-SolveEquations step. I then discovered that the first p value tried was succeeding, for a variety of fixed p values within some bounds. This cut the total computation time down from about 7 minutes to about 7 seconds. And it allows finding multiple distinct roots. kompletter_nachbau_v0_acer_fsolve_3.mw

Then it occurred to me that perhaps having a starting point (for fsolve) that was close to globally optimal in the (sum of squares of residuals) optimization problem might not be necessary for fsolve to succeed in finding an actual root. So here is a revision where SolveEquations provides a feasible (all equations real-valued) starting point for fsolve, where that point may not be particularly close to optimal. The evaluationlimit option is passed to SolveEquations with a relatively small value of 1000. And this subsequently produces an actual root from fsolve. And there are no ranges supplied for any of the variables. And the whole thing takes 1.5 seconds on a fast machine.

(I've put the equations into the Startup Code region, so they don't take up space here.)
Download kompletter_nachbau_v0_DS_fsolve.mw

restart

with(DirectSearch):

str := time[real]():

gleichungssystem2 := subs({Inputparameter}, gleichungssystem1)

altraw := map(lhs-rhs, subs(convert({Inputparameter},rational,exact),
                            gleichungssystem1)):

# Equations containing h[0]
#
h0eqns := [seq(`if`(has(altraw[i], h[0]), i, NULL), i=1..nops(altraw))];

[14, 15, 16]

# Eliminate h[0]
#
extra := rhs(isolate(altraw[14],h[0])) - rhs(isolate(altraw[15],h[0])),
         rhs(isolate(altraw[16],h[0])) - rhs(isolate(altraw[15],h[0])):
alt := altraw[1..13] union {extra}:

# Conditions ensuring arguments of radicals are positive
#
conds := {seq(op(1,aaa)>=0, aaa=indets(alt,radical))}:

 

# Low evaluationlimit may suffice, as it seems what fsolve needs
# is no so much a point that is optimal (of sum of squares of residuals)
# but rather just a decent feasible point (all equations evaluate to real).
#
DSSE := DirectSearch:-SolveEquations([op(gleichungssystem2)],
                                     conds, # union {p>0, p<1e-4},
                                     evaluationlimit=1000):

# Use previous optimal point as initial point to solve those
# same equations. (Weird, that SolveEquation doesn't do this bit.)
#
fans := fsolve(alt, remove(has,{op(DSSE[3])},h[0]));

{p = 0.5873104761e-4, T[0] = -3226.477932, T[1] = -10389.65995, T[2] = -13287.95780, T[3] = -5690.196806, T[4] = -8730.784993, T[5] = -10039.07912, T[6] = 3758.058761, T[7] = 3822.377886, T[8] = 4927.420763, T[9] = 5853.670172, T[10] = 8255.256673, T[11] = 9846.839687, T[12] = 19780.45791, T[13] = 48411.97339}

# Evaluate all original equations at `fans` values, and compute
# h[0] as optimization problem.
#
h0sol := SolveEquations( [op(eval(select(has,gleichungssystem2,{h[0]}), fans))] ):
h0sol[3];

[h[0] = HFloat(-0.00817591521032101)]

# Now fsolve original equations using previous fsolve result
# along with new optimizing h[0] value as starting point.
#
final := fsolve(gleichungssystem2, fans union {op(h0sol[3])});

{p = 0.5873104761e-4, T[0] = -3226.477932, T[1] = -10389.65995, T[2] = -13287.95780, T[3] = -5690.196806, T[4] = -8730.784993, T[5] = -10039.07912, T[6] = 3758.058761, T[7] = 3822.377886, T[8] = 4927.420763, T[9] = 5853.670172, T[10] = 8255.256671, T[11] = 9846.839687, T[12] = 19780.45791, T[13] = 48411.97339, h[0] = -0.8175915566e-2}

map(rhs-lhs, eval(gleichungssystem2, final));

{-0.1e-5, -0.2e-9, -0.1e-9, -0.5e-10, -0.24e-10, 0., 0.1e-9, 0.6e-9, 0.13e-8, 0.15e-8, 0.16e-8, 0.2e-8, 0.3e-8}

(time[real]() - str)*'seconds';

1.498*seconds

 

 

Firstly, you need to upload an actual Worksheet or Document, if you want us to be able to see precisely what you have. Use the big green arrow in the Mapleprimes editor pane, to upload and attach.

You need to fix your brackets, which don't always match in several of your examples.

Eg. the call to the eval command in your second proc has mismatched round brackets. It's missing the closing bracket.

And in one of your calls to the procedure you have mismatched square brackets.

There are other syntax problems, some possibly related to attempts at getting implicit multiplication. But it's impossible to be sure without an actual upload.

If 2D Input in a Document is too much trouble for you, you can change the preference to be 1D plaintext Maple notation in  Worksheet. (I suggest this, for new users.)

eq := a*b=a*c;

                        eq := a b = a c

gcd(rhs(eq), lhs(eq))

                               a

map(`/`, eq, gcd(rhs(eq), lhs(eq)));

                             b = c
First 163 164 165 166 167 168 169 Last Page 165 of 338