计算余弦在c++与泰勒级数和近似输入

  • 本文关键字:余弦 c++ 计算 c++
  • 更新时间 :
  • 英文 :


晚上好,我试图计算余弦,但我不知道我错在哪里。即使输入的近似值非常高(即0.000001),结果也不精确并且符号错误(-0.54而不是60度角的0.5);对于30度的角度,没有结果显示,但代码仍在运行(我认为while循环没有结束)。

#include <iostream>
#include <cmath>
using namespace std;
double fact (int);
double eps;
double PI=3.141592654;
double fact (int num){
if (num==0 || num==1)
    return 1;
else
    return num*fact(num-1);
}
int main(){
double deg;
    double rad;
    double term=0.0;
    double sum=0.0;
    double cosine=0.0;
    int i=1;
    cout<<"You have chosen to calculate the cosine. Insert degrees of the   desired angle: n"; 
    cin>>deg;
    rad=(PI/180)*deg;
    cout<<"Value from the c++ library is: n"<<cos(rad);
    cout<<"nProceeding to cosine calculation, insert desired approximation here: n";
    cin>>eps;
    while ((cos(rad)-fabs(cosine))>eps){
    term=pow(rad,2*i)*((pow(-1.0,i))/fact(2*i));
    sum+=term;
    i++;
    cosine=sum;
    }
    cout<<"Value of cosine is: "<<cosine;
}

我能做些什么来纠正这些错误?

我认为你的错误在这里:

while ((cos(rad)-fabs(cosine))>eps){

可能应该是

while (fabs(cos(rad)-cosine)>eps){

但在现实中,人们使用当前和以前的近似值之间的差值来确定精度。

最新更新