## 395 Reputation

10 years, 258 days

## Creation of user package...

Maple

Hello,

In a worksheet, I have defined several long procedures. In order to simplify my worksheet, I would like define thes procedures in a package so as to call theses procedures from the package. It should enable to improve the readability of my worksheet.

However, i have never make a custom package. Can you detail me the main steps so as to create a custom package ?

Thanks a lot for your help.

## Simplification of trigonometric expressi...

Maple

Hello,

I have still some difficulties to conduct some specific trigonometric simplications but which are very common in mechanism study.

The equations are in the form :

sin(gamma0(t))*cos(beta0(t)) = -(sin(psi[1](t))*cos(theta[1](t))*cos(gamma[1](t))+sin(psi[1](t))*sin(theta[1](t))*sin(gamma[1](t))-cos(theta[1](t))*cos(psi[1](t))*sin(gamma[1](t))+cos(psi[1](t))*sin(theta[1](t))*cos(gamma[1](t)))*cos(beta[1](t))

I would like to obtain this equation after simplifications :

sin(gamma0(t))*cos(beta0(t)) = cos(beta[1](t))*sin(gamma[1](t)-theta[1](t)-psi[1](t))

I try to make a procedure to automatize the simplification of this kind of trigonometric equation.

Strangely, I noticed that the simplification is done only if there is a minus before the combine function. The simplification works but the result is wrong because i didn't obtain the good sign.

For you information, I try to make these simplifications with MMA and the FullSimplify function of MMA gives directly the expected result that is to say :

I'm sure that it shoud exist a good way to conduct this kind of simplications in Maple.

Can you help me to correct my procedure so to obtain the good result and be enough general, adaptative ?

Code here and attached in this post :

Initialisation
restart:
with(LinearAlgebra):
with(Student[MultivariateCalculus]):
with(plots):
with(MathML):
with(ListTools):
constants:= ({constants} minus {gamma})[]:
`evalf/gamma`:= proc() end proc:
`evalf/constant/gamma`:= proc() end proc:
unprotect(gamma);
Angular Constraint equations
eq_liaison:=sin(gamma0(t))*cos(beta0(t)) = -(sin(gamma[1](t))*sin(psi[1](t))*sin(theta[1](t))-sin(gamma[1](t))*cos(theta[1](t))*cos(psi[1](t))+cos(gamma[1](t))*sin(psi[1](t))*cos(theta[1](t))+cos(gamma[1](t))*cos(psi[1](t))*sin(theta[1](t)))*cos(beta[1](t));
Traitement
TrigoTransform2:= proc(Eq)
local S,S1,tt,pp,Eq2,ListVariables,ListVariablesMod,Subs,size,rhsEq2,lhsEq2;
#Construit une liste à plat#
ListVariables:=indets(Eq, function(identical(t)));
ListVariables:=[op(ListVariables)];
ListVariablesMod:=map(f->cat(op(0,f),_),ListVariables);
Subs:=ListVariables=~ListVariablesMod;
#Variables Changement#
Eq2:=Eq:
print("Equation traitée=",Eq2):
Eq2:=subs(Subs, Eq2);
print("Equation après subs=",Eq2):
#Trigonometric transformations#
lhsEq2:=applyrule([
cos(u::anything)*cos(v::anything)-sin(u::anything)*sin(v::anything)=cos(u+v),
cos(u::anything)*sin (v::anything)+sin(u::anything)*cos(v::anything)=sin(u+v),
sin(u::anything)*sin(v::anything)-cos(u::anything)*cos(v::anything)=-cos(u+v),
-sin(v::anything)*cos(u::anything)-sin(u::anything)*cos(v::anything)=-sin(u+v)], simplify(lhs(Eq2), size));
print("Equation lhsEq2 première analyse=",lhsEq2):
rhsEq2:=applyrule([
cos(u::anything)*cos(v::anything)-sin(u::anything)*sin(v::anything)=cos(u+v),
cos(u::anything)*sin (v::anything)+sin(u::anything)*cos(v::anything)=sin(u+v),
sin(u::anything)*sin(v::anything)-cos(u::anything)*cos(v::anything)=-cos(u+v),
-sin(v::anything)*cos(u::anything)-sin(u::anything)*cos(v::anything)=-sin(u+v)], simplify(rhs(Eq2), size));
print("Equation rhsEq2 première analyse=",rhsEq2):
try
lhsEq2:=(trigsubs(2*combine(lhsEq2))[])/2;
print("Equation lhsEq2=",lhsEq2):
catch:
lhsEq2:=lhs(Eq2);
end try;
try
rhsEq2:=(trigsubs(-2*combine(rhsEq2))[])/2;
print("Equation rhsEq2=",rhsEq2):
catch:
rhsEq2:=rhs(Eq2);
end try;
Eq2:= lhsEq2=rhsEq2;
#Variables Changement#
Eq2:=subs(map(t->rhs(t)=lhs(t),Subs),Eq2)
end proc:
TrigoTransform2(eq_liaison);

