我是靠谱客的博主 务实凉面,最近开发中收集的这篇文章主要介绍使用函数求余弦函数的近似值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:cos(x) = x^0 / 0! - x^2 / 2! + x^4 / 4! - x^6 / 6! + …

double funcos( double e, double x );

其中用户传入的参数为误差上限e和自变量x;函数funcos应返回用给定公式计算出来、并且满足误差要求的cos(x)的近似值。输入输出均在双精度范围内。

#include <stdio.h>
#include <math.h>

double funcos( double e, double x );

int main()
{    
    double e, x;

    scanf("%lf %lf", &e, &x);
    printf("cos(%.2f) = %.6fn", x, funcos(e, x));

    return 0;
}

double funcos( double e, double x )
{
	int i,flag=1,j=2;                     
	int s1 = 2, f = 1;
	double cos=1;

	if(1<e)                          //判断第一项是不是最后一项
		j = 0;
	while(flag == 1)                //这个while循环找出最后一项,将最后一项的指数赋值给j
	{
		double x1 = x,y1=1;
		double last;

		for(int k=1; k<j; k++)      //计算第j项的分子和分母
		{
			x1 = x1*x;
			y1 = y1*(k+1);
		}

		last = x1/y1;

		if(last<e)                 //判断是不是最后一项
		{
			flag = 0;
			continue;
		}
		else j+=2;               //如果不是最后一项j+2
	}

	if(j == 0)                       //如果第一项是最后一项,则返回1.0
		return 1.0;

	while(s1<=j)                    //计算cos(x)的值
	{
		double x1=x,y1=1;
		double last;

		for(i=1; i<s1; i++)       //计算第s1项的值,将其赋值给last
		{
			x1 = x1*x;
			y1 = y1*(i+1);
			if(f == 1)            //偶数项为负,正数项为正
				last = -x1/y1;
			else last = x1/y1;
			f = -f;
		}
		s1 += 2;
		cos += last;
	}
	return cos;
}

最后

以上就是务实凉面为你收集整理的使用函数求余弦函数的近似值的全部内容,希望文章能够帮你解决使用函数求余弦函数的近似值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(106)

评论列表共有 0 条评论

立即
投稿
返回
顶部