acer

32732 Reputation

29 Badges

20 years, 100 days
Ontario, Canada

Social Networks and Content at Maplesoft.com

MaplePrimes Activity


These are answers submitted by acer

Do you mean this one?

proc(f,x,y,ndata,nvars)
   local G,init,nparams,k;
   nparams := nops(f);
   init := `if`(type(x, 'Vector'), (i,j)->evalf(f[j](x[i])),
                  (i,j)->evalf(f[j](seq(x[i,k], k=1..nvars))));
   G := Matrix(ndata, nparams, 'datatype'=float, init);
   LinearFitting:-LinearLS(y, G, ndata, nparams, args[6..-1]);
end proc;

I think that it might be a local of an unnamed(?) module which also contains an overloaded LinearFit (to which the export LinearFit of Statistics:-Regression somehow refers...).

You can enter it, in a debugger run of a LinearFit call, and list its contents.

You can use items from the Palette menus for this, which appear in the left panel of the Maple GUI.

In the special case that it is an arrow that you want on top then you can find a dedicated entry for it on the Accents palette.

You could also first enter the appropriate stacked item (template) from the Layout palette. Replace the lower portion by u, and the upper portion by your choice from the Arrows palette.

You can use the Tab key (or mouse pointer) to move focus around the entered item.

You can manage which of the many available palettes appear in the left panel, using GUI's main menu/ribbon.

The odetest result can be further manipulated and simplified to zero under assumptions.

In my Maple 2024.2 it can get it, assuming x::real

In my Maple 2022.2 it can get it, assuming x::posint, though that raises an error like yours in 2024.2.

In that Maple 2022.2 it gets it around 4 out of 5 times (after restart) for x::real, but always gets it for x>0.

restart;

kernelopts(version);

`Maple 2024.2, X86 64 LINUX, Oct 29 2024, Build ID 1872373`

sol:=y(x) = -4/9*I*(x+1)^(1/4)*(x-1)^(1/4)*2^(1/2)*x^2
            +4/9*(x+1)^(1/4)*(x-1)^(1/4)*2^(1/2)*x^2
            +4/9*I*(x+1)^(1/4)*(x-1)^(1/4)*2^(1/2)
            +1/9*x^4-4/9*(x+1)^(1/4)*(x-1)^(1/4)*2^(1/2)
            -16/9*I*(x+1)^(1/2)*(x-1)^(1/2)-2/9*x^2+1/9:
ode:=(-x^2+1)*diff(y(x),x)+x*y(x) = x*(-x^2+1)*y(x)^(1/2):
IC:=y(0) = 1:

foo := simplify(evala(odetest(sol,[ode,IC]))) assuming x::real;

[(1/3)*(x+1)*x*(x-1)*((-2+2*I)*(x+1)^(1/4)*2^(1/2)*(x-1)^(1/4)-x^2+((4-4*I)*(x+1)^(5/4)*2^(1/2)*(x-1)^(5/4)+x^4-(16*I)*(x+1)^(1/2)*(x-1)^(1/2)-2*x^2+1)^(1/2)+1), 0]

G := foo[1]/(1/3*(x+1)*(x-1)*x):

G1 := op(3,G):

G2 := G - G1:

new := 1/3*(x+1)*(x-1)*x*(G2^2-G1^2)/(G2-G1):

# Compare the two expressions
normal( foo[1] - new );

0

simplify(expand( new )) assuming x::real;

0

Download nm_odetest_ex3.mw

Ideally simplify or odetest itself would be able to get the zero directly, either under assumption x::real, or under assumption x::posint.

