📄 d5r1.cpp
字号:
#include "iostream.h"
#include "math.h"
void eulsum(double& sum, double term, int jterm, double wksp[])
{
static int nterm;
double tmp,dum;
if (jterm == 1)
{
nterm = 1;
wksp[1] = term;
sum = 0.5 * term;
}
else
{
tmp = wksp[1];
wksp[1] = term;
for (int j = 1; j<=nterm; j++)
{
dum = wksp[j + 1];
wksp[j + 1] = 0.5 * (wksp[j] + tmp);
tmp = dum;
}
if (fabs(wksp[nterm + 1]) <= fabs(wksp[nterm]))
{
sum = sum + 0.5 * wksp[nterm + 1];
nterm = nterm + 1;
}
else
{
sum = sum + wksp[nterm + 1];
}
}
}
void main()
{
//program d5r1
//driver for routine eulsum
int nval = 40;
double x,sum,xpower,term;
double wksp[40];
//evaluate ln(1+x)=x-x^2/2+x^3/3-x^4/4... for -1<x<1
cout<<endl;
cout<<"how many terms in polynomial?"<<endl;
//input mval , between 1 and 40, mval=0 to end
int mval = 20;
cout<<mval<<endl;
if ((mval <= 0) || (mval > nval))
{
return;
}
cout<<" x actual polynomial"<<endl;
for (int i = -8; i<=8; i++)
{
x = i / 10.0;
sum = 0.0;
xpower = -1.0;
cout.setf(ios::fixed|ios::right);
cout.precision(6);
for (int j = 1; j<=mval; j++)
{
xpower = -x * xpower;
term = xpower / j;
eulsum(sum, term, j, wksp);
}
cout.width(14);
cout<<x;
cout.width(14);
cout<<log(1.0 + x);
cout.width(14);
cout<<sum<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -