restart:with(LinearAlgebra):with(plots):with(geometry):with(plottools):
On appelle alpha la moitié de l'angle de rotation de la roue menée par tour de roue menante.
alpha=Pi/n en radians?
soit Pi/8 pour 8 rainures..
On a alors les relations suivantes entre l'entaxe E, le rayon de la roue ùenante R1 et le rayon de la roue menée R2 :
R1=E.sin(alpha), R2=E*cos(alpha)
Intersection du cercle (O,R2) avec la droite tan(phi)x-r/cos(phi), on obtient les coordonnées de P3
sol:=allvalues(solve([tan(phi)*x-r/cos(phi)=y,y^2+x^2=R2^2],[x,y])):
Intersection de 2 cercles
sol1:=allvalues(solve([(x-E)^2+y^2=(R-a)^2,y^2+x^2=R2^2],[x,y])):
Coordonnées des points du pourtour de l'élément de croix
Oo:=point([0,0]):
phi:=Pi/8:R2:=5:r:=1/4:E:=R2/cos(phi):evalf(%):R:=R2*tan(phi):evalf(%):a:=0.5:
P1:=point([(R2/2-r)*cos(phi),(R2/2-r)*sin(phi)]):
P2:=point([(R2/2)*cos(phi)+r*sin(phi),(R2/2)*sin(phi)-r*cos(phi)]):
xP2:=(R2/2)*cos(phi)+r*sin(phi):yP2:=(R2/2)*sin(phi)-r*cos(phi):
xP1:=(R2/2-r)*cos(phi):yP1:=(R2/2-r)*sin(phi):
Equation paramétrique du segment OP1 (t varie de 0 à 1) ;
x1:=t*(0-xP1)+xP1:
y1:=t*(0-yP1)+yP1:
n1:=5:
dt:=1/(n1-1):#t varie entre 0 et 1
for i to n1 do
tau:=(i-1)*dt:
xx[i]:=evalf(subs(t=tau,x1)):
yy[i]:=evalf(subs(t=tau,y1)):
#print(i,xx[i],yy[i]);
od:
Equation paramétrique du quart de cercle P1P2 de la rainure (t varie de 0 à 1)
x2:=R2/2*cos(phi)+r*cos(t):#attention au sens de rotation du parcours de l'objet
y2:=R2/2*sin(phi)+r*sin(t):
n2:=6:
dt:=Pi/2/(n2-1):#arc de Pi/2
for i to n2 do
tau:=phi-Pi+(i-1)*dt:
xx[i]:=evalf(subs(t=tau,x2)):
yy[i]:=evalf(subs(t=tau,y2)):
od:
for i to n2 do Vector[row]([i,xx[i],yy[i]]) od:
droite:=plot((tan(phi)*x-r/cos(phi),x=0..3),linestyle=dot,color=blue):
sol[1]:
xP3:=evalf(subs(op(1,sol[1]),x)):yP3:=evalf(subs(op(1,sol[1]),y)):
xP2:yP2:
xP4:=evalf(subs(op(1,sol1[1]),x)):yP4:=evalf(subs(op(1,sol1[1]),y)):
xP5:=E-(R-a):yP5:=0:
x3:=t*(xP3-xP2)+xP2:
y3:=t*(yP3-yP2)+yP2:
n3:=10:
dt:=1/(n3-1):#t varie entre 0 et 1
for i to n3 do
tau:=(i-1)*dt:
xx[i+n2]:=evalf(subs(t=tau,x3)):
yy[i+n2]:=evalf(subs(t=tau,y3)):
od:
for i to n3 do Vector[row]([i,xx[i],yy[i]]) od:
x4:=xP5+R-a+(R-a)*cos(t):#attention au sens de rotation du parcours de l'objet
y4:=(R-a)*sin(t):
n4:=11:
eta:=arcsin(yP4/(R-a)):
dt:=(-eta)/(n2-1)/2:#arc de Pi/2
for i to n4 do
tau:=(Pi+eta)+(i-1)*dt:#recherche de tau ?
xx[i+n2+n3]:=evalf(subs(t=-tau,x4)):
yy[i+n2+n3]:=evalf(subs(t=-tau,y4)):
od:
for i to n4 do Vector[row]([i,xx[i],yy[i]]) od:
n:=n2+n3+n4;
n := 27
for i to n do Vector[row]([i,xx[i],yy[i]]) od:
figure:=NULL:
for i from 0 to n do
xx[0]:=0:yy[0]:=0:
figure:=figure,[xx[i],yy[i]]:
#print(i,xx[i],yy[i]);
od:
polygonplot([figure],scaling=constrained,color=yellow,view=[-0.1..5,-0.1..3]):
for i to n do X[i]:=xx[i]: Y[i]:=yy[i] od:
d1:=plottools[disk]([xP1,yP1],0.05,color=blue):
d2:=plottools[disk]([xP2,yP2],0.05,color=red):
d3:=plottools[disk]([xP3,yP3],0.05,color=green):
d4:=plottools[disk]([xP4,yP4],0.05,color=green):
d5:=plottools[disk]([xP5,yP5],0.05,color=green):
fig:=pointplot([figure],scaling=constrained):
Po:=pointplot([[xP1,yP1],[xP2,yP2],[xP3,yP3]],color = blue, symbol = asterisk):
Cir:=plot([R2*cos(t),R2*sin(t),t=0..Pi/2],color=black):
Arc:=plot([E+(R-a)*cos(t),(R-a)*sin(t),t=3*Pi/4..Pi],linestyle=dot,color=blue):
textplot({[1, 2, "one point in 2-D"], [3, 2, "second point in 2-D"]}):
texte:=textplot([[xP1-0.2,yP1,"P1"],[xP2,yP2-0.3,"P2"],[xP3+0.2,yP3+0.2,"P3"],
[xP4+0.2,yP4+0.1,"P4"],[xP5-0.2,yP5+0.2,"P5"]]):
display({Arc,Cir,d1,d2,d3,d4,d5,Po,fig,droite,texte},scaling=constrained,view=[-1..7,-1..6]):
with(plottools):
printlevel:=3:
Miroir : symétrie par rapport à l'axes des x
for i from 0 to n/2 do
tt:=yy[i]:
yy[i]:=yy[n-i+1]:
yy[n-i+1]:=tt:
tt:=xx[i]:
xx[i]:=xx[n-i+1]:
xx[n-i+1]:=tt
od:
for i from 0 to n-1 do
xx[2*n-i]:=xx[i]:
yy[2*n-i]:=-yy[i]:
#print(i,xx[i],yy[i])
od:
Poly:=NULL:
for i from 0 to 2*n-1 do
xx[0]:=0:yy[0]:=0:
Poly:=Poly,[xx[i],yy[i]]:od:
polygonplot([Poly],color=yellow,scaling=constrained):
pointplot([Poly],color = blue, scaling=constrained,symbol = asterisk,view=[-1..5,-3..3]):
Rotation
unassign('xt','yt'):
#gc():
zt:=8:#8 rainures ou faisceaux
xt:=Vector(63,[]):
yt:=Vector(63,[]):
xt:=Vector((2*n-1),zt,[]):
yt:=Vector((2*n-1),zt,[]):
j:=0:
for k from 0 to zt-1 do
j:=0:
phi:=2*Pi*k/zt:
cs:=cos(phi):
sn:=sin(phi):
for kk from 1 to 2*n-1 do
j:=j+1:
xt[j][k]:=evalf(xx[kk]*cs-yy[kk]*sn):
yt[j][k]:=evalf(xx[kk]*sn+yy[kk]*cs):
od:
od:
N1:=j:
points:=seq(seq([xt[i][j], yt[i][j]], j=0..zt-1), i=1..2*n-1):
p_cross:= pointplot([points], scaling = constrained, color = black,linestyle=solid, filled=[yellow]):
polygonplot([points], color = yellow, scaling = constrained);
NULL;
display([p_cross]);#How to draw this cross with a line without points. Thank you.

