sinx/cosx的泰勒展开式与库函数的比较

1 篇文章 0 订阅

在这里插入图片描述

代码:

//#include<bits/stdc++.h>
#include <iostream> 
#include <cstdio> 
#include <fstream> 
#include <algorithm> 
#include <cmath> 
#include <deque> 
#include <vector> 
#include <queue> 
#include <string> 
#include <cstring> 
#include <map> 
#include <stack> 
#include <set> 
#define accuracy 1e-7//精度10的-7次方
#define pi 3.1415926 
using namespace std;

//求解sin and cos 
//阶乘函数 
unsigned long fac(unsigned long n){
	unsigned long i,m;
	for(i = 0,m = 1; i <= n; i++ ){
		if(i != 0)
			m = m*i;
	}
	return m;
}


double fcos(double x){
	double temp = 0.0, t = 5;//temp为cos值 
	int i = 0;
	x = fabs(x);//处理double类型的浮点数 
	while(x >= 2*pi) x = x - 2*pi;	//范围 0 ~ 2Π
	while( t >= accuracy){			//每个泰勒展开式值做精度比较 
		t = (pow(x,2*i))/fac(2*i);//pow函数x的y次方
		temp += pow(-1,i)*t;
		i++; 
	} 
	return temp;
	
}

double fsin(double x){
	double temp = 0.0,t = 5;
	int i = 1;
	x = fabs(x);
	while(x > 2*pi) x = x - 2*pi;//
	while( t >= accuracy){
		t = (pow(x,2*i-1))/fac(2*i-1);
        temp += pow(-1,i-1)*t;
		i++; 
	}
	return temp;
}
int main() {
    double r,temp1,temp2;
    printf("请输入弧度(180°= Π):\n");
    scanf("%lf",&r);//对应弧度值 
    temp1 = fcos(r);
    temp2 = fsin(r);
    printf("本地cos值:%.5lf\n",temp1);
	printf("系统cos值:%.5lf\n",cos(r));
	printf("本地sin值:%.5lf\n",temp2);
	printf("系统sin值:%.5lf\n",sin(r));
    return 0;
}
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值