我正在尝试使用泰勒系列和另一个系列输入x的值和n的值作为查找自然对数的术语数。问题是我的输出没有显示,只是在输入值时显示空格。请帮忙!
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(int argc, char **argv){
double x = atof(argv[1]);
double i;
double y;
double result2;
double result;
double error1;
double error2;
double sum;
int n = atof(argv[2]);
if( x <= 0){
printf("Invalid argument\n");
exit (1);
}
if(abs(x-1) <= 1 && abs(x-1) !=0){
for (i = 1; i <= 1; i++){
result -= pow((x-1), i )/ i;
}
}
else{
for(i =1; i <=n; i--){
result += 1/(i * pow((y),i));
}
}
for(i = 0; i <=n; i+=2){
y = (x-1)/(x+1);
sum += pow((y),i) * (1 / (1+i));
result2 = sum * 2 * y;
}
error1 = result - log(x);
error2 = result2 - log(x);
printf("Taylor series: ln(%lf) ~= %lf\n", x, result);
printf(" Error: %lf\n", error1);
printf("Other series: ln(%lf) ~= %lf\n", x, result2);
printf(" Error: %lf\n", error2);
return 0;
}
答案 0 :(得分:2)
您正在使用y
而未初始化它。在程序中使用它之前先将其初始化。特别是这一行
result += 1/(i * pow((y),i));
当它为空时,将尝试使用y。
还有循环
for (i = 1; i <= 1; i++)
不是那么有效,因为它只迭代一次。