You can insert a reference to an Equation Label using Ctrl-l , or Command-l on Mac OS X. (That's Ctrl and the "L" key.)

No, not all versions have a dedicated "What's New" page just for differential equations.

The general layout and naming of these pages changes, and is not fixed.

Some releases have a specific section for DEs in the "Advanced Math" What's New page. It depends on how much was new in that functionality.

The areas of focus for development change over time.

The example illustrates a weakness in `simplify`.

With a little help, the `odetest` result can be simplified to zero, using `simplify`.

Below, I also give a few other examples with similar weakness.

restart;

kernelopts(version);

`Maple 2024.2, X86 64 LINUX, Oct 29 2024, Build ID 1872373`

ode:=diff(y(x), x) = y(x)*(-1 - x^(2/(ln(x) + 1))*exp(2*ln(x)^2/(ln(x) + 1))*x^2 - x^(2/(ln(x) + 1))*exp(2*ln(x)^2/(ln(x) + 1))*x^2*ln(x) + x^(2/(ln(x) + 1))*exp(2*ln(x)^2/(ln(x) + 1))*x^2*y(x) + 2*x^(2/(ln(x) + 1))*exp(2*ln(x)^2/(ln(x) + 1))*x^2*y(x)*ln(x) + x^(2/(ln(x) + 1))*exp(2*ln(x)^2/(ln(x) + 1))*x^2*y(x)*ln(x)^2)/((ln(x) + 1)*x):

sol_1:=dsolve(ode);

y(x) = exp(-(1/4)*x^4)/(x^(-2*ln(x)/(ln(x)+1))*exp(-(1/4)*(x^4*ln(x)+x^4+4*ln(ln(x)+1)*ln(x)-8*ln(x)^2+4*ln(ln(x)+1))/(ln(x)+1))*ln(x)^2+2*x^(-2*ln(x)/(ln(x)+1))*exp(-(1/4)*(x^4*ln(x)+x^4+4*ln(ln(x)+1)*ln(x)-8*ln(x)^2+4*ln(ln(x)+1))/(ln(x)+1))*ln(x)+x^(-2*ln(x)/(ln(x)+1))*exp(-(1/4)*(x^4*ln(x)+x^4+4*ln(ln(x)+1)*ln(x)-8*ln(x)^2+4*ln(ln(x)+1))/(ln(x)+1))+c__1*ln(x)+c__1)

odetest(sol_1,ode);

0

sol_2:=simplify(sol_1);

y(x) = exp(-(1/4)*x^4)/((ln(x)+1)*(exp(-(1/4)*x^4)+c__1))

simplify( odetest(sol_2,ode) * exp(x^4/4) );

0


A slightly terser variant:

boo := -x^3*exp(-x^4/4) + x^((-x^4 + 12)/(4*ln(x) + 4))*exp((-x^4 + 12*ln(x)^2)/(4*ln(x) + 4));

-x^3*exp(-(1/4)*x^4)+x^((-x^4+12)/(4*ln(x)+4))*exp((-x^4+12*ln(x)^2)/(4*ln(x)+4))

simplify( boo );

-x^3*exp(-(1/4)*x^4)+x^((-x^4+12)/(4*ln(x)+4))*exp((-x^4+12*ln(x)^2)/(4*ln(x)+4))

simplify( boo * exp(x^4/4) );

0

Note lack of invariance under simplify@expand
simplify(expand(simplify(expand( 1/simplify( 1/expand(boo) ) ))));

0


Another,

goo := -x^3 + x^(3/(ln(x) + 1))*exp(3*ln(x)^2/(ln(x) + 1));

x^(3/(ln(x)+1))*exp(3*ln(x)^2/(ln(x)+1))-x^3

simplify(expand(goo/x^3) );

0


Download nm_simplify_27122025_ac.mw

Some of the examples I find interesting because simplify can produce 1 for the ratio of two terms, while not being able to produce 0 for their difference.

The effect you're seeing is the effect of uniquification by the Maple kernel. It's not just about the display of the expression; it's about how Maple stores its unique structural representation in memory.

The effect you're seeing is the fundamental storing and unique representation that the Maple kernel does for the  Directed Acyclic Graph (DAG) representations of expressions it has a session. It stores the DAGs in a hashed data structure. That structure is sometimes called the "simpl" table.

Yes, this is to ensure that all equivalent expressions are stored only once in memory. But it is not a table in the usual sense for the Maple language, and there is no general purpose, direct access mechanism to it for the user.

It is not a "remember table", which is a feature of PROC DAGs. Those are accessible as a table. It is not that. There is no remember table to forget.

The sort command allows for some in-place replacement of the representation of an object in that internal "simpl" table. If the unique representation is changed, then it appears changed anywhere else where that very same DAG is accessed/pointed-to, or in any new created DAG that contains it. But the sort command only allows one to sort with respect to certain kinds of expression.

If your use of eval returns an expression whose DAG contains an already existing/simpl'd DAG then the new instance of the (sub)expression will be the same as what was already simpl'd.

Some examples,

restart;

foo := x^2 + y^2 + z^2 + 3:

bar := foo = 31:

foo;
bar;

x^2+y^2+z^2+3

x^2+y^2+z^2+3 = 31

sort( foo, order=plex(y,x,z) );

y^2+x^2+z^2+3

# the sorted foo is the same wherever it
# "exists" identically. So bar has also changed.
foo;
bar;

y^2+x^2+z^2+3

y^2+x^2+z^2+3 = 31

sort( foo, order=plex(z,y,x) );

z^2+y^2+x^2+3

foo;
bar;

z^2+y^2+x^2+3

z^2+y^2+x^2+3 = 31

goo := (z-3)^2 + (y+4)^2 + (x-1)^2 - 56 = 0;

(z-3)^2+(y+4)^2+(x-1)^2-56 = 0

# We can see that the sorting affects the SUMs which
# are polynomial in the specified variables.
# The operands of the `^` calls are such, here, but the
# lhs of goo itself is not.
sort( goo, order=plex(x,y,z), ascending );

(-3+z)^2+(4+y)^2+(-1+x)^2-56 = 0

sort( goo, order=plex(x,y,z) );

(z-3)^2+(y+4)^2+(x-1)^2-56 = 0

# we cannot specify these are the plex order.
sort( goo, order=plex( (x-1)^2), (y+4)^2, (z-3)^2 );

Error, invalid arguments to sort

woo := F((z-3)^2) + F((y+4)^2) + F((x-1)^2) - 56 = 0;

F((z-3)^2)+F((y+4)^2)+F((x-1)^2)-56 = 0

# ...but we can specify these function calls as the plex order.
sort( woo, order=plex( F((x-1)^2), F((y+4)^2), F((z-3)^2) ) );

F((x-1)^2)+F((y+4)^2)+F((z-3)^2)-56 = 0

# So now we could just make the calls to F print
# like its bare arguments.
# See earlier instance of this same question.


Download sort_fun_2.mw


You can't get around the uniquification just by recreating the
expression (including by substitution or by 2-argument eval).

restart;

(z-3)^2 + (y+4)^2 + (x-1)^2 - 56 = 0;

(z-3)^2+(y+4)^2+(x-1)^2-56 = 0

eval( A+B+C-56, [A=(x-1)^2,B=(y+4)^2,C=(z-3)^2] );

(z-3)^2+(y+4)^2+(x-1)^2-56

restart;

(x-1)^2 + (y+4)^2 + (z-3)^2 - 56 = 0;

(x-1)^2+(y+4)^2+(z-3)^2-56 = 0

eval( A+B+C-56, [A=(z-3)^2,B=(y+4)^2,C=(x-1)^2] );

(x-1)^2+(y+4)^2+(z-3)^2-56

# The following SUM DAG already appears in the EQUATION DAG later
# below, and is itself stored in the simpl table.
# Also, attempting to recreate an equivalent of that SUM with
# reordered addends will result in unification that produces
# the already stored DAG.

dismantle( (z-3)^2 + (y+4)^2 + (x-1)^2 - 56 );


SUM(9)
   PROD(3)
      SUM(5)
         NAME(4): x
         INTPOS(2): 1
         INTNEG(2): -1
         INTPOS(2): 1
      INTPOS(2): 2
   INTPOS(2): 1
   PROD(3)
      SUM(5)
         NAME(4): y
         INTPOS(2): 1
         INTPOS(2): 4
         INTPOS(2): 1
      INTPOS(2): 2
   INTPOS(2): 1
   PROD(3)
      SUM(5)
         NAME(4): z
         INTPOS(2): 1
         INTNEG(2): -3
         INTPOS(2): 1
      INTPOS(2): 2
   INTPOS(2): 1
   INTNEG(2): -56
   INTPOS(2): 1
 

dismantle((x-1)^2 + (y+4)^2 + (z-3)^2 - 56 = 0);


EQUATION(3)
   SUM(9)
      PROD(3)
         SUM(5)
            NAME(4): x
            INTPOS(2): 1
            INTNEG(2): -1
            INTPOS(2): 1
         INTPOS(2): 2
      INTPOS(2): 1
      PROD(3)
         SUM(5)
            NAME(4): y
            INTPOS(2): 1
            INTPOS(2): 4
            INTPOS(2): 1
         INTPOS(2): 2
      INTPOS(2): 1
      PROD(3)
         SUM(5)
            NAME(4): z
            INTPOS(2): 1
            INTNEG(2): -3
            INTPOS(2): 1
         INTPOS(2): 2
      INTPOS(2): 1
      INTNEG(2): -56
      INTPOS(2): 1
   INTPOS(2): 0
 

Download sort_fun_3.mw

restart;

kernelopts(version);

`Maple 2024.2, X86 64 LINUX, Oct 29 2024, Build ID 1872373`

ode := diff(y(x),x) +cos(1/exp(2*x))*y(x) = sin(1/exp(x)):

IC := a*D(y)(x0)+ c*y(x0) = b*y0:

maple_sol:=dsolve([ode,IC],y(x));

y(x) = (Int(sin(exp(-_z1))*exp(-(1/2)*Ci(exp(-2*_z1))), _z1 = x0 .. x)+(sin(cosh(x0)-sinh(x0))*a-b*y0)/(cos(cosh(2*x0)-sinh(2*x0))*cosh((1/2)*Ci(cosh(2*x0)-sinh(2*x0)))*a+cos(cosh(2*x0)-sinh(2*x0))*sinh((1/2)*Ci(cosh(2*x0)-sinh(2*x0)))*a-c*cosh((1/2)*Ci(cosh(2*x0)-sinh(2*x0)))-c*sinh((1/2)*Ci(cosh(2*x0)-sinh(2*x0)))))*exp((1/2)*Ci(exp(-2*x)))

the_residue:=odetest(maple_sol,[ode,IC]);

[0, -exp((1/2)*Ci(exp(-2*x0)))*(-y(x0)*cos(exp(-2*x0))*a+sin(cosh(x0)-sinh(x0))*a+c*y(x0)-b*y0)/((cosh((1/2)*Ci(cosh(2*x0)-sinh(2*x0)))+sinh((1/2)*Ci(cosh(2*x0)-sinh(2*x0))))*(cos(cosh(2*x0)-sinh(2*x0))*a-c))]


There is y(x0) in the_residue.

 

So cannot we utilize maple_sol with x=x0 to replace that y(x0)?

simplify(eval(the_residue, eval(maple_sol, x=x0)));

[0, 0]


Alternatively, could we utilize eval(maple_sol, x=x0) to
substitute into the IC?

odetest(maple_sol, [ode, simplify(eval(IC, y=unapply(rhs(maple_sol),x)))]);

[0, exp((1/2)*Ci(exp(-2*x0)))*b*y0*(cos(exp(-2*x0))*a-c)/((cosh((1/2)*Ci(cosh(2*x0)-sinh(2*x0)))+sinh((1/2)*Ci(cosh(2*x0)-sinh(2*x0))))*(cos(cosh(2*x0)-sinh(2*x0))*a-c))-b*y0]

simplify(%);

[0, 0]


Note,

odetest(maple_sol, ode);

0


Note, under maple_sol, the IC also simplify to just this,

 

simplify( convert(eval(IC, y=unapply(rhs(maple_sol),x)),exp) )

b*y0 = b*y0

Download nm_ode_ex1.mw

You could try the option,

    obsrange=false


Is there a reason that you don't use plots:-odeplot instead, or allow for any adjustments to control the error?

The enlargement of the y-range that allows this particular example to work as you expected (without obsrange=false) seems much smaller than 10% which you used.

Also, you haven't supplied an example in which you need the y-range. You've claimed that you sometimes run into issue without it, but haven't provided examples.

ps. Is there a specific reason for all that `op` and `originalview` stuff, as opposed to, say, using plottools:-getdata with its rangesonly option?

Some years ago the so-called "typesetting rule" for some special functions (like the Bessel family) was changed from true to false by default.

That Help page you've cited appears to not have been updated accordingly.

But you can still enable it using:

  Typesetting:-EnableTypesetRule("BesselJ")

(or, I suspect, by using the RuleAssistant dialog from that same package).

restart;

with(Typesetting)

interface(typesetting = extended)

H1 := Typeset(BesselJ(v, x))

Typesetting:-mrow(Typesetting:-mi("BesselJ", fontstyle = "normal"), Typesetting:-mo("⁡"), Typesetting:-mfenced(Typesetting:-mi("v"), Typesetting:-mi("x")))

lprint(H1)

Typesetting:-mrow(Typesetting:-mi("BesselJ",fontstyle = "normal"),Typesetting:-
mo("⁡"),Typesetting:-mfenced(Typesetting:-mi("v"),Typesetting:-mi
("x")))

NULL

BesselJ(v, x)

BesselJ(v, x)

QueryTypesetRule("BesselJ")

{"BesselJ" = false}

EnableTypesetRule("BesselJ")

QueryTypesetRule("BesselJ")

{"BesselJ" = true}

BesselJ(v, x)

BesselJ(v, x)

H2 := Typeset(BesselJ(v, x))

Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi("J", fontstyle = "normal", Typesetting:-msemantics = "BesselJ"), Typesetting:-mi("v")), Typesetting:-mo("⁡"), Typesetting:-mfenced(Typesetting:-mi("x")))

lprint(H2)

Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi("J",fontstyle = "normal",
Typesetting:-msemantics = "BesselJ"),Typesetting:-mi("v")),Typesetting:-mo(
"⁡"),Typesetting:-mfenced(Typesetting:-mi("x")))

NULL


Download Typeset_ac.mw

Those errors all occur in Maple 2024.2

But in Maple 2023.2.1 they get solved (and they solutions satisfy the equations).

Here's another way to actually compute the integral, with a check, if we consider tau to be real-valued.

The result is attained in that first line of computation.

The result prints reasonably nicer in the actual Maple GUI, and computation is overall reasonably quick.

restart;

kernelopts(version);

`Maple 2024.2, X86 64 LINUX, Oct 29 2024, Build ID 1872373`

integrand:=-3*(Pi-2*arcsin(tau))
           *(tau+1)^(1/2)*(tau+(tau^2-1)^(1/2))^(2*(tau^2-1)^(1/2)/(tau-1)^(1/2)/(tau+1)^(1/2))*(tau-1)^(1/2)
           *(-16/3*tau^2+Pi-2*arcsin(tau)+8/3)/(4*tau^2-4):

 

ans := piecewise(
  tau<-1, (simplify(int(expand(evala(combine(simplify(integrand)))),tau)) assuming tau<-1),
  tau>-1, (simplify(int(expand(evala(combine(simplify(integrand)))),tau)) assuming tau>-1));

