tomleslie

13579 Reputation

19 Badges

13 years, 105 days

MaplePrimes Activity


These are replies submitted by tomleslie

as far as polygonplot() is concerned is just a list of two points - corresponding to just the coordinates() of the entity defined by geometry:-point().

see the attached

  restart:
  with(geometry):
  with(plots):
  _EnvHorizontalName = 'x':
  _EnvVerticalName = 'y':
   R := 5:
   circle(cir, [point(OO, [0, 0]), R]):
   ang := [3/4*Pi, -(3*Pi)/4, -Pi/6, 4*Pi/9]:
   seq
   ( point
     ( `||`(P, i),
       [ R*cos(ang[i]), R*sin(ang[i])]
     ),
     i = 1 .. 4
   ):
   trpts:=combinat:-choose([P1, P2, P3, P4], 3):
   for j from 1 by 1 to numelems(trpts) do
       triangle
       ( `||`( Tr, j),
         trpts[j]
       ):
       EulerCircle
       ( `||`(Elc, j),
         `||`(Tr, j),
         'centername'=`||`(o, j)
       ):
   od:
   display
   ( [ draw
       ( [ seq
           ( [ `||`(P, j)(color = black, symbol = solidcircle, symbolsize = 12),
               `||`(o, j)(color = black, symbol = solidcircle, symbolsize = 12),
               `||`(Tr, j)(color = green),
               `||`(Elc, j)
             ][],
             j=1..4
           ),
           cir(color = blue)
         ]
       ),
       polygonplot
       ( [ [ seq
             ( coordinates
               ( `||`(P, j)
               ),
               j=1..4
             )
           ],
           [ seq
             ( coordinates
               ( `||`(o, j)
               ),
               j=1..4
             )
           ]
         ],
         color = [blue, red],
         filled=true,
         transparency = 0.7
       ),
       textplot
       ( [ seq
           ( [ [ coordinates(`||`(P, i))[],
                 convert(`||`(P, i), string)
               ],
               [ coordinates(`||`(o, i))[],
                 convert(`||`(o, i), string)
               ]
             ][],
             i=1..4
           )
         ],  
         align=[above, right]
       )
     ],
     axes=none
   );;

 

 

Download euCir3.mw

and getting rid of more code you really don't need.

See the attached

  restart:
  with(geometry):
  with(plots):
  _EnvHorizontalName = 'x':
  _EnvVerticalName = 'y':
   R := 5:
   circle(cir, [point(OO, [0, 0]), R]):
   ang := [3/4*Pi, -(3*Pi)/4, -Pi/6, 4*Pi/9]:
   seq
   ( point
     ( `||`(P, i),
       [ R*cos(ang[i]), R*sin(ang[i])]
     ),
     i = 1 .. 4
   ):
   trpts:=combinat:-choose([P1, P2, P3, P4], 3):
   for j from 1 by 1 to numelems(trpts) do
       triangle
       ( `||`( Tr, j),
         trpts[j]
       ):
       EulerCircle
       ( `||`(Elc, j),
         `||`(Tr, j),
         'centername'=`||`(o, j)
       ):
   od:
   display
   ( [ draw
       ( [ seq
           ( [ `||`(P, j)(color = black, symbol = solidcircle, symbolsize = 12),
               `||`(o, j)(color = black, symbol = solidcircle, symbolsize = 12),
               `||`(Tr, j)(color = green),
               `||`(Elc, j)
             ][],
             j=1..4
           ),
           cir(color = blue)
         ]
       ),
       textplot
       ( [ seq
           ( [ [ coordinates(`||`(P, i))[],
                 convert(`||`(P, i), string)
               ],
               [ coordinates(`||`(o, i))[],
                 convert(`||`(o, i), string)
               ]
             ][],
             i=1..4
           )
         ],  
         align=[above, right]
       )
     ],
     axes=none
   );;

 

 

 

Download euCir2.mw

