bonjour,
je cherche à inverser "un systeme d'equations" par iterations.
ce sont des equations sinusoidales à deux variables donc voici ma demarche:
je fais varier ces deux variables i1 et i2 de -pi à +pi. et calcule pour chauqe valeur le resultat du systeme. et je cherche donc les valeurs de i1 et i2 qui minimisent l'ecart de la sortie par rapport aux valeurs que je cible. je peux donc idetifier les i1,i2 les plus proches de la solution exacte. mon probleme est pour certaines valeurs l'algo marche mais parfois non (ex: pour [300 0 -200 0]) si qqun a une petite idée sur comment corriger cet algo ça m'aiderait. merci.
PS: les probleme ne se pose que pour q1,q2 respectivement x,y.Code:function Q=MGI_SCARA(coord) l1=200; l2=200; x=coord(1); y=coord(2); z=coord(3); psy=coord(4); % seul Q4 donne la valeur de Z donc Q4=Z q4=-z; % pour une position xy donnée deux coordonnées articulaires donne le bon % resultat. on choisira l'une des deux. beta=acos((l1^2+(sqrt(x^2+y^2))^2-l2^2)/(2*l1*sqrt(x^2+y^2))); % methode incrementale: for i1=-pi:0.01:pi for i2=-pi:0.01:pi xeval(round((pi+i1)*100+1),round((pi+i2)*100+1))=200*cos(i1)*cos(i2)-200*sin(i1)*sin(i2)+200*cos(i1); yeval(round((pi+i1)*100+1),round((pi+i2)*100+1))=200*sin(i1)*cos(i2)+200*cos(i1)*sin(i2)+200*sin(i1); end end Dx=abs(x-xeval); Dy=abs(y-yeval); m=Dx.*Dy; [a,b]=find(m==min(min(m))); q1=(a-1)/100-pi; q2=(b-1)/100-pi; q3=q1+q2-psy; Q=[q1;q2;q3;q4]; end
-----