Ronan

1521 Reputation

16 Badges

14 years, 246 days
East Grinstead, United Kingdom

MaplePrimes Activity


These are questions asked by Ronan

I have used alias for various reasons inside a pagkage. It is useful for coupling old command names to modern ones.

I am trying now to get this to work inside a sub package but no success. Can this be done?

> 

restart

> 

 

> 

pkg:=module()
option package;
export   Sqr, UHG;
alias(XX=Sqr);
#alias(eparm=CirclePramUHG);
Sqr:=proc(x)
   return x^2;
end proc;

 UHG:=module()
          option package;
         
          export
               CircleParmUHG;

alias(eparm=CirclePramUHG);

     CircleParmUHG := proc(T::algebraic, U::algebraic)
       local t, u, P, cp;
         #  P := point;
             t := T*denom(T)*denom(U);
             u := U*denom(T)*denom(U);
         # if P <> NullPoint then
         #   P := 'NullLine';
         #end if;
        if t::numeric and u::numeric and t<>0 and u<>0 then
             cp:=  <u^2 - t^2| 2*u*t| u^2 + t^2>/gcd(gcd(u^2 - t^2, 2*u*t), u^2 + t^2);
          else
             cp:=  <u^2 - t^2| 2*u*t| u^2 + t^2>;
        end if;
        return cp
      end proc;
    end module;
end module;

_m2044017012448

(1)
> 

with(pkg)

[Sqr, UHG]

(2)
> 

Sqr(4)

16

(3)
> 

UHG:-CircleParmUHG(t,u)

[`?`]

(4)
> 

UHG:-eparm(t,u)

Error, eparm is not a command in the pkg:-UHG package

 
> 

with(UHG)

[CircleParmUHG]

(5)
> 

CircleParmUHG(2,7)

Vector[row]([45, 28, 53])

(6)
> 

eparm(2,7)

eparm(2, 7)

(7)
> 

 

> 

XX(3)

9

(8)
 

 

Download 2024-06-29_use_alias_in_a_Sub_Package.mw

I need to check inside typeset to see is something evaluates to 1. I can find if something contains 1 and have been using that. But got caught out last night because I forgot my work around. e.g. 1+H contains 1 and my work around is `1+H` so the check doesn't see the 1. The typeset is always the first item in the list.

> 

restart

 

 

> 

foo:=proc(a,{S::list:=[]})
local i,perp::boolean;
if S<>NULL then
  if (S[1])=1 or S[1]::function and has(`or`(seq (op(S[1]),i=1..nops([op(S[1])]))),1)  then
   #if (S[1])=1 or S[1]::function and `or`(seq (is(op(S[1][i]),1),i=1..nops([op(S[1])])))  then  ;#  not working
   
     perp:=true;print(perp);
    else
     perp:=false;print(perp);
  end if;
end if;
end proc:

> 

foo(6,S=["cat"]);

> 

 

false

(1)
> 

foo(6,S=[1]);

true

(2)
> 

foo(6,S=[typeset("cat=",H/H),align={above,left},color=green]); #good

true

(3)
> 

foo(6,S=[typeset("cat=",H),align={above,left}])

false

(4)
> 

foo(6,S=[typeset("cat=",1+H)],align={above,left},color=green);#want to fix this

> 

 

> 

 

true

(5)
> 

foo(6,S=[typeset("cat=",`1+H`)]); #work around

false

(6)
> 

foo(6,S=[typeset("cat=",`B/(H+1)`)]); #work around

false

(7)
> 

foo(6,S=[typeset("cat=",`B/(H+1)`,"  height =",1)]); #correct

true

(8)
> 

foo(6,S=[typeset("cat=",H^2/((2*H-H)*H),"  height =",`B/(H+1)`)]); #correct

true

(9)
> 

op(typeset("cat=",B/(H+1)));# this would be false

> 

 

"cat=", B/(1+H)

(10)
> 

op(typeset("cat=",H^2/((2*H-H)*H),"  height =",`B/(H+1)`)) ;  # this would be true

> 

 

> 

 

"cat=", 1, "  height =", `B/(H+1)`

(11)
 

 