Hello, I'm using Maple 2021.2 to approximate the solution to a differential equation using a pseudospectral expansion in the basis of Hermite polynomials. After setting up some equations, I get a non-linear system of equations that I try to solve using the Maple's function solve, but Maple suddenly crashes during the execution of this function.

My code is the following:

HN := (n, y) -> exp(-1/2*y^2)*simplify(HermiteH(n, y))/sqrt(sqrt(Pi)*2^n*n!):
u7 := a0*HN(0, y) + a1*HN(1, y) + a2*HN(2, y) + a3*HN(3, y) + a4*HN(4, y) + a5*HN(5, y) + a6*HN(6, y):
resid := diff(u7, y $ 2) + 4*y*diff(u7, y)*u7 + 2*u7^2:
r := evalf(allvalues(RootOf(HermiteH(7, x), x)));
equations := {evalf(eval(u7, y = 0) - 1)};
for root_r in r do
if root_r != 0 then
equations := {op(equations), evalf(eval(resid, y = root_r))};
end if:
end do:
solutions := solve(equations, {a0, a1, a2, a3, a4, a5, a6}):

Does anyone have any idea about what is happening? Is there any better way of solving a non-linear system of equations?

I am attempting to use maplev mode for emacs. Ubuntu 20.04.3, Emacs 26.3, maplev-mode from git, release-2.36-59-g142c03. maple 2021.

I copied mload from an older computer and added a line to define maple, after the original maple definition line.

MAPLE=${MAPLE:-maple} # Maple script

MAPLE=/usr/local/Maple2021/bin/maple <=== added

I compiled and installed maplev-mode. I had to touch doc/version.texi because the file did not exist. But, otherwise, I saw no errors.

I added lines to my emacs init.el as per the README.md.

maplev-mode seems to load when I edit a .mpl file.

However, mint is not defined. Where should I change to define the location of mint?

/usr/local/Maple2021/bin/mint

Tom Dean

In this example, i have a top module A. Inside it, I have module named **my_RECORD** (which happened to be option object) that I want to return back to caller when they call a proc.

Maple allows me to declare the proc to return **my_RECORD**. No problem., But when making a local variable inside the proc and using **o::my_RECORD** it complains that my_RECORD does not exist.

The solution is to change **o::my_RECORD **to **o::A:-my_RECORD**

My question why it did not complain the same way on the return value on the proc? for me, they are both semantically the same. One says the proc returns this type, and the other says the local variable is this type. So why had to do **A:-my_RECORD **on one but not the other?

Here is an example. Maple 2021.2 on windows 10.

Download A_no_lib.mw