麦克劳林用于函数求值
时间: 1ms 内存:128M
描述:
泰勒公式是一个用函数在某点的信息描述其附近取值的公式。如果函数足够光滑的话,在已知函数在某一点的各阶导数值的情况之下,泰勒公式可以用这些导数值做系数构建一个多项式来近似函数在这一点的邻域中的值。函数的麦克劳林展开是泰勒公式的特殊形式,即泰勒公式中“某一点”取0的情况。下面是ex的麦克劳林展开式,据此求出多组ex的值。
精度要求:最后一项大于1e-7
输入:
输入一个整数N,代表输入数据的组数,后随N行,每行一个小数,分别代表一个x
输出:
输出N行,分别代表各行x对应的ex的值。输出精确到小数点后第7位。
示例输入:
5
0
1
1.5
0.3
2.4
示例输出:
1.0000000
2.7182818
4.4816890
1.3498588
11.0231763
提示:
参考答案(内存最优[1268]):
#include <iostream>
#include<cstdio>
#include <iomanip>
using namespace std;
int main( )
{
int i, n, k;
double x, ex, item;
//freopen("input.txt","r",stdin);
cin>>n;
for(i=0; i<n; i++)
{
cin>>x;
ex=1;
item=x;
k=1;
while(item>1e-7)
{
ex+=item;
k++;
item=item*x/k;
//cout<<item<<endl;
}
cout<<setiosflags(ios::fixed)<<setprecision(7)<<ex<<endl;
}
return 0;
}
参考答案(时间最优[0]):
#include <iostream>
#include <iomanip>
using namespace std;
double POW(double x,int n)
{
double sum=1;
while(n--)
{
sum*=x;
}
return sum;
}
double jiecheng(double n)
{
if(n==1)return 1;
else return jiecheng(n-1)*n;
}
int main()
{
int T;
cin>>T;
while(T--)
{
double x;
cin>>x;
double sum=1;
int n=1;
while(1)
{
double test=POW(x,n)/jiecheng(n);
if(test<0.0000001)
{
cout<<setiosflags(ios::fixed)<<setprecision(7)<<sum<<endl;
break;
}
sum+=test;
n++;
}
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。
