2016-11-05 3 views
1

Я пытаюсь вычислить значение [e^i6(theta)]^2 с использованием C. Я просто показываю несколько строк моего кода. Я добавил дополнительный файл заголовка, как предложил этот ответ (How to work with complex numbers in C?):Сложная теорема числа с использованием программирования c

#include <stdio.h> 
#include <math.h> 

float theta; 
float dist,xcoord,division; 

fprintf(fs,"%f\t%f\t%f\t%f\t%f\n", 
    dist, xcoord, division, 
    6*theta, pow(exp(I*6*theta),2)); 

Мой результат:

1.00000 

первые 3 строки моего выходного файла:

94.214905  68.130005  0.723134  4.574803  1.000000 
107.493179  -33.500000  -0.311648  11.326338  1.000000 
120.586807  52.529999  0.435620  6.720418  1.000000 

Что я не думаю, что это правильно. Что я могу включить, чтобы заставить его работать? Я согласен, что могу разбить эту формулу в cos и sin, но я ищу прямой вариант.

+0

Дайте более подробную информацию о значениях переменных. – skrtbhtngr

+0

Какова ценность 'I'? – skrtbhtngr

+0

'#include ' и использовать [материал, указанный там] (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/complex.h.html). – pmg

ответ

0

Вы должны использовать <complex.h> вместо <math.h>. I определяется только в complex.h. Если вызвать предупреждение во время компиляции

Кроме того, как уже упоминалось, использовать сложные функции:

printf("I = %f%+fi\n", crealf(I), cimagf(I)); 
z = clog(cexp(I * 6.0 * theta)); 
printf("z = %f%+fi\n", crealf(z), cimagf(z)); 

Выход:

I = 0.000000+1.000000i 
z = 0.000000-1.708382i 

Не забывайте математике LIB во время ссылки: -lm

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