ans := piecewise(tau < -1, (((6+4*I-12*tau^2)*arcsin(tau)^2+(12*Pi*tau^2-2-(6+4*I)*Pi)*arcsin(tau)+(16*tau^4-(16+12*I)*tau^2+6*I)*arccos(tau)+(4*I)*tau^4+(-3*Pi^2+6-4*I)*tau^2+(3/2+I)*Pi^2-3+I*(1/2))*sqrt(tau^2-1)-(4*(tau+1))*(-3*arcsin(tau)^2+3*Pi*arcsin(tau)+(4*tau^2-2-3*I)*arccos(tau)+I*tau^2-3*Pi^2*(1/4)+3/2-I*(1/2))*(tau-1)*tau)/(4*sqrt(tau^2-1)), -1 < tau, -(3*((1/6+(1/3)*(4*(tau^2-3*arccos(tau)-1/2))*tau*sqrt(tau^2-1)+4*arcsin(tau)^2*(1/3)-4*Pi*arcsin(tau)*(1/3)+(2*(-2*tau^2+1))*arccos(tau)+4*tau^4*(1/3)-4*tau^2*(1/3)+(1/3)*Pi^2)*sqrt(-tau^2+1)+((2*(2*tau^2-1))*arcsin(tau)^2+(2*(1/3-2*Pi*tau^2+Pi))*arcsin(tau)+(1/3)*(16*(-tau^4+tau^2))*arccos(tau)+(tau^2-1/2)*(Pi^2-2))*sqrt(tau^2-1)+(tau+1)*(tau-1)*(-16*arccos(tau)*tau^2*(1/3)+Pi^2-4*Pi*arcsin(tau)+4*arcsin(tau)^2+8*arccos(tau)*(1/3)-2)*tau))/(4*sqrt(tau^2-1)))