solve works perfectly, see the attached.

  restart;
  solve({x = 1 + 5*t, y = 1 + 3*t, 5*x + 3*y + 1 = 0}, {t, x, y});

{t = -9/34, x = -11/34, y = 7/34}

(1)

 

Download simpleSol.mw

However the Error mesage you are getting is "solving for expressions other than names or functions" implies that somewhere else in you worksheet (at least) one of 'x', 'y' or 't' has been assigned to something else.

Obviously if you had uploaded a worksheet, this would be trivial to fix. Since you absolutely refuse to upload worksheets here, I guess you will have to find/fix it yourself. No-one here can debug a worksheet which they cannot see!!

with the geometry package

  restart:
  with(geometry):
  _EnvHorizontalName:='x':
  _EnvVerticalName='y':
  point(A, [1, -2]):
  point(B, [-2, 3]):
  point(C, [1, 1]):
  line(l1, [A,B]):
  projection(P, C, l1):

  coordinates(P);
  simplify(distance(C,P));

[-11/34, 7/34]

 

(9/34)*34^(1/2)

(1)

 

Download proj2.mw

@JAMET 

I said in my original response that I have absolutely no idea what construction you are trying to produc. Your latest comment is equally confusing.

For example, you state

leave fixed the circumscribed triangle P1P2P2

This makes no sense. There is no such thing as a "circumscribed triangle" in geometry. You can define a triangle P1P2P3 and then a "circumscribed circle", which is the circle that passes through the points P1, P2, P3. This is the green circle in my first answer

You further state

make mobile the triangle inscribed AM2 M3

This makes no sense. There is no such thing as a "inscribed triangle" in geometry.. You can define a triangle AM1M2 and then an "inscribed circle", which is the circle tangent to all three edges of that triangle.This is the blue circle in my first answer

Since I still have no idea what construction you are trying to produce, and you are incapable of explaining what you want, I have added a "stationary" triangle to my previous answer, (and relabelled some points)


 

  restart;
  with(geometry):
  with(plots):
  _EnvHorizontalName='x':
  _EnvVerticalName='y':
  R := 5.0:
  ang := evalf~([2/3*Pi, -3*Pi*1/4, -Pi*1/6]):
  seq( point( `||`(P, i),
              [ R*cos(ang[i]),
                R*sin(ang[i])
              ]
            ),
       i = 1 .. 3
     ):
  triangle( T1,
            [seq(`||`(P, j), j=1..3)]
          ):
  incircle(C1, T1):
  circumcircle(C2, T1):

  porism:= proc(t)
                local theta:=ang[1]+t,
                      A, M1, M2, L, II, T2,j;
              #
              # local point A is somewhere on the (global)
              # circumcircle C2
              #
                point( A,
                       [ R*cos(theta),
                         R*sin(theta)
                       ]
                     ):
              #
              # Get the tangent lines from (local) A to
              # the (global) incircle C1
              #
                TangentLine(L, A, C1):
              #
              # Find the intersection of these tangent lines
              # with the (global) circumcircle C2. Note that
              # each tangent line, intersects C2 at two points,
              # one of which is (local) point(A). So for
              # both tangent lines, determine the intersection
              # point whihc isn't A
              #
                intersection(II, L[1], C2):
                if   distance(II[1], A) > distance(II[2], A)
                then point( M1,
                            coordinates(II[1])
                          );
                else point( M1,
                            coordinates(II[2])
                          );
                fi:
                intersection( 'II', L[2], C2):
                if   distance(II[1], A) > distance(II[2], A)
                then point( M2,
                            coordinates(II[1])
                          );
                else point( M2,
                            coordinates(II[2])
                          );
                fi:
                triangle( T2,
                          [A, M1, M2]
                        ):
                display
                ( [ draw
                    ( [ P1(color=black, symbol=solidcircle, symbolsize = 12),
                        P2(color=black, symbol=solidcircle, symbolsize = 12),
                        P3(color=black, symbol=solidcircle, symbolsize = 12),
                        A(color=black, symbol=solidcircle, symbolsize = 12),
                        M1(color=black, symbol=solidcircle, symbolsize = 12),
                        M2(color=black, symbol=solidcircle, symbolsize = 12),
                        T1(color=black, thickness=4),
                        T2(color=red),
                        C1(color=blue),
                        C2(color=green)
                      ]
                    ),
                    textplot
                    ( [ [ coordinates(A)[], "A", align=[above, right], color=red],
                        [ coordinates(M1)[], "M1", align=[above, right], color=red],
                        [ coordinates(M2)[], "M2", align=[above, right], color=red],
                        [ coordinates(P1)[], "P1", align=[below, left]],
                        [ coordinates(P2)[], "P2", align=[below, left]],
                        [ coordinates(P3)[], "P3", align=[below, left]]
                      ],
                      align=[above, right]
                    )
                  ],
                  axes=none
                );
        end proc:
  nf:=60:
  display
  ( [ seq
      ( porism(j),
        j=0..evalf(2*Pi), evalf(2*Pi/nf)
      )
    ],
    insequence=true
  );

 

 


 