Download 2024-06-27_Q_check_inside_typeset.mw

  I would like to print my help pages to pdf. Is there a way to install A3 paper size. That would help in maintaining the layout as seen on the screen. 

Maybe there is an alternative approach.

Have a list of four projective points. I need to check that they are colinear projectively. If one point is at infinity i.e. 0 in z position I can chech if combination of cross product and dot product is 0.
a)  What is a good way to find if one ot the four has zero in z position?

b) Having found that is there a neat way of piching the next two/three points by making the count wrap automatically. e.g 3  then 4,5,6 i.e. 3,4,1,2

restart

with(LinearAlgebra)

pt := [`<,>`(1, 1, 1), `<,>`(2, 1, 1), `<,>`(3, 1, 0), `<,>`(4, 1, 1)]

pt := [Vector(3, {(1) = 1, (2) = 1, (3) = 1}), Vector(3, {(1) = 2, (2) = 1, (3) = 1}), Vector(3, {(1) = 3, (2) = 1, (3) = 0}), Vector(3, {(1) = 4, (2) = 1, (3) = 1})]

(1)

ListTools(Occurences([anything, anything, 0], pt))

ListTools(Occurences([anything, anything, 0], [Vector(3, {(1) = 1, (2) = 1, (3) = 1}), Vector(3, {(1) = 2, (2) = 1, (3) = 1}), Vector(3, {(1) = 3, (2) = 1, (3) = 0}), Vector(3, {(1) = 4, (2) = 1, (3) = 1})]))

(2)

``

`&x`(pt[1]-pt[3], pt[1]-pt[3]).(pt[4]-pt[3])

0

(3)

NULL

Download 2024-06-18_Q_4_points_projective_colinear.mw

I am using intersectplot  to make projective coordinate plots. Everything intersects the plane z=1. I find the plot quality poor, i.e. dotty dashy lines and circle. This seem to be the best linestyle=solid can do here. gridrefine can't be applied here. 
Any suggestions to improve quality here?
Maybe intersectplot is not the best aprroach here but so far it is all if have figured out.


> 

restart

> 

 

> 

 

> 

with(plottools)

[annulus, arc, arrow, circle, colorbar, cone, cuboid, curve, cutin, cutout, cylinder, disk, dodecahedron, ellipse, ellipticArc, exportplot, extrude, getdata, hemisphere, hexahedron, homothety, hyperbola, icosahedron, importplot, line, octahedron, parallelepiped, pieslice, point, polygon, polygonbyname, prism, project, pyramid, rectangle, reflect, rotate, scale, sector, semitorus, sphere, stellate, tetrahedron, torus, transform, translate, triangulate]

(1)
> 

with(plots)

[animate, animate3d, animatecurve, arrow, changecoords, complexplot, complexplot3d, conformal, conformal3d, contourplot, contourplot3d, coordplot, coordplot3d, densityplot, display, dualaxisplot, fieldplot, fieldplot3d, gradplot, gradplot3d, implicitplot, implicitplot3d, inequal, interactive, interactiveparams, intersectplot, listcontplot, listcontplot3d, listdensityplot, listplot, listplot3d, loglogplot, logplot, matrixplot, multiple, odeplot, pareto, plotcompare, pointplot, pointplot3d, polarplot, polygonplot, polygonplot3d, polyhedra_supported, polyhedraplot, rootlocus, semilogplot, setcolors, setoptions, setoptions3d, shadebetween, spacecurve, sparsematrixplot, surfdata, textplot, textplot3d, tubeplot]

(2)
> 

 

> 

 

> 

DistCircle:=x^2+y^2=1

x^2+y^2 = 1

(3)
> 

pt1:=[1/4,3/4]

[1/4, 3/4]

(4)
> 

pt2:=[7/8,-1/3]

[7/8, -1/3]

(5)
> 

pt3:=[-3/2,3/7]

[-3/2, 3/7]

(6)
> 

pt4:=[3/5,-4/5]

[3/5, -4/5]

(7)
> 

pt5:=[-1/10,-3/2]

[-1/10, -3/2]

(8)
> 

 

> 

L12:=-(13*x)/12 - (5*y)/8 + 71/96; #LnPeqns(pt1,pt2);

-(13/12)*x-(5/8)*y+71/96

