vv

13977 Reputation

20 Badges

10 years, 36 days

MaplePrimes Activity


These are answers submitted by vv

If the matrix A has both exact and float entries, then it is obvious that some computations (e.g. the value of a discontinuous function) may return "unexpected" results.
Rank is such a discontinuous function. You have to accept this fact.
E.g. if A has two columns such that the first one is symbolic with at least an irrational entry,
and the second column is nonzero with float entries, the rank(A) is always 2.

restart;

v:=<sqrt(3), 2, 0>:

A:=<v|evalf[25](v)>;

Matrix(3, 2, {(1, 1) = sqrt(3), (1, 2) = 1.732050807568877293527446, (2, 1) = 2, (2, 2) = 2., (3, 1) = 0, (3, 2) = 0.})

(1)

LinearAlgebra:-Rank(A);        # exact

2

(2)

LinearAlgebra:-Rank(evalf(A)); # "approx" but probably "expected"

1

(3)

 

Just replace in param1,...,param4:  alpha*gamma=0.004;   with   gamma=0.004/alpha;
(or use algsubs).

Advices:
- don't load packages which are not needed
- gamma is a Maple constant, don't use it as a variable
- linalg is deprecated; use LinearAlgebra instead.

 

convert(EllipticK(x), Int): 
eval(%,x=1); value(%);

       

          infinity

with(GroupTheory):
g:=DrawSubgroupLattice(SmallGroup(200, 31), labels = ids, output=graph):
GraphTheory:-DrawGraph(g, size=[1200,800]);

Execute

pp:=interface(prettyprint=1);

before Generators(...), then copy.
To restore the old settings:

interface(prettyprint=pp):

 

 

There are only a few automatic simplifications. c*infinity  and  c+infinity  are not automatically simplified even when c is constant (containing symbolic objects).

Pi*infinity, Pi+infinity;

Pi*infinity, Pi+infinity

(1)

(abs(x)+1)*infinity;

(abs(x)+1)*infinity

(2)

simplify(%);

infinity

(3)

cos(0) + infinity is simplified to infinity, but this is during the evaluation, not an automatic simplification.

cos(0) + infinity, 'cos(0) + infinity';

infinity, cos(0)+infinity

(4)

 

Note that expr/infinity is automatically simplified to 0 (which is not always correct) e.g.

f(0):=infinity:
'f(0)/infinity', 'tan(Pi/2)/infinity';

0, 0

(5)

 

Such simplifications may be time consumming, so the designers of the system had to decide which are more or less automatic.

 

The simplest solution is to use

DrawSubgroupLattice(SymmetricGroup(4), labels=ids);

This way the labels will be `n/d` i.e. the full identifier of the (small) group, n being its order.
It is possible to manipulate the PLOT structure to eliminate `/d`, but I think `n/d` is better.
Edit
If you really want n only, use:

with(GroupTheory):
P:=DrawSubgroupLattice(SymmetricGroup(4), labels=ids):
subsindets(P, name,  proc(a) local t:=SearchText("/",a); `if`(t>0,substring(a,1..t-1),a) end proc); 

 

Why not use mtaylor?
Or, the next proc which is even faster:

T:=(x,y,x0,y0,N) -> eval(series(f(x0+t*x,y0+t*y),t,N),t=1);

 

with(GroupTheory):
G := SmallGroup(48, 8);

       G :=  < a permutation group on 48 letters with 5 generators > 

gen:=NonRedundantGenerators(G);
gen := [(1283)(4122218)(5112117)(614713)(9163120)(10153219)(2336

  4744)(24354843)(25344542)(26334641)(27402938)(28393037), (14721

  82265)(21114183171312)(923294531472725)(1024304632482826)(1533

  394319413735)(1634404420423836), (1910)(21516)(31920)(42324)(5

  2526)(62728)(72930)(83132)(113334)(123536)(133738)(143940)(1741

  42)(184344)(214546)(224748)]


