Есть ли способ настроить эту систему нелинейного уравнения

Я должен был решить эту проблему в течение последних 2 дней без успеха. скажем, у нас есть эта система: система

имеет бесконечное число решений, когда:

состояние

для получения значения угла Theta, я использую эту формулу:

решение

Значение, которое я получаю, является правильным, но только в некоторых точках, потому что система не разрешима. и вот как это выглядит:

anlge

красная кривая представляет значение «должно быть», а синий означает, что я действительно получаю.

после построения значения суммы:

состояние

вот что я получаю: ошибка так как вы можете видеть, что это синусовая кривая, которая, по-видимому, влияет на значение «должно быть» угла.

для имитации этого я использовал эту программу:

#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; } 

Итак, мой ВОПРОС: как я мог использовать значение суммы, чтобы скорректировать приведенное значение значения «должно быть» угла (красная кривая)

ОБНОВИТЬ

Я не знаю, если это имеет смысл, но он работает: Удаление sqrt (3):

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

Я действительно не понимаю, но все нормально? любая идея почему?

Вы можете значительно упростить ситуацию, учитывая, что

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

что означает, что центральная точка (вес) любого равностороннего треугольника на единичной окружности является началом.

таким образом

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

Таким образом, единственные значения t=theta которые делают систему разрешимой, равны t=0° и t=180° .


В вычислительной технике

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

вы производите в качестве значения для C

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

и поэтому

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

где в каком-то ожидании вы ожидаете только среднего члена, что верно для sin(t)=0 , снова при t=0° или t=180° .