(9)
> 

L13:=-(9*x)/28 + (7*y)/4 - 69/56; #LnPeqns(pt1,pt3);

-(9/28)*x+(7/4)*y-69/56

(10)
> 

L23:=(16*x)/21 + (19*y)/8 + 1/8; #LnPeqns(pt2,pt3);

(16/21)*x+(19/8)*y+1/8

(11)
> 

L35:=(27*x)/14 + (7*y)/5 + 321/140; #LnPeqns(pt5,pt3)

(27/14)*x+(7/5)*y+321/140

(12)
> 

nullline:=3/5*x-4/5*y-1

(3/5)*x-(4/5)*y-1

(13)
> 

ptplt:=point([pt1,pt2,pt3,pt4,pt5],color="Green",symbol=solidcircle,symbolsize=10):
txtplt:=textplot([pt4[],typeset("pt4")],align={below,right}):

> 

plt1:=display(txtplt,implicitplot([DistCircle,L12,L13,L23,L35,nullline],x=-2..2,y=-1.5...1.5,color=[red,blue,blue,blue,blue,cyan]),ptplt,scaling=constrained)

> 

 

 
> 

# Projective Geometry Version

> 

DistCirclez:=x^2+y^2-z^2;  #a Cone

> 

 

x^2+y^2-z^2

(14)
> 

pt1p:=[pt1[],1];
pt2p:=[pt2[],1];
pt3p:=[pt3[],1];
pt4p:=[pt4[],1];
pt5p:=[pt5[],1];

[1/4, 3/4, 1]

 

[7/8, -1/3, 1]

 

[-3/2, 3/7, 1]

 

[3/5, -4/5, 1]

 

[-1/10, -3/2, 1]

(15)
> 

 

> 

 

> 

 

> 

L12p:=(13*x)/12 + (5*y)/8 - (71*z)/96;#LnPeqns([pt1p,pt2p,[0,0,0]]);

(13/12)*x+(5/8)*y-(71/96)*z

(16)
> 

L13p:=(13*x)/12 + (5*y)/8 - (71*z)/96;#LnPeqns([pt1p,pt3p,[0,0,0]]);

(13/12)*x+(5/8)*y-(71/96)*z

(17)
> 

L23p:=(9*x)/28 - (7*y)/4 + (69*z)/56;#LnPeqns([pt2p,pt3p,[0,0,0]]);

(9/28)*x-(7/4)*y+(69/56)*z

(18)
> 

L35p:=(27*x)/14 + (7*y)/5 + (321*z)/140;#LnPeqns([pt3p,pt5p,[0,0,0]]);

(27/14)*x+(7/5)*y+(321/140)*z

(19)
> 

L04p:=3/5*x-4/5*y-1*z;

(3/5)*x-(4/5)*y-z

(20)
> 

ptpltp:=point([pt1p,pt2p,pt3p,pt4p,pt5p],symbol=solidsphere, symbolsize=8,color="green"):
intp1:=intersectplot(DistCirclez,z=1,x=-2.5..2.5,y=-2.5..2.5,z=0..1,linestyle=solid):#unit circle at z=1
intp12p:=intersectplot(L12p,z=1,x=-2.5..2.5,y=-2.5..2.5,z=0..1,color=blue):
intp13p:=intersectplot(L13p,z=1,x=-2.5..2.5,y=-2.5..2.5,z=0..1,color=blue):
intp23p:=intersectplot(L23p,z=1,x=-2.5..2.5,y=-2.5..2.5,z=0..1,color=blue):
intp35p:=intersectplot(L35p,z=1,x=-2.5..2.5,y=-2.5..2.5,z=0..1,color=blue):
intp04p:=intersectplot(L04p,z=1,x=-2.5..2.5,y=-2.5..2.5,z=0..1,color=cyan):

> 

 

> 

display(ptpltp,intp1,intp12p,intp13p,intp23p,intp35p,intp04p,scaling=constrained,caption="Projective Co-ords on plane z=1",axes=normal,axis[3]=[tickmarks=[1]])

 
> 

 


Download 2024-06-10_Q_Intersectplot_quality.mw

First 7 8 9 10 11 12 13 Last Page 9 of 38