/***********************************************************************
不调用库函数,求sin(x)
第二递归,利用3个公式
sin(x) = 2 * sin(x/2)*cos(x/2)----------------公式1
cos(x) = sqrt(1 - sin(x)*sin(x))----------------公式2
lim sinx = x, 当x趋向于0的时候-----------------公式3
将求sin(x)的问题,分解成求sin(x/2)的问题,然后利用公式3结束递归。
*************************************************************************/
#include<iostream>
#include<math.h>
using namespace std;
const double deviation=0.0000001;
//bug: return 2*result*sqrt(1-result*result); 返回的结果永远是正值
double mysin(double x)
{
if( x < deviation)//定定义一个无穷小
return x;
double result = mysin(x/2);
return 2*result*sqrt(1-result*result);//利用公式1和公式2
}
int main()
{
for(double i=0.0;i<6.5;i+=0.5)
cout<<" "<<sin(i);
cout<<endl<<"-----------------------mysin---------------------"<<endl;
for(double i=
不调用库函数,求sin(x)
最新推荐文章于 2022-04-19 16:41:00 发布
本文展示了一个不使用库函数的sin(x)实现方法,通过递归和三个数学公式(包括角度减半、平方根和当x趋向于0时的极限)来计算。程序用C++编写,并给出了与标准库函数的对比结果。
摘要由CSDN通过智能技术生成