Hello Christopher, All,
> Dear all,
>
> Yes, there are ways to get an "explicit" curve as the solution to this
> problem. I've worked on this problem myself. My code for "Watt's
> linkage" is below, which I'm sure you can adapt to your problem.
> This code does take some time to execute. I suggest, for the first
> few runs at least, you use specific values for the constants *before*
> you solve the system!
>
> I hope this helps.
>
> Chris Sangwin
>
> // Attached code stripped
sorry, for responding so late, this issue is still open, but it's part
of my spare time project, so I need to prioritize
My intention is to find general forward kinematics to the delta robot
problem, which I actually solved already with the attached code. In the
forward kinematics, I will allow differing arm lengths, joint positions
etc. since one can't possibly build everything 100% perfectly. I will
however still need some kind of an interpolated
3D-correction-volume-function in the end, I fear.
The next step is to have a dynamic model of the robot-to-be in order to
pre-control inter-actuator-couplings. For this I will use perfect
geometry for simplicity, since I will need 1st derivatives of the the
forward kinematics and they literally explode, as I witnessed with my
original Maxima script - I think the effects of the small construction
imperfections are negligible in this regard.
Now the thing is, even the solution for the basic forward kinematics
would explode, if I hadn't used some substitutions with recurring
patterns (Maxima basically runs out of memory for solving the
equations). Doing a derivative is then basically
straight-forward-doable, as can be seen with my script, however the
result is far too "big" expression-wise. And this is where my problem
begins. I can see recurring patterns there as well, also I can see basic
expanded binomials. However when I try to substitute them with ratsubst,
the term gets even bigger, because ratsubst seems to outsmart me and
rearranges terms, introduces virtual "zeros" (like adding + a - a). This
leads to the situation, where trying to substitute parts actually makes
the result way "bigger". But if I take the necessary hours to do it by
hand, I will a) do a bunch of mistakes (I could of course use Maxima to
check my doings for equivalence) and it is b) not automatically
reproducable later-on, which is the bigger problem.
Granted I learned a bit more about Maxima in the meanwhile, so I will
basically try to introduce some of the substitutions prior to deriving
and will declare the symbols as being dependant on the variables, so I
can derive the whole problem in smaller steps and get a reasonable
result with any luck.
What I would basically need was something like ratsubst, just not as
smart. If I have an n-ary sum/product, it should find sub-patterns in
them and not only in whole expressions like subst, but it should not try
to do stuff that might "enlargen" the expression that I'm working on
like ratsubst does.
So currently: subst too weak, ratsubst too strong/indetermenistic for
math-dilletants like me.
Okay, that being said, I'm also interrested in the
Grobner-bases-strategy you've used (Only that I think that it is not
really applicable to my problem, since I need to do further algebraic
operations on the results I get here and they seem to yield "automatic"
but expression-wise suboptimal results). I'm such an engineer guy who
was described in an unrelated message on the list just recently: "Maths?
I don't need no fucking maths!". A professor of mine briefly mentioned
them. He had used them to optimize a feedback-control which was
basically a set of polynomial equations. Now Wikipedia's article doesn't
really help me understanding that fully (that applies to most
maths-articles there). I currently think that they're basically about
finding, under some given ordering, a unique set of polynomial equations
("representative set") with the same roots as the original set, just
with simpler terms? Is there a recommendable pdf that covers them
floating on the web, for maths-agnostics like me? Or is this really
advanced stuff?
And now to an problem-wise unrelated question. I have developed a
science-unit (Imperial, SI, etc.) converter which basically works on
ASTs and simplifies them with commonly known algebraic rules until you
get an affine projection (or an error, since the conversion is illegal).
My first attempt just used pattern-matching with replacement. However,
for me, pattern-matching seemed basically nearly undoable to find
commutative or associative permutations of the base pattern. So I could
not use the pattern-matcher to factor out common factors and had to
resort on specially build alghoritms: the rule "%1 * %2 + %1 * % 3 => %1
* (%2 + %3)" of course works for "a*b+a*c", but does not work for
"a*b+c*a" with a matcher that can't handle commutative operations.
Now from what I gathered so far, Maxima uses some kind of Lisp, and with
that an AST, just like I'm using. With that I assume that it works with
pattern matching (much more advanced obviously) just like I do. Does
Maxima's/Lisp's pattern matcher support matching equivalent (under
commutativity or associativity) permutations of a pattern? I'd be
delighted to find out, how one would go about that...
With Kind Regards,
Michael
PS: Sorry to Christopher, I replied personally in my first attempt.