acer

32333 Reputation

29 Badges

19 years, 320 days
Ontario, Canada

Social Networks and Content at Maplesoft.com

MaplePrimes Activity


These are answers submitted by acer

As a followup query you asked about finding extrema of rhs(eq1).

The following shows a local minimum, and a saddle point.

restart;

eq1 := x = (((72*5^(3/2) + 270)*a^2 - 1344*5^(3/2)*a)*w + (9*5^(5/2) - 1485)*a^2 - 2016*5^(3/2)*a - 12544*5^(5/2))/(((288*sqrt(5) + 216)*a^2 - 5376*sqrt(5)*a)*w + (36*5^(3/2) - 1188)*a^2 - 8064*sqrt(5)*a + 6272*5^(3/2));

x = (((360*5^(1/2)+270)*a^2-6720*5^(1/2)*a)*w+(225*5^(1/2)-1485)*a^2-10080*5^(1/2)*a-313600*5^(1/2))/(((288*5^(1/2)+216)*a^2-5376*5^(1/2)*a)*w+(180*5^(1/2)-1188)*a^2-8064*5^(1/2)*a+31360*5^(1/2))

extrema(rhs(eq1), {}, {a,w}, 'cc');

{-10, -10*(1288+389*5^(1/2))/(-10304+1929*5^(1/2))}

cc;

{{a = 0, w = -3/2}, {a = 4480/213-(224/71)*5^(1/2), w = -185/142+(147/71)*5^(1/2)}}

evalf(cc);

{{a = 0., w = -1.500000000}, {a = 13.97822685, w = 3.326788628}}

simplify(eval~(eq1, cc));
evalf(%);

{x = -10, x = (-12880-3890*5^(1/2))/(-10304+1929*5^(1/2))}

{x = -10., x = 3.602012293}

evalf([map[2](eval,[a,w,rhs(eq1)],cc)[]]);

[[0., -1.500000000, -10.], [13.97822685, 3.326788628, 3.602012292]]

plots:-display(
  plots:-pointplot3d([map[2](eval,[a,w,rhs(eq1)],cc)[]],color=red,
                     symbol=solidcircle,symbolsize=20),
  plot3d(rhs(eq1), a=-1..20, w=-3..5, grid=[201,201], view=-12..14, color=blue),
  lightmodel=Light1, orientation=[100,55,0]
);

 

Download extrema_example.mw 

Be careful about misinterpreting spikes in your 3D plot as being finite extrema. Those could indicate a curve along which the expression is discontinuous (eg. not finite), in which case the visually apparent spikes may be merely artefacts due to the granularity of the plot's sampling process.

Consider these curves along which the denominator of rhs(eq1) is zero, ie. rhs(eq1) is +-infinity.

plots:-implicitplot(denom(rhs(eq1)));

The following attachment has one Input Equation (XML) removed, that I believe occurred above and near the text line:
   PC1

PCA_ac.mw

It is concerning that this is the third instance of the very same particular kind of corruption that I've seen reported in the last eight days; see here and here. I am going to amend a bug report to note that:
1) The problem appears to new (to Maple 2022.2?) and to not be rare (which is alarming).
2) The GUI fails to recover significant portions of these corrupted Documents, when it attempts its own recovery.

I'd like to see the underlying problem fixed if possible, but I'd also really like to see the GUI do a much better job of recovery. I've submitted more than one previous bug report on that latter aspect.

I am supposing that you are a Danish student, because of your use of the Gym package.

If you can remember what was in the missing 2D Input line that might be helpful. Did it have Danish characters/accents? Any little knowledge of it might be better than nothing.

You could pass the signchange=false option to implicitplot, so that discontinuties in f2 (eg. switching from +infinity to -infinity) are not shown.

If there's a jump discontinuity across which the sign is changed then that's not the same as an actual root.

restart:

with(plots):

a:=8:
f1 := x1^4-1999/1000*x1^2*x2^2+x2^4-1;
f2 := tan(x1+x2)-x2*sin(x1);

x1^4-(1999/1000)*x1^2*x2^2+x2^4-1

tan(x1+x2)-x2*sin(x1)

raw:=[eliminate({f1,f2}, {x1})]:nops(raw);

4

