首页
社区
课程
招聘
[旧帖] [求助]递归调用求sin() 0.00雪花
发表于: 2016-1-25 10:30 1909

[旧帖] [求助]递归调用求sin() 0.00雪花

2016-1-25 10:30
1909
不会又没人理我吧。
#include<iostream>
#include<math.h>
using namespace std;
double fsin(double);
double ftan(double x)
{
	return (fsin(x) / (1 - fsin(x / 2)));
}

double fsin(double x)
{
	if (x > 0.0000001)//为什么不管把0.01换成0.0001或0.0000001等等都是相同的结果,并不是近似于1
		return fsin(x / 3)*((3 - pow(ftan(x / 3), 2)) / (1 + pow(ftan(x / 3), 2)));
	else
		return (x - (pow(x, 3) / 6));
}
void main()
{
	double x = 3.14/2;
	
	cout << sin(x) << endl;
	cout << fsin(x) << endl;
}

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
大概是公式用错了?
tanx = sinx / cosx = sinx / ( 1 - 2 pow(sin(x/2), 2))

(1 - fsin(x / 2));
改成
(1 - 2 * pow(fsin(x / 2), 2));
另外,楼主if里面两次计算ftan(x/3)会浪费很多时间,不如先用变量保存ftan(x/3)的结果,然后再用迭代公式计算?
2016-2-18 00:58
0
游客
登录 | 注册 方可回帖
返回
//