Download ponTheo2.mw

So

It is one line with two simple commands.

is better than one line with one simple command

So you want to

  1. read a file containing maple code, converting that code to a string
  2. parse the string to reproduce/execute the maple code

rather than

  1. read/execute a file containing Maple code

I guess if you like doing things the hard way..........

You cannot 'assign' to a procedure parameter within the procedure. A procedure parameter is supplied with arguments when the procedure is called. so in the code snip you provided, the following statements are invalid

A:= <x1,y1>;
B:= <x2,y2>;
P :=<x3, y3>; 

You also appear to have forwardquotes, rather than backquotes around H in the final line of the procedure - tricky to tell from a cut-and-paste, which is another reason for posting a worksheet.

If you do want to write you own routine to get the projection of a point on a line, then a functional version of your code is shown in the attached. Note that this does no error-checking for whether the projection is possible. You might want to consider when the calculation will fail!

It is also possible to perform the same calculation using te geometry() package as shown in the attached

  restart;
  ProjPL:= proc(P, A, B)
                local H, t:
                H:= A+t*(B-A);
                solve( (P-H)^+ . (B-A), t );
                return eval( H, t=% );
           end:
  ProjPL( <1, 1>, <2, 3>, <4, 5>);

Vector(2, {(1) = 1/2, (2) = 3/2})

(1)

  restart:
  _EnvHorizontalName:='x':
  _EnvVerticalName:='y':
  ProjPL:= proc( P, A, B)
                 uses geometry:
                 local P0, P1, P2, l, q:
                 point(P0, P[1], P[2]):
                 point(P1, A[1], A[2]):
                 point(P2, B[1], B[2]):
                 line(l, [P1, P2]);
                 projection(Q, P0, l);
                 return coordinates(Q);
           end proc:
  ProjPL( <1, 1>, <2, 3>, <4, 5>);

[1/2, 3/2]

(2)

 

Download proj.mw

 

I understand the problem. Supplied code seems to execute - see the attached.

Might be better if you upload a worksheet which illustrates your problem using the big green up-arrow in the Mapleprimes toolbar

  restart;
  A:= <x1,y1,z1>;
  B:= <x2,y2,z2>;
  P :=<x3, y3, z3>;
  H:=A+t*(B-A);
  solve( (P-H)^+ . (B-A), t );
  'H'=eval(H, t=`%` );

` restart`

 

Vector(3, {(1) = x1, (2) = y1, (3) = z1})

 

Vector(3, {(1) = x2, (2) = y2, (3) = z2})

 

Vector(3, {(1) = x3, (2) = y3, (3) = z3})

 

Vector(3, {(1) = x1+t*(x2-x1), (2) = y1+t*(y2-y1), (3) = z1+t*(z2-z1)})

 