simplify(combine(integrand - diff(ans,tau))) assuming tau < -1

0

simplify(combine(integrand - diff(ans,tau))) assuming tau > -1

0

Download nm_int.mw

There are some variants, trading off, say, continuity at (some) points versus compactness, according to piecewise constants for the three regions obtainable by splits at tau=-1 and tau=1.

The reason you didn't see the effect on your plot3d result is that none of the input points has alpha in that same problematic range as has your plot result.

Your plot3d result has a range of 0..15 for alpha. And the default grid size is 49x49. However, none of these 49 generated values for alpha in that special range just below 0.1.

seq(0 .. 15.0, numelems = 49);

   0, 0.3125000000, 0.6250000000, 0.9375000000, 1.250000000, 
     1.562500000, 1.875000000, 2.187500000, 2.500000000, 
     2.812500000, 3.125000000, 3.437500000, 3.750000000, 
     4.062500000, 4.375000000, 4.687500000, 5.000000000, 
     5.312500000, 5.625000000, 5.937500000, 6.250000000, 
     6.562500000, 6.875000000, 7.187500000, 7.500000000, 
     7.812500000, 8.125000000, 8.437500000, 8.750000000, 
     9.062500000, 9.375000000, 9.687500000, 10.00000000, 
     10.31250000, 10.62500000, 10.93750000, 11.25000000, 
     11.56250000, 11.87500000, 12.18750000, 12.50000000, 
     12.81250000, 13.12500000, 13.43750000, 13.75000000, 
     14.06250000, 14.37500000, 14.68750000, 15.00000000

