Ronan

1396 Reputation

16 Badges

13 years, 351 days
East Grinstead, United Kingdom

MaplePrimes Activity


These are questions asked by Ronan

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

How do I get the susset that contains unknowns on the rhs of the elements?

restart

 

# I need this subset {a=1/sqrt(2+A), b=6*sqrt(4+N),  d=5*H}

 

C:={a=1/sqrt(2+A),b=6*sqrt(4+N) ,c=sqrt(7),d=5*H,,e=-12,f=-96}

{a = 1/(2+A)^(1/2), b = 6*(4+N)^(1/2), c = 7^(1/2), d = 5*H, e = -12, f = -96}

(1)

selectremove(has,indets(rhs~(C)),C)

{}, {A, H, K, N, 1/(2+A)^(1/2), (4+N)^(1/2)}

(2)

selectremove(has,lhs~(C)=indets(rhs~(C)),C)

() = (), {a, b, c, d, e} = {H, K, N, (4+N)^(1/2)}

(3)
 

 

Download 2024-06-05_Q_Select_Remove_indet_elements.mw

5 6 7 8 9 10 11 Last Page 7 of 36