(x1^2-x1*x2-x1*x3+x2*x3+y1^2-y1*y2-y1*y3+y2*y3+z1^2-z1*z2-z1*z3+z2*z3)/(x1^2-2*x1*x2+x2^2+y1^2-2*y1*y2+y2^2+z1^2-2*z1*z2+z2^2)

 

H = Vector[column](%id = 36893488148219079244)

(1)

 

 


 

Download prob.mw

pretty much the same construction, but uses the geometry() package


 

  restart;
  with(geometry):
  with(plots):
  _EnvHorizontalName='x':
  _EnvVerticalName='y':
  R := 3:
  ang := [0, (1/3)*Pi, 3*Pi*(1/4)+2/10, 7*Pi*(1/6)+4/10, 8*Pi*(1/5), 13*Pi*(1/7)]:
  seq( point( `||`(P,i), [R*cos(ang[i]), R*sin(ang[i])]), i=1..6):
  circle(cir, [ point(OO, [0,0]), 3]):
  seq( TangentLine( `||`(tang, i), `||`(P, i), cir), i=1..6):
  seq(intersection(`||`(Q, i), `||`(tang, i), `||`(tang, irem(i, 6)+1)), i=1..6):
  seq(segment(`||`(S, i), `||`(Q, i), `||`(Q, irem(i, 6)+1)), i=1..6):
  seq(line(`||`(L, i), [`||`(P, i), `||`(P, irem(i, 6)+1)]), i=1..6):
  seq(line(`||`(L, 6+i), [`||`(Q, i), `||`(Q, i+3)]), i=1..3):
  seq(intersection(`||`(P, i+6), `||`(L, i), `||`(L, i+3)), i=1..3):
  line(L10, [P7,P9]):
  display( [ draw( [P1(symbol=solidcircle, symbolsize=8, color=blue),
                    P2(symbol=solidcircle, symbolsize=8, color=blue),
                    P3(symbol=solidcircle, symbolsize=8, color=blue),
                    P4(symbol=solidcircle, symbolsize=8, color=blue),
                    P5(symbol=solidcircle, symbolsize=8, color=blue),
                    P6(symbol=solidcircle, symbolsize=8, color=blue),
                    P7(symbol=solidcircle, symbolsize=8, color=red),
                    P8(symbol=solidcircle, symbolsize=8, color=red),
                    P9(symbol=solidcircle, symbolsize=8, color=red),
                    S1( color=green, thickness=4),
                    S2( color=green, thickness=4),
                    S3( color=green, thickness=4),
                    S4( color=green, thickness=4),
                    S5( color=green, thickness=4),
                    S6( color=green, thickness=4),
                    Q1(symbol=solidcircle, symbolsize=8, color=black),
                    Q2(symbol=solidcircle, symbolsize=8, color=black),
                    Q3(symbol=solidcircle, symbolsize=8, color=black),
                    Q4(symbol=solidcircle, symbolsize=8, color=black),
                    Q5(symbol=solidcircle, symbolsize=8, color=black),
                    Q6(symbol=solidcircle, symbolsize=8, color=black),
                    L1( color=magenta, linestyle=dash),
                    L2( color=magenta, linestyle=dash),
                    L3( color=magenta, linestyle=dash),
                    L4( color=magenta, linestyle=dash),
                    L5( color=magenta, linestyle=dash),
                    L6( color=magenta, linestyle=dash),
                    L7( color=orange),
                    L8( color=orange),
                    L9( color=orange),
                    L10( color=blue, thickness=4),
                    cir
                  ]
                ),
             textplot( [seq( [ coordinates(`||`(P, i))[], convert(`||`(P, i), string)],
                             i=1..6
                           )
                       ],
                       'align' = {'above', 'left'}
                     ),
             textplot( [seq( [ coordinates(`||`(Q, i))[], convert(`||`(Q, i), string)],
                             i=1..6
                           )
                       ],
                       'align' = {'above', 'left'}
                     ),
             textplot( [ [ coordinates( P7)[], "beta"],
                         [ coordinates( P8)[], "gamma"],
                         [ coordinates( P9)[], "alpha"]
                       ],
                       'align' = {'above', 'right'}
                     )
           ],
           view=[-6..10,-15..6],
           scaling=constrained,
           size=[800,800],
           axes=none
       )

 

 

 

