## 13806 Reputation

14 years, 151 days

## Really doesn't help...

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   );
 >

## And...

So

It is one line with two simple commands.

is better than one line with one simple command

## Interesting...

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..........

## Still no worksheet!!??...

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>);
 (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>);
 (2)
 >

## Not sure...

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:= ;   B:= ;   P :=;   H:=A+t*(B-A);   solve( (P-H)^+ . (B-A), t );   'H'=eval(H, t=`%` );
 (1)
 >
 >

## This produces...

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        )
 >
 >

## "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);
 (1)
 >

## It may be worth...

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

## Fairly obviously...

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);
 >

## This time...

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);
 >

## Works in Maple2022...

see the attached

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

## What do you have...

against using the big, green, up-arrow in the Mapleprimes toolbar to upload a worksheet?

See the attached

 > restart:   with(plots):   with(geometry):   _EnvHorizontalName := 'x':   _EnvVerticalName := 'y':   a := 11:   b := 9:   c := sqrt(a^2 - b^2):   t1 := (3*Pi)/4:   t2 := (-4*Pi)/5:   ellipse(el, x^2/a^2 + y^2/b^2 - 1):   point(M1, a*cos(t1), b*sin(t1)):   point(M2, a*cos(t2), b*sin(t2)):   point(F1, -c, 0):   point(F2, c, 0):   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              ( [ [ -c, 0, "F1"],                  [ c,  0, "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        );
 >

## If you have a general interest...

using the SAT solver, you might want to take a look at

https://www.maplesoft.com/applications/Detail.aspx?id=154483

where the solver is used to complete "The world's hardest Sudoku"

## There are a couple of things...

which you can try.

1. Find a BVP for which the analytic solution (definitely!)  known. Compare this analytic solution, with a numeric solution of the same BVP. Any differences should be very small.
2. Use Maple's odetest() command. Essentially this substitutes the proposed analytic solution into the original ODE, and returns 0 if the ODE is satisfied. If the ODE is not satisfied then it returns the "error" term, which is generally given by computing lhs(ODE)-rhs(ODE). Your propsed Anaytical_Solution fails this test.

Both approaches are illustrated in the attached.

solAna.mw

## First of all...

I suggest you learn the difference between indexed variables and suffixed variables.

Indexed variables (eg W[2], which will display as W2) refers to the second element of an indexable container W, which willl be a list, array, vector etc - something whose entries you can identify by the index

Suffixed variables (eg W__2, which will also display as W2) refers only to a name, which happens to have an inert suffix.

In your latest worksheet  Q4.mw, the assignment to eqs, contains all 'W' as  indexed variables (eg W[2]), but the call to indets() is only looking for variables W which are suffixed of which of course there are none

The attached contains two solutions - one where the variables you want are indexed and one where they are suffixed.

The final result in both cases is assigned to the indexable column vector W.

suffInd.mw

 First 6 7 8 9 10 11 12 Last Page 8 of 207
﻿