J'ai développé un algorithme sous Maple pour étudier le mouvement des quilles et de la boule d'une partie de Bowling.
Malheureusement, je n'arrive pas à dire à Maple ce que je veux et je reste bloqué.
En effet, dans la partie des équations, la fonction solve ne résout rien vu que les expressions ne se remplacent pas par leur valeur respective, je ne comprends pas pourquoi.
J'espère que parmi vous, certains apporteront des réponses à mon problème.
Cordialement,
Hyprium
> restart;
with(linalg):
with(LinearAlgebra):
Warning, the protected names norm and trace have been redefined and unprotected
Warning, the assigned name GramSchmidt now has a global binding
> Bowling:=proc(lambda)
local M:
v[x]:=(n,i)->v[n,i,x]:
v[y]:=(n,i)->v[n,i,y]:
p[x]:=(n,i)->p[n,i,x]:
p[y]:=(n,i)->p[n,i,y]:
v:=(n,i)->sqrt(v[x](n,i)^2+v[y](n,i)^2):
e:=(n,k,l)->:
f:=(n,k)->:
for z from 0 to 10 do
theta:=lambda*(1-z/10):
n:=0:
M:=4.5359237:
m:=1.530:
v[b0]:=20/3.6:
alpha:=3.14159265359/6:
d:=0.3040:
r:=0.0575:
R:=0.11:
p[x](0,0):=(r+R)*sin(theta):
p[y](0,0):=-(r+R)*cos(theta):
p[x](0,1):=0:
p[y](0,1):=0:
p[x](0,2):=-d*sin(alpha):
p[y](0,2):=d*cos(alpha):
p[x](0,3):=d*sin(alpha):
p[y](0,3):=d*cos(alpha):
p[x](0,4):=-2*d*sin(alpha):
p[y](0,4):=2*d*cos(alpha):
p[x](0,5):=0:
p[y](0,5):=2*d*cos(alpha):
p[x](0,6):=2*d*sin(alpha):
p[y](0,6):=2*d*cos(alpha):
p[x](0,7):=-3*d*sin(alpha):
p[y](0,7):=3*d*cos(alpha):
p[x](0,8):=-d*sin(alpha):
p[y](0,8):=3*d*cos(alpha):
p[x](0,9):=d*sin(alpha):
p[y](0,9):=3*d*cos(alpha):
p[x](0,10):=3*d*sin(alpha):
p[y](0,10):=3*d*cos(alpha):
v[x](0,0):=-sin(theta)*(4.154285046*cos(theta)-.3634438432e-16*(13065256851622140924785493990079249*cos(theta)^2-11578741724189361656109004298179249+11578741726320212017212603990079249*sin(theta)^2)^(1/2))+5.555555555*cos(theta)*sin(theta):
v[y](0,0):=cos(theta)*(4.154285046*cos(theta)-.3634438432e-16*(13065256851622140924785493990079249*cos(theta)^2-11578741724189361656109004298179249+11578741726320212017212603990079249*sin(theta)^2)^(1/2))+5.555555555*sin(theta)^2:
v[x](0,1):=-(4.15428504*cos(theta)+.1077485975e-15*(13065256851622140924785493990079249*cos(theta)^2-11578741724189361656109004298179249+11578741726320212017212603990079249*sin(theta)^2)^(1/2))*sin(theta):
v[y](0,1):=4.15428504*cos(theta)+.1077485975e-15*(13065256851622140924785493990079249*cos(theta)^2-11578741724189361656109004298179249+11578741726320212017212603990079249*sin(theta)^2)^(1/2):
v[x](0,2):=0:
v[y](0,2):=0:
v[x](0,3):=0:
v[y](0,3):=0:
v[x](0,4):=0:
v[y](0,4):=0:
v[x](0,5):=0:
v[y](0,5):=0:
v[x](0,6):=0:
v[y](0,6):=0:
v[x](0,7):=0:
v[y](0,7):=0:
v[x](0,8):=0:
v[y](0,8):=0:
v[x](0,9):=0:
v[y](0,9):=0:
v[x](0,10):=0:
v[y](0,10):=0:
for i from 1 to 9 do
for j from i+1 to 10 do
eq[i,j]:=sqrt(((-v[x](n,i)+v[x](n,j))*t+p[x](n,i)+p[x](n,j))^2+((-v[y](n,i)+v[y](n,j))*t+p[y](n,i)+p[y](n,j))^2)-2*r:
s[i,j]:=solve(eq[i,j],t):
if Im(s[i,j][1])=0 then q1[i,j]:=s[i,j][1]: q2[i,j]:=s[i,j][2]: else q1[i,j]:=0: q2[i,j]:=0: fi:
u[i,j]:=min(q1[i,j],q2[i,j]):
if u[i,j]0 then v[i,j]:=u[i,j]: else v[i,j]:=1000000: fi:
od:
od:
for i from 1 to 10 do
eq[0,i]:=sqrt(((-v[x](n,0)+v[x](n,i))*t+p[x](n,0)+p[x](n,i))^2+((-v[y](n,0)+v[y](n,i))*t+p[y](n,0)+p[y](n,i))^2)-(r+R):
s[0,i]:=solve(eq[0,i],t):
if Im(s[0,i][1])=0 then q3[0,i]:=s[0,i][1]: q4[0,i]:=s[0,i][2]: else q3[0,i]:=0: q4[0,i]:=0: fi:
w[0,i]:=min(q3[0,i],q4[0,i]):
if w[0,i]0 then x[0,i]:=w[0,i]: else x[0,i]:=1000000: fi:
od:
a:=min(seq(seq(v[i,j],j=i+1..10),i=1..9),seq(x[0,i],i=1..10)):
for i from 1 to 9 do
for j from i+1 to 10 do
if v[i,j]=a then b:=i: c:=j: fi:
od:
od:
for i from 1 to 10 do
if x[0,i]=a then b:=i: c:=0: fi:
od:
tchoc:=a:
if c0
then
for i from 1 to b-1 do
v[x](n+1,i):=v[x](n,i):
v[y](n+1,i):=v[y](n,i):
p[x](n+1,i):=p[x](n,i)+(v[x](n+1,i))*tchoc:
p[y](n+1,i):=p[y](n,i)+(v[y](n+1,i))*tchoc:
od:
for i from b+1 to c-1 do
v[x](n+1,i):=v[x](n,i):
v[y](n+1,i):=v[y](n,i):
p[x](n+1,i):=p[x](n,i)+(v[x](n+1,i))*tchoc:
p[y](n+1,i):=p[y](n,i)+(v[y](n+1,i))*tchoc:
od:
for i from c+1 to 10 do
v[x](n+1,i):=v[x](n,i):
v[y](n+1,i):=v[y](n,i):
p[x](n+1,i):=p[x](n,i)+(v[x](n+1,i))*tchoc:
p[y](n+1,i):=p[y](n,i)+(v[y](n+1,i))*tchoc:
od:
v[x](n+1,0):=v[x](n,0):
v[y](n+1,0):=v[y](n,0):
p[x](n+1,0):=p[x](n,0)+v[x](n+1,0)*tchoc:
p[y](n+1,0):=p[y](n,0)+v[y](n+1,0)*tchoc:
p[x](n+1,b):=p[x](n,b)+v[x](n,b)*tchoc:
p[y](n+1,b):=p[y](n,b)+v[y](n,b)*tchoc:
p[x](n+1,c):=p[x](n,c)+v[x](n,c)*tchoc:
p[y](n+1,c):=p[y](n,c)+v[y](n,c)*tchoc:
eq1:=v[x](n,b)+v[x](n,c)-v[x](n+1,b)-v[x](n+1,c):
eq2:=v[y](n,b)+v[y](n,c)-v[y](n+1,b)-v[y](n+1,c):
eq3:=v(n,b)^2+v(n,c)^2-v(n+1,b)^2-v(n+1,c)^2:
eq4:=DotProduct(CrossProduct(-e(n,b,c)/2,f(n,b))+CrossProduct(e(n,b,c)/2,f(n,c))-CrossProduct(-e(n,b,c)/2,f(n+1,b))-CrossProduct(e(n,b,c)/2,f(n+1,c)),):
solve({eq1,eq2,eq3,eq4},{v[x](n+1,b),v[y](n+1,b),v[x](n+1,c),v[y](n+1,c)}):
assign(%):
else
for i from 1 to b-1 do
v[x](n+1,i):=v[x](n,i):
v[y](n+1,i):=v[y](n,i):
p[x](n+1,i):=p[x](n,i)+(v[x](n+1,i))*tchoc:
p[y](n+1,i):=p[y](n,i)+(v[y](n+1,i))*tchoc:
od:
for i from b+1 to 10 do
v[x](n+1,i):=v[x](n,i):
v[y](n+1,i):=v[y](n,i):
p[x](n+1,i):=p[x](n,i)+(v[x](n+1,i))*tchoc:
p[y](n+1,i):=p[y](n,i)+(v[y](n+1,i))*tchoc:
od:
p[x](n+1,0):=p[x](n,0)+v[x](n,0)*tchoc:
p[y](n+1,0):=p[y](n,0)+v[y](n,0)*tchoc:
p[x](n+1,b):=p[x](n,b)+v[x](n,b)*tchoc:
p[y](n+1,b):=p[y](n,b)+v[y](n,b)*tchoc:
eq1:=M*v[x](n,0)+m*v[x](n,b)-M*v[x](n+1,0)-m*v[x](n+1,b):
eq2:=M*v[y](n,0)+m*v[y](n,b)-M*v[y](n+1,0)-m*v[y](n+1,b):
eq3:=M*v(n,0)^2+m*v(n,b)^2-M*v(n+1,0)^2-m*v(n+1,b)^2:
eq4:=DotProduct(M*CrossProduct(-e(n,0,b)*m/(M+m),f(n,0))+m*CrossProduct(M*(M+m)*e(n,0,b)/2,f(n,b))-M*CrossProduct(-m/(M+m)*e(n,0,b)/2,f(n+1,0))-m*CrossProduct(M*(M+m)*e(n,0,b)/2,f(n+1,b)),):
solve({eq1,eq2,eq3,eq4},{v[x](n+1,0),v[y](n+1,0),v[x](n+1,b),v[y](n+1,b)}):
assign(%):
fi:
while tchoc Bowling(3.14159265359/2);
Error, (in assign) invalid left hand side in assignment
