2016-10-23 2 views
0

Я должен создать функцию для ArcTan без использования CMATHC++ вычисления Artctan функции для класса

Формулы CTAN (х) = х - х^3/3 + х^5/5 - х^7/7 + х^9/9 - ...

Вот что у меня есть, скажите, пожалуйста, почему ее не работает ...

#include <iostream> 
using namespace std; 


double ArcTan(double x) { 

double y = 7; 
double specialx = pow(x,y)/y; 
double first; 
double answer; 


first = x - (pow(x, 3.0)/3.0); 
answer = first + (pow(x, 5.0)/5.0); 
answer = answer - specialx; 


while (x = x) { 

    if (answer == answer - specialx) { 

     y += 2; 
     answer = answer + specialx; 
     return answer; 
    } 

    if (answer == answer + specialx) { 

     y += 2; 
     answer = answer - specialx; 
     return answer; 
} 

} 
     return answer; 

}

ответ

0

Вы уверены, пока условие цикла

в то время как (х = х)

Его не сравнение вместо того, чтобы операция присваивания.

Даже после того, как вы исправите условие в цикле while, вы все равно будете в бесконечном цикле, как если бы условия никогда не были выполнены с записью Logic.

Вы ищете решение для поиска ctan или ошибки в коде, который вы вставили?

+0

Спасибо за ответ , Id нравится, когда вы можете превратить это в правильную программу, но если вы не хотите начинать с нуля, что вы рекомендуете использовать вместо цикла while и какие условия я должен использовать для изменения знаков? – jtw97

+0

На самом деле я понимаю, что вы имеете в виду, это должно быть x == x правильно? Isnt Arctan должен быть бесконечным из того, как выглядит код? Я довольно смущен, поэтому любая помощь будет оценена ха-ха. – jtw97

0
if (answer == answer - specialx) 

и

if (answer == answer + specialx) 

никогда не будет оценивать, чтобы быть правдой.

Так, например, Допустим, ответ равен 5 и specialx равен 3, 5 не равна 5 - 3 и 5 не равно 5 + 3, а также

+0

Спасибо, что ответили, что бы вы порекомендовали использовать вместо этого для условий? – jtw97

Смежные вопросы