Download hexplot2.mw

"Indexed variable names"

fooled me. If you jut want suffixed names where the suffix may (or may not) be an inert subscript then as others have stated you need Maple's concatenation operators - either cat(), or ||.

When using the latter, I generally prefer to do so in prefix form - consider the "toy" examples in the attached

  seq( `||`(R, i)=i^2, i=1..10);
  seq( cat(R, i)=i^2, i=1..10);
  seq( `||`(R__, i)=i^2, i=1..10);
  seq( cat(R__, i)=i^2, i=1..10);
  

R1 = 1, R2 = 4, R3 = 9, R4 = 16, R5 = 25, R6 = 36, R7 = 49, R8 = 64, R9 = 81, R10 = 100

 

R1 = 1, R2 = 4, R3 = 9, R4 = 16, R5 = 25, R6 = 36, R7 = 49, R8 = 64, R9 = 81, R10 = 100

 

R__1 = 1, R__2 = 4, R__3 = 9, R__4 = 16, R__5 = 25, R__6 = 36, R__7 = 49, R__8 = 64, R__9 = 81, R__10 = 100

 

R__1 = 1, R__2 = 4, R__3 = 9, R__4 = 16, R__5 = 25, R__6 = 36, R__7 = 49, R__8 = 64, R__9 = 81, R__10 = 100

(1)

 

Download suff.mw

 checking the "backup" files which Maple produces about every 15minutes (by default).

On a windows machine, these backup files are usually stored in C:/Users/yourUserName/maple/Backup/ where you can browse for likely possibilities, either by file name or creation time. If you find any likely candidates, you can restore from the menus with File->RestoreBackup

the point T lies on another ellipse withe equation x^2/121 + y^2/81 - 2 = 0, as shown in the attached.

  restart:

  with(plots):
  with(geometry):
  _EnvHorizontalName := 'x':
  _EnvVerticalName := 'y':

  a := 11:
  b := 9:
  ellipse(el, x^2/a^2 + y^2/b^2 - 1):
  
  tg1:=(x*a*cos(t)/a^2 + y*b*sin(t)/b^2)^2 = 1:
  tg2:=(x*a*cos(t+Pi/2)/a^2 + y*b*sin(t+Pi/2)/b^2)^2 = 1:
  ellipse( e2, simplify(tg1+tg2)):
  Equation(e2);

  point(F1, coordinates~(foci(el))[1]):
  point(F2, coordinates~(foci(el))[2]):

  Fig:= proc(t)
             global a, b, el, e2, F1, F2;
             local t1 := t,
                   t2 := t+Pi/2,
                   M1, M2, L1, L2, L3, L4,
                   tag1, tang2, T, c1;
             uses geometry, plots:
             point(M1, a*cos(t1), b*sin(t1)):
             point(M2, a*cos(t2), b*sin(t2)):
             line(L1, [F1, M1]):
             line(L2, [F2, M2]):
             line(L3, [F1, M2]):
             line(L4, [F2, M1]):
             line( tang1, x*a*cos(t1)/a^2 + y*b*sin(t1)/b^2 = 1):
             line( tang2, x*a*cos(t2)/a^2 + y*b*sin(t2)/b^2 = 1):
             intersection(T, tang1, tang2):
             circle( c1, [T, distance(T, L4) ] ):
             display( [ textplot
                        ( [ [ coordinates(F1)[], "F1"],
                            [ coordinates(F2)[], "F2"] ,                         
                            [ coordinates(M1)[], "M1"],                          
                            [ coordinates(M2)[], "M2"],
                            [ coordinates(T)[],  "T"]
                          ],
                          align={"above",'right'}
                        ),
                        draw
                        ( [ c1(color=blue),
                            el(color=red),
                            e2(color=red, linestyle=dash),
                            M1(color=black, symbol=solidcircle, symbolsize=16),
                            M2(color=black, symbol=solidcircle, symbolsize=16),
                            T(color=black, symbol=solidcircle, symbolsize=16),           
                            L1(color=black),
                            L2(color=green),
                            L3(color=black),
                            L4(color=green),
                            tang1(color=blue),
                            tang2(color=blue),
                            F1(color=blue, symbol=solidcircle, symbolsize=16),                    
                            F2(color=red, symbol=solidcircle, symbolsize=16)
                          ]
                        )
                     ],
                     scaling=constrained,
                     axes=none
                   );
            end proc:
  nFig := 60:
  Figs := seq(Fig(2*Pi*i/nFig), i = 0 .. nFig):
  display(Figs, insequence = true);