Note that your RootOf expression contains no information that would indicate to fsolve (which is called by `evalf/RootOf`) which root is desired, or what range to compute over or take initial values from, etc.

But you could add a range descriptor to the RootOf. In this example it happens that we can figure out that the roots are either negative or positive, for your range of alpha. So that helps.

Note that in your original example fsolve gets called (for each numeric alpha value) without any specified range. But in the edit below it gets called with the range 0.0..infinity, and only the positive roots get found.

restart

a := RootOf(JacobiCN(sqrt(2)*sqrt(alpha), (1/2)*sqrt(2)*_Z)^2*_Z^2+_Z^2-2, 0. .. infinity)

plot(a, alpha = 0 .. .5)

NULL

Download plot_of_RootOf_ac.mw

You can verify my explanation by setting trace(fsolve) and then calling it like the following (for your original RootOf without range descriptor, and also for my edit that has it),
    plot(a, alpha=0..0.5, adaptive=false, numpoints=7)

And you can verify my comments about plot3d in a variety of ways (including specifying the very same alpha range, or increasing the grid, etc).

Here attached are a few approaches. But first a few notes:

I don't yet see a nice+easy+sensible+robust way to "simplify" more general things like,
    2 - cos(x)^2 - cos(y)^2
into,
    sin(x)^2 + sin(y)^2
