计算级数:1+x-x^2/2!+x^3/3!-......(-1)^n+1*x^n/n! ,要求输出精度为10^-8

amdcpu001 2009-05-05 08:53:47
//参考别人的code
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main()
{
double x,sum1=1.0,sum2=-1.0,sum=1.0;
double sum3=1.0,sum4=1.0;
cout <<"Please input x:\n";
cin>> x;
for(int n=1;abs(sum1)>1e-8;n++)
{
sum2*=-1.0;
sum3*=x;
sum4*=n; //sun4为什么是*=n呢!!!题目是分母是2然后逐渐加一啊,sum4+=n
//要是sum4*=n 那么分母运行第3次的就成了6 中间的x^3/3 x^4/4x^5/5就没计算到啊
sum1=sum2*sum3/sum4;
sum+=sum1;
}
cout <<"sum= " <<setprecision(9) <<sum1 <<endl;
return 0;
}


还有 这个1+x-x^2/2!+x^3/3!
分母后面加!是什么意思 !书上说是去反,那是不是说1+x-x^2/2-x^3/3!-x^4/4这样的意思呢?
...全文
1706 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pathuang68 2009-05-07
  • 打赏
  • 举报
回复
高等数学里面的级数。在这里不能说“!”是“非”,它表示阶乘的意思。

楼主要的程序如下(未考虑代码优化,但可以工作):

#include <iostream>
using namespace std;

double sign(int n) // (-1)的n + 1次方
{
if(n%2 == 0)
return (double)-1.0;
else
return (double)1.0;
}

long factorial(long n) //计算n的阶乘
{
long result = 1; // 先将结果设定为1,因为1! = 1,
if(n > 1) // 如果n > 1
{
result = factorial(n - 1) * n; // 比如3的阶乘 = factorial(2) * 3
}
else // 否则 n = 1
{
result = 1 * result; // 由于factorial(1) = factorial(0) * 1,其中
} // factorial(0)在此程序中未被定义,因此可视为递归的
return result; // 结束条件,并将factorial(0)设置成了1
}

double power(double x, int n) // 计算x的n次方
{
double y = (double)1.0;
for(int i = 0; i < n; i++)
y = y * x;
return y;
}

double calculateSeries(int n, double x) // 计算级数1+x-x^2/2!+x^3/3!-...(-1)^(n+1) * x^n/n!
{
double result = (double)1.0;
for(int i = 1; i <= n; i++)
{
result = result + (double)(sign(i) * power(x, i) / factorial(i));
}

return result;
}

int main(void)
{
double error = 100.0;
double x = (double)1.0; // 假定x = 1.0
int i = 1;
do
{
i++;
error = calculateSeries(i, x) - calculateSeries(i - 1, x);
error = (error > 0) ? (error) : (0 - error);
}
while(error > 0.00001); // 如果误差大于0.00001,可在此设定误差
cout << i << endl;
cout << calculateSeries(i, x) << endl;
return 0;
}
qqwx_1986 2009-05-05
  • 打赏
  • 举报
回复
典型的计算机二级题目
  • 打赏
  • 举报
回复
人家一般是推导出数学公式,然后再写的代码。

今天水群里,一堆人讨论了N久。
liliangbao 2009-05-05
  • 打赏
  • 举报
回复
帮顶!
barbara2008 2009-05-05
  • 打赏
  • 举报
回复
阶乘

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