(1/121)*x^2+(1/81)*y^2-2 = 0

 

 

 

Download ell3.mw

you do not upload the relevant worksheet, instead you cut and paste a few random commands. Am I supposed to be able to work out what this pile of garbage is expected to do?

If it is anything other than a simple animation of the construction which I prtoduced earlier ell.mw  here - then you are out of luck because the attached is based on the former

  restart:

  with(plots):
  with(geometry):
  _EnvHorizontalName := 'x':
  _EnvVerticalName := 'y':

  a := 11:
  b := 9:
  ellipse(el, x^2/a^2 + y^2/b^2 - 1):
  point(F1, coordinates~(foci(el))[1]):
  point(F2, coordinates~(foci(el))[2]):

  Fig:= proc(t)
             global a, b, el, F1, F2;
             local t1 := t,
                   t2 := t+Pi/2,
                   M1, M2, L1, L2, L3, L4,
                   tag1, tang2, T, c1;
             uses geometry, plots:
             point(M1, a*cos(t1), b*sin(t1)):
             point(M2, a*cos(t2), b*sin(t2)):
             line(L1, [F1, M1]):
             line(L2, [F2, M2]):
             line(L3, [F1, M2]):
             line(L4, [F2, M1]):
             line( tang1, x*a*cos(t1)/a^2 + y*b*sin(t1)/b^2 = 1):
             line( tang2, x*a*cos(t2)/a^2 + y*b*sin(t2)/b^2 = 1):
             intersection(T, tang1, tang2):
             circle( c1, [T, distance(T, L4) ] ):
             display( [ textplot
                        ( [ [ coordinates(F1)[], "F1"],
                            [ coordinates(F2)[], "F2"] ,                         
                            [ coordinates(M1)[], "M1"],                          
                            [ coordinates(M2)[], "M2"],
                            [ coordinates(T)[],  "T"]
                          ],
                          align={"above",'right'}
                        ),
                        draw
                        ( [ c1(color=blue),
                            el(color=red),
                            M1(color=black, symbol=solidcircle, symbolsize=16),
                            M2(color=black, symbol=solidcircle, symbolsize=16),
                            T(color=black, symbol=solidcircle, symbolsize=16),           
                            L1(color=black),
                            L2(color=green),
                            L3(color=black),
                            L4(color=green),
                            tang1(color=blue),
                            tang2(color=blue),
                            F1(color=blue, symbol=solidcircle, symbolsize=16),                    
                            F2(color=red, symbol=solidcircle, symbolsize=16)
                          ]
                        )
                     ],
                     scaling=constrained,
                     axes=none
                   );
            end proc:
  nFig := 60:
  Figs := seq(Fig(2*Pi*i/nFig), i = 0 .. nFig):
  display(Figs, insequence = true);

 

 

Download ell2.mw

@pgdv 

see the attached

interface(version);
simplify(sqrt((x^2 + y^2)/x)/sqrt(x^2 + y^2)) assuming x>0, y>0;

`Standard Worksheet Interface, Maple 2022.2, Windows 7, October 23 2022 Build ID 1657361`

 

1/x^(1/2)

(1)

 

Download simp.mw

4 5 6 7 8 9 10 Last Page 6 of 206