写
function double mylog( double y);
当 时计算 y 的自然对数y>0
。通过对幂级数的项求和来做到这一点,
mylog( y ) = 2*( x + x^3/3 + x^5/5 + x^7/7 + x^9 /9 + … )
将各项相加至x^151
。请注意,参数 y 不是幂级数的 x。在计算幂级数之前,计算 x:
x = (y‐1)/(y+1)
编写无副作用的函数(无 I/O、无输出、无全局变量)。如果y<=0.0
那么 return 0
. (实际的 math.h 函数做得比这更好。)例如, for mylog( 3 )
,x = 2/5 = .4
mylog( 3 ) = 2*( 0.4 + 0.4^3/3 + 0.4^5/5 + 0.4^7/7 + 0.4^9/9 + … ) ≈ .8473
您的循环可以保留一个变量 xpow ,该变量建立了 x 的递增幂,因此您不需要嵌套循环。
#include <stdio.h>
#include <stdlib.h>
double mylog(double y)
{
double x = (y-1)/(y+3);
double sum = 1.0;
double xpow=x;
for(int n = 1; n <= 151; n++)
{
if(n%2!=0)
{
sum = sum + xpow/(double)n;
}
xpow = xpow * x;
}
sum *= 2;
return sum;
}
int main()
{
double num;
printf("Enter Number ");
scanf("%lf", &num);
num = mylog(num);
printf("%lf \n", num);
system("pause");
}
任何帮助将不胜感激!