求用C++语言编写y=sinx,用泰勒公式

来源:百度知道 编辑:UC知道 时间:2024/05/27 13:07:10
这是我的

#include <iostream>
# include <cmath>
using namespace std;
double potenz(double n,unsigned int x);
double fakult(unsigned int n);
double iteration(double x);
double ungerade(unsigned int n);
void eingabe(double &x);
——————————————————————————————————
#include "Deklaration.h"
double potenz(double x,unsigned int n)
{
double pot=1;
for(unsigned int i=1;i<=n;i=i++)
pot=pot*x*x;
return pot;
}
double fakult(unsigned int n)
{
double fak=1;
for(unsigned int i=1;i<=2*n+1;i=i+1)
fak=fak*i;
return fak;
}
double ungerade(unsigned int n)
{
double ung=1;
for(unsigned int i=1;i<=n;i=i+2)
ung=-1*ung;
return ung;
}
double iteration(double x)
{
double s=0;
unsigned int i=0;
while (fabs(potenz(x,i)/fakult(i))>1e-8)
{
s=s+potenz(x,i)/fakult(i)*

// 原函数 return x 的n次方
// 改成
// return x的2n+1次方
double potenz(double x,unsigned int n)
{
double pot=1.0;
for(unsigned int i=1;i<=(2*n+1);i++)
pot *=x;
return pot;
}

// 阶乘 (2n+1)!
double fakult(unsigned int n)
{
double fak=1.0;
for(unsigned int i=1;i <= (2*n+1);i++)
fak *= i;
return fak;
}

// 决定某项的符号
// 偶数项为正
// sin(x) = x - x^3/3! + x^5/5! ...
// 其中x单独计算,所以序列为
// -x^3/3! + x^5/5! ...
double ungerade(unsigned int n)
{
if(n%2)
return (-1.0);
return (1.0);
}
//求各项和
double iteration(double x)
{
//第一项
double s(x);
unsigned int i=1;
while (fabs(potenz(x,i)/fakult(i))>1e-8)
{
s += (potenz(x,i) * ungerade(i) / fakult(i) );
i++;
}
return s;
}

貌似你的写得很复杂……我最近自己写了个,比较简单,可以参考一下

#include <iostream>
#include