sol:='sol':
for i from 1 to 4 do
  raw[i][2];
  S2[i]:=[fsolve(%[],x2=-a..a,maxsols=100)];
  sol[i]:=seq((X1->`if`(is(X1>=-a and X1<=a),[X1,s],NULL))(eval(eval(x1,raw[i][1]),x2=s)),s=S2[i]);
end do:

K:=convert(sol,set);

{[-5.398255414, -5.360783273], [-5.364764327, -5.401933762], [-3.769355031, -3.647947770], [-3.583391246, -3.707848725], [-3.255732987, -3.396566067], [-3.185334350, 3.329928430], [-3.086665168, 2.927318296], [-2.555889626, -2.740025742], [-1.397907948, -.9772820729], [-1.192190530, .6493211306], [-.9368767219, -1.370005085], [.5881601300, -1.160042909], [2.010992428, 2.243626421], [2.194495669, 1.955777198], [3.095133265, -3.244700481], [3.113309320, 3.261859649], [3.172325434, 3.018375967], [3.192255688, -3.039528488], [4.026457505, 4.130722938], [4.124511644, 4.019959371]}

nops(K);

20

seq(eval([f1,f2],Equate([x1,x2],s)),s=K);

[0.2e-6, -0.102e-6], [-0.4e-6, -0.67e-7], [0.1e-6, -0.7e-8], [-0.1e-6, -0.3e-8], [0., 0.42e-8], [0.1e-6, 0.25e-8], [-0.3e-7, 0.7e-9], [-0.1e-7, 0.], [0.1e-8, -0.8e-9], [0.1e-8, -0.4e-9], [0., -0.2e-8], [-0.4e-9, 0.24e-8], [0., -0.2e-8], [-0.1e-7, -0.3e-8], [0., -0.16e-8], [0., 0.219e-8], [-0.8e-7, -0.750e-8], [-0.2e-7, 0.9e-9], [0.1e-6, -0.29e-7], [0.2e-6, -0.12e-7]

display(
implicitplot([f1, f2], x1 = -a .. a, x2 = -a .. a, gridrefine=4, crossingrefine=3, signchange=false,
             color = [red, blue], thickness = 0),
pointplot(K, color=black, symbol=solidcircle));

 

Download oneman_impl.mw

[edit] Here is one solution to the OP's followup query of what (apparently) they actually wanted. It's not clear to me what is wanted when the function call does not have exactly three arguments.

restart

kernelopts(version)

`Maple 2022.2, X86 64 LINUX, Oct 23 2022, Build ID 1657361`

`print/#mover(mi("U"),mo("&sim;"))` := proc()
   uses Typesetting;
   if _npassed=3 then
     msub(mover(mi("U"),mo("&sim;")),Typeset(EV(args[3])))(args[1..2]);
   else mover(mi("U"),mo("&sim;"))(args);
   end if;
end proc:


Below I used the "Over" item in the Layout palette, and the "~" item in the Punctuation palette,
to get the `#mover(mi("U"),mo("&sim;"))`symbol.

`#mover(mi("U"),mo("&sim;"))`

`#mover(mi("U"),mo("&sim;"))`(v1, v2, v3)

`#mover(mi("U"),mo("&sim;"))`(v1, v2, v3)

`#mover(mi("U"),mo("&sim;"))`(v1, v2)

`#mover(mi("U"),mo("&sim;"))`(v1, v2)

Download printf_sub_ex2.mw

[end edit. Below is my original response to the original Question.]

The pretty-printing of BesselJ can be controlled by calling appropriately the command,
    Typesetting:-EnableTypesetRule

The related Typesetting commands don't seem designed to allow for customization of user-defined functions. But there's nothing to stop you from using the remember table for its QueryTypesetRule as a semaphore within a user-defined custom print-extension procedure such as `print/f`.

For example,

restart;

kerneopts(version);

kerneopts(version)

`print/f` := proc(a, b, c)
   uses Typesetting;
   if Typesetting:-QueryTypesetRule("f")=true then
     mrow(msup(mi("f"),
               mrow(Typeset(a),mo("&InvisibleTimes;"),
                    Typeset(b))),
          mfenced(Typeset(c)));
   else
     'f(args)';
   end if;
end proc:

 

f(x,y,z);

f(x, y, z)

Typesetting:-QueryTypesetRule("f") := true:

f(x,y,z);

f(x, y, z)

BesselJ(n,x);

BesselJ(n, x)

Typesetting:-EnableTypesetRule("BesselJ"):

BesselJ(n,x);

