Dang, didn't mean to misspell your name! On Mon, Aug 8, 2022 at 3:01 PM Kevin Pauba <klpa...@gmail.com> wrote:
> Hello Alen, so nice of you to reply. > > I have already worked out the solution using sin, cos and tangent. I also > used sympy to help solve the simultaneous equations and the solution was > succinct. I used rational trig as it seemed interesting and I had thought > that sympy might help to solve the problem in an even simpler form. As we > have seen, that's not the case. > > I'm now investigating the use of the parametric circle equation > https://mathnow.wordpress.com/2009/11/06/a-rational-parameterization-of-the-unit-circle/. > It seems that this model fits the problem space more closely. > > Again, thanks for the feedback and feel free to share anything else that > comes to mind. > > On Mon, Aug 8, 2022 at 12:53 PM Alan Bromborsky <abrombo...@gmail.com> > wrote: > >> It is not hard to write a closed form solution in terms of sine, cosine >> and the lengths of Q1, Q2, and the distance of the pivot point from the >> origin assuming the initial rotation angle is zero (makes it simpler). Is >> there any reason to object to that solution letting sympy do the messy >> algebra. I just takes a little vector algebra to set up the problem. >> On 8/6/22 10:37 PM, Kevin Pauba wrote: >> >> Also, oscar, none of the radicals in the formulas are due to my getting >> the lengths. All q* terms are quadrances ... no lengths are used in the >> formulas. I should have said quadrance of DP (the square of the length of >> the segment DP) instead of just segment DP. Once I have the values for q1, >> q2, q_dp and s, I'll convert them to length and angles for human >> consumption. >> >> On Saturday, August 6, 2022 at 2:26:36 PM UTC-7 Kevin Pauba wrote: >> >>> Oscar, I think I misstated something about rational trig that reinforces >>> your statement that it avoids square roots. Maybe there is some >>> manipulation of the equations (similar in spirit to using sympy.unrad()) >>> that would keep them in a form that doesn't require the square roots. It >>> would seem that sqrt would only be needed in the very last step when >>> evaluating the quadrances when I want a final distance measure once solved >>> ( d = sqrt(q1), for instance). >>> >>> On Saturday, August 6, 2022 at 10:35:38 AM UTC-7 Kevin Pauba wrote: >>> >>>> Rational trigonometry totally eschews the use of transcendental >>>> functions like sine and cosine. The "Triple Spread Formula" relating the >>>> speads to the quadrances, for example, is quadratic (as is the "Triple Quad >>>> Formula") -- the use of square roots is unavoidable. >>>> >>>> After working the same problem using traditional circular functions >>>> (sine & cosine), I was pleased to see a much simpler solution (that took >>>> relatively little processing time). I am intrigued with rational >>>> trigonometry but a bit disappointed that a solution is more elusive. >>>> >>>> On Saturday, August 6, 2022 at 9:14:19 AM UTC-7 Oscar wrote: >>>> >>>>> The equations you are attempting to solve lead to a very complicated >>>>> Groebner basis that is slow to compute (I'm not sure how long it >>>>> takes) and probably gives quite a complicated expression for the >>>>> solution. >>>>> >>>>> It might be better if you can derive the equations without introducing >>>>> radicals i.e. to work with the quadrances rather than square rooting >>>>> them to get lengths. I'm not sure how you derived this but I imagine >>>>> the intention of rational geometry is to avoid things like square >>>>> roots. >>>>> >>>>> On Sat, 6 Aug 2022 at 16:22, Kevin Pauba <klp...@gmail.com> wrote: >>>>> > >>>>> > That might be another approach but this represents an applied >>>>> geometry problem (mechanics). The segment DP (along with s) is an input >>>>> measure that is easy to determine/specify. >>>>> > >>>>> > On Saturday, August 6, 2022 at 4:45:13 AM UTC-7 smi...@gmail.com >>>>> wrote: >>>>> >> >>>>> >> >>>>> >> Kevin, I took a look at some of the rational geometry links -- it >>>>> makes me wonder if you might approach the relationship between Q1 and Q2 >>>>> and the area of the triangle extending past the line instead of simply the >>>>> length DP. >>>>> >> >>>>> >> /c >>>>> >> On Friday, August 5, 2022 at 9:11:39 PM UTC-5 klp...@gmail.com >>>>> wrote: >>>>> >>> >>>>> >>> Hi Oscar, >>>>> >>> >>>>> >>> That very well may be (as you've noticed, I'm not well versed in >>>>> math as I once was). This is an applied geometry problem (see attached >>>>> diagram) where the triangle rotates about point A. I am solving for the >>>>> relationships between q1 and q2, the perpendicular distance from P to the >>>>> base of the triangle (segment DP) and the angular measure s using rational >>>>> trigonometry (see >>>>> https://stijnoomes.com/laws-of-rational-trigonometry/). I have a >>>>> solution using sin, cos but I'm interested in this alternative method. >>>>> >>> >>>>> >>> equ1 in my working example solves for the segment DP given q1, q2 >>>>> and s (and angular measure). The problem presented here is to determine q1 >>>>> and q2 given two known segments and angular measures (q_dp1, s1) and >>>>> (q_dp2, s2). >>>>> >>> >>>>> >>> I hope this makes sense and that the information might help you >>>>> help me. >>>>> >>> >>>>> >>> Thanks for taking the time looking into it! >>>>> >>> >>>>> >>> On Friday, August 5, 2022 at 4:50:09 PM UTC-7 Oscar wrote: >>>>> >>>> >>>>> >>>> I just had a quick look and I think that maybe this has a >>>>> positive >>>>> >>>> dimensional solution set. >>>>> >>>> >>>>> >>>> On Fri, 5 Aug 2022 at 16:08, Kevin Pauba <klp...@gmail.com> >>>>> wrote: >>>>> >>>> > >>>>> >>>> > Here's the minimal working example (except for it hanging on >>>>> solve()): >>>>> >>>> > >>>>> >>>> > import sympy as sym >>>>> >>>> > from sympy import sqrt >>>>> >>>> > >>>>> >>>> > q1, q2, s, s1, s2, q_dp1, q_dp2 = sym.symbols('Q_1, Q_2, s, >>>>> s_1, s_2, Q_dp_1, Q_dp_2') >>>>> >>>> > >>>>> >>>> > equ1 = q1*s - q2*s + 2*q2 - 2*sqrt(q2*(q1*s - q2*s + q2 + >>>>> 2*sqrt(q1*q2*s*(1 - s)))) + 2*sqrt(q1*q2*s*(1 - s)) >>>>> >>>> > >>>>> >>>> > eq1 = equ1.subs({ s: s1 }) - q_dp1 >>>>> >>>> > print(f"{eq1} = 0") >>>>> >>>> > >>>>> >>>> > eq2 = equ1.subs({ s: s2 }) - q_dp2 >>>>> >>>> > print(f"{eq2} = 0") >>>>> >>>> > >>>>> >>>> > soln = sym.solve([eq1, eq2], (q1, q2), simplify=False) >>>>> >>>> > print(f"soln = {soln}") >>>>> >>>> > >>>>> >>>> > On Friday, August 5, 2022 at 7:47:07 AM UTC-7 Oscar wrote: >>>>> >>>> >> >>>>> >>>> >> You should be able to obtain a parametric Groebner basis to >>>>> represent >>>>> >>>> >> the solutions of this system. Whether that leads to an >>>>> explicit >>>>> >>>> >> solution in radicals is hard to say without trying. >>>>> >>>> >> >>>>> >>>> >> I would demonstrate how to do this but the code for putting >>>>> together >>>>> >>>> >> the equations is incomplete. >>>>> >>>> >> >>>>> >>>> >> On Fri, 5 Aug 2022 at 14:01, Chris Smith <smi...@gmail.com> >>>>> wrote: >>>>> >>>> >> > >>>>> >>>> >> > If you remove the radicals >>>>> (`sympy.solvers.solvers.unrad(eq1)`) and replace `Q1` and `Q2` with `x` >>>>> and >>>>> `y` and `Q_dp_1` with a and `s1` with `b` you will get an expression that >>>>> is of degree 4 in every variable and can be split into a term with `a` and >>>>> `b` and a term with only `b` -- both with `x` and `y`. >>>>> >>>> >> > >>>>> >>>> >> > u1 = a*(a**3 - 4*a**2*y*(2 - b) - 2*a*y**2*(-3*b**2 + 8*b - >>>>> 8) - 4*b**3*x**3 + 2*b**2*(-x**2*(-3*a + 2*y*(b - 2)) + 2*y**3*(b - 2)) - >>>>> 4*b*x*(a**2 + a*y*(b - 2) + y**2*(-b**2 - 8*b + 8))) + \ >>>>> >>>> >> > b**2*(b*(x**2 + y**2) + 2*x*y*(b - 2))**2 >>>>> >>>> >> > >>>>> >>>> >> > Replace a,b with c,d (for `q_dp_2` and `s2`) to get `u2`. I >>>>> can't imagine that solving a pair of quartics is going to give a nice >>>>> solution. But solving this system with known values for `a` and `b` would >>>>> be straightforward with `nsolve`. >>>>> >>>> >> > >>>>> >>>> >> > /c >>>>> >>>> >> > >>>>> >>>> >> > On Thursday, August 4, 2022 at 11:54:24 PM UTC-5 >>>>> klp...@gmail.com wrote: >>>>> >>>> >> >> >>>>> >>>> >> >> And eq1=Q_1*s_1 - Q_2*s_1 + 2*Q_2 - Q_dp_1 - >>>>> 2*sqrt(Q_2*(Q_1*s_1 - Q_2*s_1 + Q_2 + 2*sqrt(Q_1*Q_2*s_1*(1 - s_1)))) + >>>>> 2*sqrt(Q_1*Q_2*s_1*(1 - s_1)) ... sorry, long day! >>>>> >>>> >> >> >>>>> >>>> >> >> On Thursday, August 4, 2022 at 9:39:53 PM UTC-7 Kevin Pauba >>>>> wrote: >>>>> >>>> >> >>> >>>>> >>>> >> >>> Sorry, Jeremy. Good suggestion! >>>>> >>>> >> >>> >>>>> >>>> >> >>> s1, s2, q_dp1, q_dp2 = sym.symbols('s_1, s_2, Q_dp_1, >>>>> Q_dp_2') >>>>> >>>> >> >>> eq1 = equ1.subs({ s: s1 }) - q_dp1 >>>>> >>>> >> >>> md( "$" + sym.latex(eq1) + " = 0$\n" ) >>>>> >>>> >> >>> >>>>> >>>> >> >>> eq2 = equ1.subs({ s: s2 }) - q_dp2 >>>>> >>>> >> >>> md( "$" + sym.latex(eq2) + " = 0$\n" ) >>>>> >>>> >> >>> >>>>> >>>> >> >>> soln = sym.solve([eq1, eq2], q1, q2) >>>>> >>>> >> >>> print(f"soln = {soln}") >>>>> >>>> >> >>> >>>>> >>>> >> >>> I'll set simplify to False and see how it goes ... >>>>> >>>> >> >>> On Thursday, August 4, 2022 at 8:18:00 PM UTC-7 Kevin >>>>> Pauba wrote: >>>>> >>>> >> >>>> >>>>> >>>> >> >>>> I've attached a portion of a jupyter notebook. I'm >>>>> attempting to solve a simultaneous equation using sympy. The sym.solve() >>>>> in >>>>> the green input box doesn't return (well, I waited over night on my >>>>> macbook >>>>> pro). Might the solution be intractable? Is there another way to get a >>>>> solution? Any help is greatly appreciated. >>>>> >>>> >> > >>>>> >>>> >> > -- >>>>> >>>> >> > You received this message because you are subscribed to the >>>>> Google Groups "sympy" group. >>>>> >>>> >> > To unsubscribe from this group and stop receiving emails >>>>> from it, send an email to sympy+un...@googlegroups.com. >>>>> >>>> >> > To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/sympy/72f1b075-dbe2-41c0-bba6-9305c5960443n%40googlegroups.com. >>>>> >>>>> >>>> > >>>>> >>>> > -- >>>>> >>>> > You received this message because you are subscribed to the >>>>> Google Groups "sympy" group. >>>>> >>>> > To unsubscribe from this group and stop receiving emails from >>>>> it, send an email to sympy+un...@googlegroups.com. >>>>> >>>> > To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/sympy/54eddcdc-a42e-4ebc-87b8-b6aaea1e2d0an%40googlegroups.com. >>>>> >>>>> > >>>>> > -- >>>>> > You received this message because you are subscribed to the Google >>>>> Groups "sympy" group. >>>>> > To unsubscribe from this group and stop receiving emails from it, >>>>> send an email to sympy+un...@googlegroups.com. >>>>> > To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/sympy/357f1ceb-d50f-484f-ae1e-0c82a1414a62n%40googlegroups.com. >>>>> >>>>> >>>> -- >> You received this message because you are subscribed to the Google Groups >> "sympy" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to sympy+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/sympy/da2d4dba-9b7a-478c-9454-755cf0b9f2cbn%40googlegroups.com >> <https://groups.google.com/d/msgid/sympy/da2d4dba-9b7a-478c-9454-755cf0b9f2cbn%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "sympy" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/sympy/vPE0dlZTqVM/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> sympy+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/sympy/489ed715-994d-f2c7-3e87-bcf6307ab061%40gmail.com >> <https://groups.google.com/d/msgid/sympy/489ed715-994d-f2c7-3e87-bcf6307ab061%40gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/CAEODcKwxg0Qa4V46s8jj%3DuxZnAaRpTMyP2szOVUXnk%3DuVjZ0rQ%40mail.gmail.com.