## 12915 Reputation

8 years, 356 days

## Continued fractions...

Rational approximations are obtained via continued fractions. They are implemented in NumberTheory:-ContinuedFraction and the older `convert/confrac`.

For example:

```cf:=NumberTheory:-ContinuedFraction(Pi):
Convergent(cf, 1..5);
#    [22/7, 333/106, 355/113, 103993/33102, 104348/33215]
```

The actual computations are in `convert/real_rat`.

``<,>`(seq(`<|>`(seq(M[i,j],j=1..2)),i=1..2));`

or

`Matrix(4,4,(i,j)->M[iquo(i-1,2)+1,iquo(j-1,2)+1][irem(i-1,2)+1,irem(j-1,2)+1]);`

or

`Matrix(linalg[blockmatrix](2,2,[seq(M)]));`

## imbricated tables...

Replace sum with add in the definition of S.

## Careful with log branches...

 > ode := diff(y(x), x) - 2*(2*y(x) - x)/(x + y(x)) = 0; ic:=y(0)=2;
 (1)
 > sol:=dsolve(ode,'implicit');
 (2)
 > eq:=exp(lhs(sol))=1;
 (3)
 > EQ:=simplify(eq,exp);
 (4)
 > #plugin in y=2 at x=0 eval(%,[y(x)=2,x=0]);
 (5)
 > solve(%,_C1)
 (6)
 > EQ0:=eval(EQ, _C1=%);
 (7)
 > ysols:=solve(EQ0,y(x));
 (8)
 > simplify(limit~([ysols], x=0));
 (9)
 > ysol:=ysols[1];
 (10)
 > plot(ysol,x=-1..1);
 > odetest(y(x)=ysol,[ode,ic]);
 (11)
 >

## input, output...

Yes, an error or at least a warning would be better. input and output work with polynomials of any degree.

Note that when n >= p^k,  input(n) produces a polynomial (zpoly) of degree >= k.
The reduction modulo the extension polynomial is not performed.
It is however performed by the arithmetic operations in G except G:-`+`, G:-`-`
(here G := GF(p,k)).

## Trigonometry!...

This is a nice example where the correct use of trigonometry is essential.
It seems to be too subtle for a CAS!

By solving the ode by hand one obtains  the solution:

Y:= piecewise(x < 0, -2*arctan((x+2)/x), x>0, -2*arctan((x+2)/x)+2*Pi, Pi)

It is easy to check that it satisfies the ODE for ANY real x.
Your solution, 2*Pi-2*arccos(x/(2*x^2+4*x+4)^(1/2)),  is valid only for x>-2.

Edit.
It can be shown that  Y = 2*arctan(x + 1) + Pi/2
(it is enough to compute int(diff(Y,x), x) + C).

## Not strange...

Everything is correct. Note that

{ sqrt(y/x), - sqrt(y/x) } = { sqrt(y) / sqrt(x), - sqrt(y) / sqrt(x) } = { sqrt(x*y) / x, - sqrt(x*y) / x}

for any complex x,y;  (x <> 0, of course).

 >
 > restart;
 > SYS := [cos(x)*cos(y)*cos(x + y) - 2*(sin(x)*sin(y) - 1)*2*(sin(x)*sin(x + y) - 1)*2*(sin(y)*sin(x + y) - 1),        (cos(x + y) - (cos(x) + cos(y)) + 1)**2 + 2*cos(x)*cos(y)*cos(x + y)]:
 > eval(expand~(SYS), [cos(x)=a, sin(x)=b, cos(y)=c, sin(y)=d]):
 > sys:=[%[], a^2+b^2-1, c^2+d^2-1];
 (1)
 > S:=[solve](sys, explicit):
 > Sr:=evala(select(u -> is( Im~(eval([a,b,c,d], u))=[0,0,0,0]), S));
 (2)
 > XY:= u -> [x=arctan(eval(b,u),eval(a,u)), y=arctan(eval(d,u),eval(c,u))]:
 > select(u -> is(eval(x,u)+eval(y,u) >=0), XY~(Sr));
 (3)
 >

## Change IC...

Only if you provide another initial condition beyond the singularity.

Like in the next simple example.

 > dsolve({diff(y(x),x)=y(x)^2, y(0)=1});
 (1)

 > sol1:=dsolve({diff(y(x),x)=y(x)^2, y(0)=1}, numeric);
 (2)
 > plots:-odeplot(sol1, [x, y(x)], x= 0..3);
 > sol2:=dsolve({diff(y(x),x)=y(x)^2, y(2)=-1}, numeric); # Choose an IC at x=2 (after the previous singularity at 1)
 (3)
 > plots:-odeplot(sol2, [x,y(x)], x=1.1 .. 5);
 >

## eval...

```simplify( eval(rel(n), n=3 + 1/(2*t)) ) assuming t>0;
# 0 = 0```

## keyword params...

In maple there are many kinds of parameters. I don't think such a new class is really needed.
For your example, it is easy to use a keyword parameter; Eivenvectors uses for instance
output=['vectors', 'values']  or  output=['values']  etc.

## Just a bug...

More simple,

```is(w^2 = abs(w)^2);     # Maple 2023
true    ```

In Maple 2020 .. 2022 it is OK (i.e. false).
Same for:  is(w = conjugate(w))

## export mpl...

Export the document as Maple code (.mpl).
Then open the .mpl. In Maple 2023, it will appear in a new Code Edit window.
Edit the code, i.e. replace `&ndash;` with -

There are not other errors (see the Diagnostics tab), so you can copy & paste the code in the worksheet and execute.

P.S. I use 2D input strictly for presentation purposes (and almost never the Document mode).

## degree...

ex:=x*y*z^2*w^3:
degree(ex);
#                              7
factors(ex)[2];
#               [[y, 1], [z, 2], [w, 3], [x, 1]]

 3 4 5 6 7 8 9 Last Page 5 of 115
﻿