BesselJ(n, x)

Download printf_ext_ex.mw

The following link is as much as I can recover from your upload called "Cengel2.mw". It has recovered significantly more than the Maple 2022.2 GUI is able to recover.

Cengel2_ac.mw

(I suspect that is contains as much as could possibly be recovered by any means. The problem appears to be the same as in another example I saw very recently on Dec 12. A single Equation XML element in an Input was invalid. Its removal -- leaving all parent elements intact -- appears to achieve maximal recovery. I have seen many corrupt worksheets before, but up until then never that particular issue. I wonder whether the cause was new, or something common to M2022.2.)

Your wrote "how to combine an expression", but what you show as your goal is a new operator (not an expression) whose body happens to contain the combined form.

x := t -> sin(a)*cos(t) + cos(a)*sin(t):

x := unapply(combine(x(t)),t);

    x := t -> sin(a+t)

You haven't shown where your original operator came from. But perhaps it would be more convenient to begin with just expressions, then do all your manipulations, and then use (using, say unapply) form operators only as needed.

Forming operators manually and then only ever using then with function calls like x(t) -- to get an intermediate expression -- seems an awkward workflow.

As N gets larger is more efficient to do,

   Matrix(N,N,fill=undefined)

than,

   Matrix(N,N,(i,j)->undefined)

The technique you apply may need to depend on what you know of the form of the input. That depends on how robust you want to make it if the form is slightly different, ie. how much defensive programming you wish to have.

Here are some alternatives, using subsindets or subsop.

Add_range_ac.mw

The matter of whether the command used involves an external call is not central. Nor is whether the command is a "library function" or a kernel builtin, or what have you.

It's also unlikely the RealDomain:-simplify is going to be a place to find such functionality in the near future, IMO.

The first place that I'd hope to find the functionality, as you've expressed it algebraically, would be under the is and coulditbe commands. For example, [have I expressed this correctly?]

restart;
F1 := a + b + c + d > 0
      and
      a*b + a*c + a*d + b*c + b*d + c*d > a^2 + b^2 + c^2 + d^2:
F2 := d*c*b*a > 0
      and
      a*b*c + a*b*d + a*c*d + b*c*d > 0:

not is( F1 and not F2 ) assuming real;
                              true

Unfortunately several equivalent forms returned FAIL (after taking a while).

After that I might hope to find it using is under assumptions. Then perhaps simplify (but not using &implies).

In Maple 2018.2 (and 2022.2, say)

eq := binomial(2*n, n)/2 = binomial(2*n-1, n-1):

is( expand(eq) ) assuming n::posint;

             true

Also for n::integer, n<>0 it seems.

Is this the kind of thing you mean by getting the SAT-solver to work on it?

sat_fun.mw

Did you also want an interative application, with in which clicking on any square caused the colors to flip, with the ability to reset with a random Matrix?

How's this?

Solution_Methods_ac.mw

It might be missing just one equation in the "worked example" Section, just before one instance of the sentence "The problem is therefore non characteristic."

A simple change of variable seems adequate to get the result.

Below I use Maple 2020.2, since your Question is marked with that major version number.

restart;
kernelopts(version);

  Maple 2020.2, X86 64 LINUX, Nov 11 2020, Build ID 1502365

H := Int(exp(I*k*x)*sech(x), x=-infinity .. infinity):

value(IntegrationTools:-Change(H, s=exp(x), s));

                    Pi*sech(1/2*Pi*k)


A similar approach works for your followup example. Also, for either example we could start with active int instead of applying value on an inert Int, Ie.,

H2 := int(exp(I*k*x)*tanh(x)*sech(x)^3,x=-infinity..infinity):

IntegrationTools:-Change(H2, s=exp(x), s);

            1/6*I*Pi*sech(1/2*Pi*k)*k*(k^2+1)

The Classic worksheet interface is bundled in the 32-bit version of Maple 2017 for MS-Windows, but not in the 64-bit version of that release.

If you'd prefer the special symbol to be rendered in upright Roman font, instead of italics, then you could use,
   b^`#mo("&bot;");`
instead of,
   b^`&bot;`
 

plots:-display(
  plots:-textplot([2,2,b^`&bot;`]),
  caption=typeset("the pole at point ",
                  [2,2], " is ", b^`&bot;`)
);

First 54 55 56 57 58 59 60 Last Page 56 of 336