Est-il possible d’ajuster ce système d’équation non linéaire

Cela fait 2 jours que je résous ce problème sans succès. disons que nous avons ce système: système

le a un nombre infini de solutions quand:

état

pour obtenir la valeur de l’angle Theta, j’utilise cette formule:

Solution

La valeur que j’obtiens est correcte, mais seulement sur certains points, car le système n’est pas soluble. et voici à quoi ça ressemble:

Anlge

la courbe rouge représente le “doit être” valeur et le bleu représente que je reçois réellement.

après avoir tracé la valeur de la sum:

état

voici ce que je reçois: Erreur comme vous pouvez le constater, sa courbe sinusale semble influer sur la valeur “doit être” de l’angle.

pour simuler cela, j’utilise ce programme:

#include  #include  int main (){ float xin =0; float yin =0; float zin =0; float A =0; float B =0; float C =0; float angle =0; float outangle =0 ; float angledeg =0; while (angledeg <=(360*3)) { angle = angledeg * M_PI/180; xin = 0.11; yin = (sin(angle) / sqrt(3)) + xin; zin = (xin - (sin(angle +(120*M_PI/180)))); A = yin - xin; B = xin - zin; C = zin - yin; outangle = atan2((A*sqrt(3)) , (B -C) ) * 180/M_PI; // 100% correct printf ("%lf \n" , outangle); angledeg++; } return 0; } 

Ma question est donc la suivante: comment utiliser la valeur de sum pour ajuster la valeur résultante de “doit être” la valeur de l’angle (la courbe rouge)

METTRE À JOUR

Je ne sais pas si cela a un sens mais cela fonctionne: Suppression de sqrt (3):

 yin = (sin(angle) / sqrt(3)) + xin; 

Je ne comprends vraiment pas, mais ça marche bien? une idée pourquoi?

Vous pouvez considérablement simplifier la situation en considérant que

 sin(t)+sin(t+120°)+sin(t+240°)=0 

ce qui signifie simplement que le point central (poids) de tout sortingangle équilatéral sur le cercle unitaire est l’origine.

Ainsi

 sin(t)/sqrt(3)+sin(t+120°)+sin(t+240°)=sin(t)*(1/sqrt(3)-1) 

Ainsi, les seules valeurs de t=theta permettant au système de pouvoir être résolu sont t=0° et t=180° .


En informatique

 y=x+sin(t)/sqrt(3); z=x-sin(t+120°) 

vous produisez comme valeur pour C

 zy = - sin(t+120°) - sin(t)/sqrt(3) 

Et ainsi

 BC = 2*sin(t+120°) + sin(t)/sqrt(3) = -sin(t) + sqrt(3)*cos(t) + sin(t)/sqrt(3) 

où, dans certaines attentes, vous n’attendez que le moyen terme, ce qui est vrai pour sin(t)=0 , encore pour t=0° ou t=180° .