TrigoTransformEqAng2_anglais.mws

Thanks a lot for your help.

## Signification of "[]" ...

Maple

Hello,

A small question : what does [] mean at the end of a function or a list ?

constants:= ({constants} minus {gamma})[]:

lhsEq2:=(trigsubs(2*combine(lhsEq2))[])/2;

## Assigning package to command...

Maple

Hello,

In my code, I need to use 2 packages :
- with(LinearAlgebra)
- with(ListTools)

Problem :
It seems that the package with(ListTools) creates some troubles/ conflicts when I use some functions of the LinearAlgebra package such as DotProduct.

Here a small example to illustrate my issue

with(LinearAlgebra):
with(Student[MultivariateCalculus]):
with(plots):
with(MathML):
DotProduct(<0,0,l>, <0,0,l>, conjugate = false);

--> This code works

with(LinearAlgebra):
with(Student[MultivariateCalculus]):
with(plots):
with(MathML):
with(ListTools):
DotProduct(<0,0,l>, <0,0,l>, conjugate = false);

--> This code doesn't work

I try to replace the line with the DotProduct by the following line but it still doesn't work

with(LinearAlgebra):-DotProduct(<0,0,l>, <0,0,l>, conjugate = false));

How can I do to use in my code both packages (LinearAlgebra and ListTools) ?

Thanks a lot for your help

## Simplification of trigonometric expressi...

Maple

Hello,

Still on the thematic on simplification of trigonometric expression.

I would like to simplify this equation. Normally, for a mecanical point of view, this equation could be simplified a lot and namely the psi[1](t) and theta[1](t) variables should disappear.

The difference with the former posts is the fact that now each term (for example  2*sin(gamma0(t))*z0(t)*cos(beta0(t))*xb[1]) can regroup 2 terms in factor with the trigonometric part.