without also clobbering standalone terms like cos(v)^2 into becoming 1-sin(v)^2 undesirably.

Part of that relates to the fact that simplify doesn't use directly measured expression size and comparison as its main/only aspect for all mathematical simplification (trig, radicals, etc). The purer size compression & comparison focus is more for arithmetic/polynomial restructuring (ie, `simplfy/size` which it now does as a finishing/polishing step).

I wonder whether the procedure K below might be more generally useful to the OP than the other approaches attached. That just allows simplify to do its thing, then patches up that csgn split, after-the-fact.

So, fwiw,

restart;

H := proc(expr) local a,b;
       applyrule(b::anything*cos(a::anything)^2-b::anything=-b*sin(a)^2,
                 applyrule(b::anything-b::anything*cos(a::anything)^2=b*sin(a)^2,
                 expr)); end proc:

 

K := proc(expr) local a;
       applyrule(csgn(a::anything)*a::anything=(a^2)^(1/2),simplify(expr)); end proc:

 

R := expr->simplify(expr,(u->1-cos(u)^2=sin(u)^2)~(op~(indets(expr,specfunc(name,cos))))):

 

ee := sqrt( 1 + sqrt(-cos(s)^2 + 1) - cos(t)^2 + cos(v)^2 );

(1+(-cos(s)^2+1)^(1/2)-cos(t)^2+cos(v)^2)^(1/2)

simplify(ee, trig);

(cos(v)^2+csgn(sin(s))*sin(s)+sin(t)^2)^(1/2)

R(ee);

(sin(t)^2-sin(v)^2+(sin(s)^2)^(1/2)+1)^(1/2)

H(ee);

(sin(t)^2+(sin(s)^2)^(1/2)+cos(v)^2)^(1/2)

K(ee);

(sin(t)^2+(sin(s)^2)^(1/2)+cos(v)^2)^(1/2)

 

ff := sqrt( P + sqrt(-cos(z)^2 + 1)*q - P*cos(x)^2
            +  sqrt(cos(y)^2 + W - 1) +  cos(v)^2);

(P+(-cos(z)^2+1)^(1/2)*q-P*cos(x)^2+(cos(y)^2+W-1)^(1/2)+cos(v)^2)^(1/2)

simplify(ff, trig);

(csgn(sin(z))*sin(z)*q+sin(x)^2*P+cos(v)^2+(-sin(y)^2+W)^(1/2))^(1/2)

R(ff);

(sin(x)^2*P+(sin(z)^2)^(1/2)*q-sin(v)^2+(-sin(y)^2+W)^(1/2)+1)^(1/2)

H(ff);

(sin(x)^2*P+(-sin(y)^2+W)^(1/2)+cos(v)^2+(sin(z)^2)^(1/2)*q)^(1/2)

K(ff);

(sin(x)^2*P+(-sin(y)^2+W)^(1/2)+cos(v)^2+(sin(z)^2)^(1/2)*q)^(1/2)

Download simp_trig_ex9.mw

In the Maple 2025 ribbon, choose,

    Edit -> Editing -> User Profile

and in the pop-up dialog that appears choose "Engineering Notation" from the drop-menu.

Then close that with Apply And Set As Default

After that, in newly opened sheets you should get it by default.

1 2 3 4 5 6 7 Last Page 1 of 340