2015-05-06 5 views
-1

Я получаю неправильное решение для этой серии: (-1/4)^(n+1)*(z-1)^nгеометрическая прогрессия в с, неправильное решение

Для |z-1|<4 должны ряды имеют тенденцию сходиться к -1/3+z

Для z=0.5 должно быть решение -2/7, но если я пытаюсь построить с с, результат 0 ...

Вот мой код:

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

int main(){ 
    double sum=0; 
    int n; 
    for(n=0;n<=100000;n++){ 
     sum+=pow((-1/4),(n+1)) * pow((0.5-1),n); 
    } 
    printf("sum= %f\n",sum); 
} 
+3

Значение '-1/4' равно нулю. – Mat

ответ

0

Проблема здесь:

sum+=pow((-1/4),(n+1)) * pow((0.5-1),n); 

-1 представляет собой целое число буквальным, и поэтому 4; следовательно, (-1/4) - -0, а не -0.25 (что, вероятно, было тем, что вы хотели использовать). Используйте литералы с плавающей точкой, такие как -1.0, если вы хотите, чтобы они были в C!

0

-1/4 приведет к 0 как его целочисленное деление, использование вместо поплавков:

 (float)-1/4 
0

1/4 относится к евклидовой деления, следовательно, 0 полученного.
Используйте sum+=pow((-1.0/4.0),(n+1)) * pow((0.5-1),n);, и вы получите хорошие результаты sum= -0.285714