用递归法,求sin的值(或cos)。tag:递归,二分
来源:互联网 发布:武汉育才行知小学英文 编辑:程序博客网 时间:2024/05/16 05:35
这个方法,可以用来手工计算sin值,当然,这里介绍的是用来编程的。
计算sin的值,普通点呢,直接用math函数(相当于直接用计算器)。文艺点呢,一般也会用泰勒公式。下面这个就有点……
怎么个递归法。这个要怎么做呢。比如说,我现在要求65度的sin值。
sin值是直角边除以斜边。需要知道的就是y值和斜边长度。好,我们把斜边的长度值固定为10000,做个圆。
0度角我们定义为点a{10000,0},90度的为b{0,10000}。注意,这是度数,同时可以表示两条直线。他们的夹角是90度,那么角平分线是45度。角平分线与圆的交点(定义为c),就可以表示角平分线这一条直线。c怎么求呢。注意,ab都在圆上,那么ab连线的中点,与原点的连线,就是角平分线(因为a和b一样长,几何原理不多解释)。ab连线的中点的坐标,就是{5000,5000}(这个不用解释吧……{(x1+x2)/2,(y1+y2)/2})。好,勾股定理可以求出这个中点与原点连线的长度。5000*5000+5000*5000然后开根号(正常人都知道这里只要5000乘个根号二……),约等于7000吧(计算机算的肯定准确点了(用double型))。我们知道圆的半径是10000。那么点c的横竖坐标,相当于中点坐标按比例放大,然后与圆的交点即为c。这个比例就是长度/半径,在这里即是7000/10000。点c的坐标就是(5000*10000/7000,5000*10000/7000),约等于{7000,7000}。这里就不精确了,只讲道理。
好,65度比45度大,说明65度在c和b之间的夹角。变c为a,求新的a2b2的角平分线。新的角平分线与x轴的夹角就是新角平分线的度数,为45+45/2≈67。
65比67小了,说明在新的a2c2之间,变c2为b,求新的a3b3的角平分线(67-45/2/2≈56度)。
剩下的不解释了,这个角平分线可以无限逼近65度。到某个精度范围后,角平分线的y坐标除以10000(斜边长)就是65度的sin值了。
cos(x/10000)、大角度的sin(用180度减一下,再求),都可以这么逼近
算法是递归,思想类似于二分查找法
- 用递归法,求sin的值(或cos)。tag:递归,二分
- 求一个角度的sin,cos值的demo
- 输出sin,cos的值
- 泰勒法计算sin和cos值
- C语言实现cordic算法求sin和cos值
- 递归求两个数组的中位数(或下中位数)
- 我的二分查找法(递归)
- 递归的二分查找法
- sin和cos的爱恋
- sin与cos的求法
- cos和sin的使用
- 用递归法求n的阶乘
- 用sin 和cos 的泰勒展开式编程序,求出sin( π/2)、sin(56°)、cos(87°)、cos( π/3)
- 写一个用矩形法求定积分的通用函数,分别求:sin(x),cos(x),e^x
- C语言中cos(x)或sin(x),x输入的是弧度,怎么输入角度
- 用递归法求N阶勒让德多项式的值
- 递归求多项式的值
- 第十二周 输出sin与cos的值(借鉴贺老师的函数)
- windows定时任务
- 第五次参加计算机技术与软件高级考试有感
- 学习本该美妙
- win7 64bit操作系统下的IE居然不能看youku视频
- android2.2缩略图类ThumbnailUtils
- 用递归法,求sin的值(或cos)。tag:递归,二分
- 去除缓存技术
- arcgis随记
- 模板方法模式(Template Method)
- Surface
- android 广告位的Timer定时刷新和按钮的浮动显示(3秒消失)
- 基于matlab图像分离
- Chinese_PRC_CI_AS_WS 简介
- java 简单递归问题