eq:=l2[1]^2 = 2*sin(gamma0(t))*z0(t)*cos(beta0(t))*xb[1]-2*sin(gamma0(t))*zp[1](t)*cos(beta0(t))*xb[1]+2*sin(gamma0(t))*y0(t)*sin(alpha0(t))*zb[1]-2*sin(gamma0(t))*yp[1](t)*sin(alpha0(t))*zb[1]+2*sin(gamma0(t))*x0(t)*cos(alpha0(t))*zb[1]-2*sin(gamma0(t))*xp[1](t)*cos(alpha0(t))*zb[1]-2*cos(gamma0(t))*z0(t)*cos(beta0(t))*zb[1]+2*cos(gamma0(t))*zp[1](t)*cos(beta0(t))*zb[1]+2*cos(gamma0(t))*y0(t)*sin(alpha0(t))*xb[1]-2*cos(gamma0(t))*yp[1](t)*sin(alpha0(t))*xb[1]+2*cos(gamma0(t))*x0(t)*cos(alpha0(t))*xb[1]-2*cos(gamma0(t))*xp[1](t)*cos(alpha0(t))*xb[1]+2*y0(t)*cos(alpha0(t))*cos(beta0(t))*yb[1]-2*yp[1](t)*cos(alpha0(t))*cos(beta0(t))*yb[1]-2*x0(t)*sin(alpha0(t))*cos(beta0(t))*yb[1]+2*xp[1](t)*sin(alpha0(t))*cos(beta0(t))*yb[1]-2*sin(psi[1](t))*cos(theta[1](t))*l3[1]*xb[1]+2*sin(psi[1](t))*sin(theta[1](t))*l3[1]*zb[1]-2*cos(theta[1](t))*cos(psi[1](t))*l3[1]*zb[1]-2*cos(psi[1](t))*sin(theta[1](t))*l3[1]*xb[1]-2*sin(gamma0(t))*y0(t)*sin(alpha0(t))*cos(theta[1](t))*cos(psi[1](t))*l3[1]-2*sin(gamma0(t))*yp[1](t)*sin(alpha0(t))*sin(psi[1](t))*sin(theta[1](t))*l3[1]+2*sin(gamma0(t))*yp[1](t)*sin(alpha0(t))*cos(theta[1](t))*cos(psi[1](t))*l3[1]+2*sin(gamma0(t))*x0(t)*cos(alpha0(t))*sin(psi[1](t))*sin(theta[1](t))*l3[1]-2*sin(gamma0(t))*x0(t)*cos(alpha0(t))*cos(theta[1](t))*cos(psi[1](t))*l3[1]-2*sin(gamma0(t))*xp[1](t)*cos(alpha0(t))*sin(psi[1](t))*sin(theta[1](t))*l3[1]+2*sin(gamma0(t))*xp[1](t)*cos(alpha0(t))*cos(theta[1](t))*cos(psi[1](t))*l3[1]-2*cos(gamma0(t))*z0(t)*cos(beta0(t))*sin(psi[1](t))*sin(theta[1](t))*l3[1]+2*cos(gamma0(t))*z0(t)*cos(beta0(t))*cos(theta[1](t))*cos(psi[1](t))*l3[1]+2*cos(gamma0(t))*zp[1](t)*cos(beta0(t))*sin(psi[1](t))*sin(theta[1](t))*l3[1]-2*cos(gamma0(t))*zp[1](t)*cos(beta0(t))*cos(theta[1](t))*cos(psi[1](t))*l3[1]-2*cos(gamma0(t))*y0(t)*sin(alpha0(t))*sin(psi[1](t))*cos(theta[1](t))*l3[1]-2*cos(gamma0(t))*y0(t)*sin(alpha0(t))*cos(psi[1](t))*sin(theta[1](t))*l3[1]+2*cos(gamma0(t))*yp[1](t)*sin(alpha0(t))*sin(psi[1](t))*cos(theta[1](t))*l3[1]+2*cos(gamma0(t))*yp[1](t)*sin(alpha0(t))*cos(psi[1](t))*sin(theta[1](t))*l3[1]-2*cos(gamma0(t))*x0(t)*cos(alpha0(t))*sin(psi[1](t))*cos(theta[1](t))*l3[1]-2*cos(gamma0(t))*x0(t)*cos(alpha0(t))*cos(psi[1](t))*sin(theta[1](t))*l3[1]+2*cos(gamma0(t))*xp[1](t)*cos(alpha0(t))*sin(psi[1](t))*cos(theta[1](t))*l3[1]+2*cos(gamma0(t))*xp[1](t)*cos(alpha0(t))*cos(psi[1](t))*sin(theta[1](t))*l3[1]+yb[1]^2+xb[1]^2+zb[1]^2+l3[1]^2+z0(t)^2+zp[1](t)^2+y0(t)^2+yp[1](t)^2+x0(t)^2+xp[1](t)^2+2*z0(t)*sin(beta0(t))*yb[1]-2*zp[1](t)*sin(beta0(t))*yb[1]-2*z0(t)*zp[1](t)-2*y0(t)*yp[1](t)-2*x0(t)*xp[1](t)-2*sin(gamma0(t))*y0(t)*cos(alpha0(t))*sin(beta0(t))*xb[1]+2*sin(gamma0(t))*yp[1](t)*cos(alpha0(t))*sin(beta0(t))*xb[1]+2*sin(gamma0(t))*x0(t)*sin(alpha0(t))*sin(beta0(t))*xb[1]-2*sin(gamma0(t))*xp[1](t)*sin(alpha0(t))*sin(beta0(t))*xb[1]+2*cos(gamma0(t))*y0(t)*cos(alpha0(t))*sin(beta0(t))*zb[1]-2*cos(gamma0(t))*yp[1](t)*cos(alpha0(t))*sin(beta0(t))*zb[1]-2*cos(gamma0(t))*x0(t)*sin(alpha0(t))*sin(beta0(t))*zb[1]+2*cos(gamma0(t))*xp[1](t)*sin(alpha0(t))*sin(beta0(t))*zb[1]-2*sin(gamma0(t))*z0(t)*cos(beta0(t))*sin(psi[1](t))*cos(theta[1](t))*l3[1]-2*sin(gamma0(t))*z0(t)*cos(beta0(t))*cos(psi[1](t))*sin(theta[1](t))*l3[1]+2*sin(gamma0(t))*zp[1](t)*cos(beta0(t))*sin(psi[1](t))*cos(theta[1](t))*l3[1]+2*sin(gamma0(t))*zp[1](t)*cos(beta0(t))*cos(psi[1](t))*sin(theta[1](t))*l3[1]+2*sin(gamma0(t))*y0(t)*sin(alpha0(t))*sin(psi[1](t))*sin(theta[1](t))*l3[1]+2*sin(gamma0(t))*y0(t)*cos(alpha0(t))*sin(beta0(t))*sin(psi[1](t))*cos(theta[1](t))*l3[1]+2*sin(gamma0(t))*y0(t)*cos(alpha0(t))*sin(beta0(t))*cos(psi[1](t))*sin(theta[1](t))*l3[1]-2*sin(gamma0(t))*yp[1](t)*cos(alpha0(t))*sin(beta0(t))*sin(psi[1](t))*cos(theta[1](t))*l3[1]-2*sin(gamma0(t))*yp[1](t)*cos(alpha0(t))*sin(beta0(t))*cos(psi[1](t))*sin(theta[1](t))*l3[1]-2*sin(gamma0(t))*x0(t)*sin(alpha0(t))*sin(beta0(t))*sin(psi[1](t))*cos(theta[1](t))*l3[1]-2*sin(gamma0(t))*x0(t)*sin(alpha0(t))*sin(beta0(t))*cos(psi[1](t))*sin(theta[1](t))*l3[1]+2*sin(gamma0(t))*xp[1](t)*sin(alpha0(t))*sin(beta0(t))*sin(psi[1](t))*cos(theta[1](t))*l3[1]+2*sin(gamma0(t))*xp[1](t)*sin(alpha0(t))*sin(beta0(t))*cos(psi[1](t))*sin(theta[1](t))*l3[1]+2*cos(gamma0(t))*y0(t)*cos(alpha0(t))*sin(beta0(t))*sin(psi[1](t))*sin(theta[1](t))*l3[1]-2*cos(gamma0(t))*y0(t)*cos(alpha0(t))*sin(beta0(t))*cos(theta[1](t))*cos(psi[1](t))*l3[1]-2*cos(gamma0(t))*yp[1](t)*cos(alpha0(t))*sin(beta0(t))*sin(psi[1](t))*sin(theta[1](t))*l3[1]+2*cos(gamma0(t))*yp[1](t)*cos(alpha0(t))*sin(beta0(t))*cos(theta[1](t))*cos(psi[1](t))*l3[1]-2*cos(gamma0(t))*x0(t)*sin(alpha0(t))*sin(beta0(t))*sin(psi[1](t))*sin(theta[1](t))*l3[1]+2*cos(gamma0(t))*x0(t)*sin(alpha0(t))*sin(beta0(t))*cos(theta[1](t))*cos(psi[1](t))*l3[1]+2*cos(gamma0(t))*xp[1](t)*sin(alpha0(t))*sin(beta0(t))*sin(psi[1](t))*sin(theta[1](t))*l3[1]-2*cos(gamma0(t))*xp[1](t)*sin(alpha0(t))*sin(beta0(t))*cos(theta[1](t))*cos(psi[1](t))*l3[1]

Do you have some ideas so as to simplify this equation ?

N.B : Former posts on the topic of trigonometric simplification

http://www.mapleprimes.com/questions/209884-Simplification-Of-Trigonometric-Expression-II

http://www.mapleprimes.com/questions/209721-Simplification-Of-Trigonometric-Expressions

I put a worksheet attached in order to facilitate the troubleshooting.

Thanks a lot for your help

trigonometric_simplification.mw

 First 9 10 11 12 13 14 15 Last Page 11 of 33
﻿