lprint(gen);
[Perm([[1, 2, 8, 3], [4, 12, 22, 18], [5, 11, 21, 17], [6, 14, 7, 13], [9, 16,
31, 20], [10, 15, 32, 19], [23, 36, 47, 44], [24, 35, 48, 43], [25, 34, 45, 42]
, [26, 33, 46, 41], [27, 40, 29, 38], [28, 39, 30, 37]]), Perm([[1, 4, 7, 21, 8
, 22, 6, 5], [2, 11, 14, 18, 3, 17, 13, 12], [9, 23, 29, 45, 31, 47, 27, 25], [
10, 24, 30, 46, 32, 48, 28, 26], [15, 33, 39, 43, 19, 41, 37, 35], [16, 34, 40,
44, 20, 42, 38, 36]]), Perm([[1, 9, 10], [2, 15, 16], [3, 19, 20], [4, 23, 24],
[5, 25, 26], [6, 27, 28], [7, 29, 30], [8, 31, 32], [11, 33, 34], [12, 35, 36],
[13, 37, 38], [14, 39, 40], [17, 41, 42], [18, 43, 44], [21, 45, 46], [22, 47,
48]])]

nops(gen); # number of generators
        3

 

It is easy to find the soluble groups using the builtin database:

for n in [60, 120, 168, 180] do SearchSmallGroups( 'order' = n, soluble) od;

Finding a polynomial in Z[X]  for such groups is another problem; I don't think Maple or other CAS can do that efficiently.

C6 is a NOT a subgroup of S5. It is just isomorphic to a subgroup of S5.

 

1. use e.g.
radnormal((x^2 - 2)/(x - sqrt(2)));
# or
evala((x^2 - 2)/(x - sqrt(2)));

2. Example:
A := <124,12; "NA/101", ">2.6"; 1,2>:
AA :=map(u -> `if`(type(u,numeric),u,undefined),  A);

The assume facility is far from perfect. You can find many examples searching this site.
It is designed for simple conditions; it has evolved in time but with very small steps. At least here, the result (FAIL) is not wrong.

Note also, that the assume facility often ignores the endpoints in inequalities.
Example:
limit(a^n, n=infinity) assuming a>=1;
                            infinity

limit(a^n, n=infinity) assuming -1 <=a, a<1;
                               0

restart;
with(GroupTheory):
G:=Symm(4);
GroupOrder(G);
do
  H := Subgroup([RandomElement(G),RandomElement(G)], G);
  C := Core(H, G);
until is(GroupOrder(C) <> 1) and is(GroupOrder(C) <> GroupOrder(H)):
H;
C;
GroupOrder(C) <> GroupOrder(H);

restart;
with(LinearAlgebra): with(plots):
n:=3:
f:=-x^2 + 2*y^2 + 2*z^2 - 6*x + 4*x*y - 4*x*z - 8*y*z + 4*z - 12:
f:=eval(f, [x=x[1],y=x[2],z=x[3]]);
L:=10:
quad:=implicitplot3d(f, x[1]=-L..L, x[2]=-L..L, x[3]=-L..L, style=surface, scaling=constrained):
A:=VectorCalculus:-Hessian(1/2*f,[seq(x[i],i=1..n)]):
b:=eval(Vector( [ seq(diff(f,x[i]),i=1..n)]), [seq(x[i]=0,i=1..n)]):
c:=eval(f,[seq(x[i]=0,i=1..n)]):
X:=Vector([seq(x[i],i=1..n)]):
solve([ seq(diff(f,x[i]),i=1..n)],{seq(x[i],i=1..n)}); # the center
X0:= Vector[column]( eval([seq(x[i],i=1..n)],%) ):
J,Q:=Eigenvectors(A):
T:=Matrix(GramSchmidt([seq( Q[..,j],j=1..n)],normalized)): # T is orthogonal
fnew:=simplify( (T.X+X0)^+. A. (T.X+X0) + b.(T.X+X0) + c ); # ==> Hyperboloid of Two Sheets
col:=[red,yellow,blue]:
ax:=seq(arrow(X0, T[..,j], length=10, width=0.3, color=col[j]), j=1..n): 
display(quad, ax, orientation=[175,63,21], caption="Hyperboloid of Two Sheets");

First 16 17 18 19 20 21 22 Last Page 18 of 120