三角函数快速算法
- 格式:docx
- 大小:14.45 KB
- 文档页数:5
三角函数的泰勒展开式泰勒展开式是将一个函数在其中一点附近用多项式近似表示的方法。
对于三角函数来说,它们也可以用泰勒展开式来表示。
首先,我们从最基本的三角函数开始,即正弦函数sin(x)和余弦函数cos(x)。
它们的常用的泰勒展开式如下:对于正弦函数sin(x),其泰勒展开式为:sin(x) = x - (x^3)/3! + (x^5)/5! - (x^7)/7! + ...对于余弦函数cos(x),其泰勒展开式为:cos(x) = 1 - (x^2)/2! + (x^4)/4! - (x^6)/6! + ...这两个展开式可以无限地继续下去,每一项都是x的幂次是奇数时的负倒数阶乘乘上x的幂次是该奇数的项。
我们可以通过增加展开式的项数来获得更高精度的近似。
此外,正切函数tan(x)也可以用泰勒展开式来表示。
对于tan(x),其泰勒展开式为:tan(x) = x + (x^3)/3 + (2*x^5)/15 + (17*x^7)/315 + ...这里,tan(x)的泰勒展开式的每一项的系数是Fibonacci数列(1, 1, 2, 5, 14, 42, ...)的一部分。
同样地,我们可以通过增加展开式的项数来获得更高精度的近似。
此外,其他的三角函数如sec(x)、csc(x)、cot(x)等也都可以用泰勒展开式来表示。
它们分别对应cos(x)的倒数、sin(x)的倒数、tan(x)的倒数。
需要注意的是,泰勒展开式只在展开点附近有效,越远离展开点,近似程度越低。
因此,在实际计算中,我们需要根据具体的问题来确定展开点和展开式的项数,以获得所需的精度。
此外,值得一提的是,泰勒展开式是一种数学工具,可以用于近似计算三角函数的值。
但在计算机中,通常会使用一些更高效的算法来计算三角函数,如Cordic算法、查表法等。
这些方法能够在保证较高精度的同时,提高计算速度。
总之,泰勒展开式是一种用多项式来近似表示三角函数的方法。
如何求周长最大值三角函数
三角函数求周长最大值是数学中一个相对比较重要的问题。
由于三角函数的周长有无限多的可能,这个问题不容易解决。
下面是它的几种解决方法:
一、找出三角函数的最大周长。
1、由三角函数的表达式可知,其极值点有三种形式,一是极大值,二是极小值,三是局部极小值;
2、在三角函数极值点上取函数值,按照正切正弦定理,求出其正切正弦值;
3、比较正切正弦值的大小,得出三角函数的最大周长。
二、使用牛顿-拉夫逊迭代法来计算三角函数的最大周长。
1、构造牛顿-拉夫逊迭代式来计算极值点;
2、根据极值点计算对应的函数值;
3、计算函数的正切正弦值,比较正切正弦值的大小,得出最大周长;
三、使用梯度下降法来计算三角函数的最大周长。
1、构造梯度下降法来计算极值点;
2、根据极值点计算函数值;
3、计算函数的正切正弦值,比较正切正弦值的大小,得出最大周长;
四、使用精确算法来计算三角函数的最大周长。
1、构造精确算法来计算极值点;
2、根据极值点计算函数值;
3、计算函数的正切正弦值,比较正切正弦值的大小,得出最大周长;
以上这几种方法都可以帮助我们求出三角函数的最大周长,当然不同方法的效果也会有所不同。
三角函数最优拟合三角函数是数学中的一类基本函数,包括正弦函数、余弦函数和正切函数等。
三角函数最优拟合是指通过拟合方法,将已知的数据点与三角函数模型进行匹配,进而找到最符合数据的三角函数曲线。
一、线性最小二乘法线性最小二乘法是最常见和最基础的拟合方法。
它主要用于拟合简单的线性模型。
对于三角函数最优拟合,可以将其转化为线性最小二乘问题。
具体步骤如下:1. 建立三角函数最优拟合的数学模型,如 y = a*sin(b*x+c) + d。
2.根据给定的数据点(x,y),将模型中的未知参数a、b、c、d视为待求解的变量。
3. 将模型代入数据点,得到误差函数 E = Σ(y - (a*sin(b*x+c) +d))^24.对误差函数求偏导数,得到关于a、b、c、d的连立方程组。
5.解得方程组的参数值,即得到最优拟合的三角函数曲线。
线性最小二乘法适用于数据点分布较为均匀、模型比较简单的情况。
它在实际应用中广泛用于信号处理、回归分析和图像处理等领域。
二、非线性最小二乘法非线性最小二乘法是对线性最小二乘法的扩展,用于拟合复杂的非线性模型。
对于三角函数最优拟合,提供更大的拟合灵活性。
具体步骤如下:1. 建立三角函数最优拟合的数学模型,如 y = a*sin(b*x+c) + d。
2.根据给定的数据点(x,y),将模型中的未知参数a、b、c、d视为待求解的变量。
3. 将模型代入数据点,得到误差函数 E = Σ(y - (a*sin(b*x+c) +d))^24.对误差函数求对未知参数的偏导数,得到关于a、b、c、d的连立方程组。
5. 利用数值优化算法,如 Levenberg-Marquardt 算法等,求解非线性方程组,找到最优拟合的参数值。
非线性最小二乘法适用于数据点分布不均匀、模型比较复杂的情况。
它在实际应用中常用于信号处理、金融建模和生物医学等领域。
三、最小二乘谱估计法最小二乘谱估计法是一种基于频域的拟合方法,广泛应用于信号分析与处理,如声音处理、图像处理和通信等领域。
三角函数诱导公式全集三角函数诱导公式一:任意角α与-α的三角函数值之间的关系:sin(-α)=-sinαcos(-α)=cosαtan(-α)=-tanαcot(-α)=-cotα三角函数诱导公式二:设α为任意角,π+α的三角函数值与α的三角函数值之间的关系:sin(π+α)=-sinαcos(π+α)=-cosαtan(π+α)=tanαcot(π+α)=cotα三角函数诱导公式三:利用公式二和公式三可以得到π-α与α的三角函数值之间的关系:sin(π-α)=sinαcos(π-α)=-cosαtan(π-α)=-tanαcot(π-α)=-cotα三角函数诱导公式四:设α为任意角,终边相同的角的同一三角函数的值相等:sin(2kπ+α)=sinα(k∈Z)cos(2kπ+α)=cosα(k∈Z)tan(2kπ+α)=tanα(k∈Z)cot(2kπ+α)=cotα(k∈Z)三角函数诱导公式五:利用公式一和公式三可以得到2π-α与α的三角函数值之间的关系:sin(2π-α)=-sinαcos(2π-α)=cosαtan(2π-α)=-tanαcot(2π-α)=-cotα三角函数诱导公式六:π/2±α及3π/2±α与α的三角函数值之间的关系:sin(π/2+α)=cosαcos(π/2+α)=-sinαtan(π/2+α)=-cotαcot(π/2+α)=-tanαsin(π/2-α)=cosαcos(π/2-α)=sinαtan(π/2-α)=cotαcot(π/2-α)=tanαsin(3π/2+α)=-cosαcos(3π/2+α)=sinαtan(3π/2+α)=-cotαcot(3π/2+α)=-tanαsin(3π/2-α)=-cosαcos(3π/2-α)=-sinαtan(3π/2-α)=cotαcot(3π/2-α)=tanα(以上k∈Z)注意:在做题时,将a看成锐角来做会比较好做。
补角公式三角函数三角函数是数学中一类非常重要及基础的函数,它们可以帮助我们来描述和计算任意角度的特性。
其中,补角公式三角函数是求解特殊三角函数值的重要工具,这些函数可以把任意角度(除了90度)补角到90度。
本文将分别阐述正弦余弦正切补角的算法原理,并以实例来验证所用的补角公式的正确性。
正弦余弦正切补角公式正弦补角公式:正弦补角公式可以把任意角度的正弦值转换为90度的正弦值。
正弦补角公式如下:sin(α) = sin(90° +)其中α为任意角度,β为α减去90°的差值。
余弦补角公式:余弦补角公式可以把任意角度的余弦值转换为90度的余弦值。
余弦补角公式如下:cos(α) = -cos(90° +)其中α为任意角度,β为α减去90°的差值。
正切补角公式:正切补角公式可以把任意角度的正切值转换为90度的正切值。
正切补角公式如下:tan(α) = -tan(90° +)其中α为任意角度,β为α减去90°的差值。
补角公式的实例应用下面我们通过一个实例来检验我们所使用的补角公式的正确性。
假定α=120°,那么β=(120°-90°)=30°,那么根据正弦补角公式,可以得出:sin(120°)=sin(90°+30°)=sin(90°)cos(30°)+cos(90°)sin(30°)=1(1/2)+0(√3/2)=1/2;根据余弦补角公式,可以得出:cos(120°)=-cos(90°+30°)=-cos(90°)cos(30°)-sin(90°)sin(30°)=-1(1/2)-0(√3/2)=-1/2;根据正切补角公式,可以得出:tan(120°)=-tan(90°+30°)=-tan(90°)cot(30°)-cot(90°)tan(30°)=-∞(√3)-1/∞(1/√3)=-∞;以上例子可以看出,当α=120°,那么sin(120°)=1/2,cos(120°)=-1/2,tan(120°)=-∞。
cordic算法求角度的verilog实现1. 引言1.1 概述本篇文章旨在探讨并介绍Cordic算法在Verilog中的实现方式。
Cordic算法是一种用于计算三角函数和超越函数的快速算法,它具备较高的精度和计算效率,被广泛应用于数字信号处理、通信系统等领域。
1.2 文章结构文章将按照以下顺序进行介绍:首先,对Cordic算法进行概述,包括原理介绍、应用领域以及优势与局限性。
接着,在第三部分中详细解释了Verilog实现Cordic算法的设计思路和步骤。
随后,在第四部分中对该设计进行功能验证和性能评估,探究其计算准确性和速度。
最后,在第五部分对结果进行总结和讨论,并提出改进之处和未来发展方向建议。
1.3 目的本文主要目的有两个方面:一方面是介绍Cordic算法作为一种高效计算角度的方法,对其原理进行深入剖析并说明其应用范围与局限性;另一方面是通过使用Verilog语言实现Cordic算法,展示其在硬件电路设计中的具体应用,并评估其功能和性能。
通过本文的介绍,读者可以了解Cordic算法的基本原理及其在Verilog中的实现方式,同时对其优势与限制有更深入的认识。
此外,读者也可以通过作者对功能验证和性能评估结果的分析,对该算法在实际应用中的表现有更清晰的认识。
最后,读者可以从结论与展望部分中获得未来改进该算法以及相关硬件电路设计发展方向的建议。
2. Cordic算法概述:2.1 原理介绍:Cordic算法,全称为Coordinate Rotation Digital Computer算法,是一种用于计算各种三角函数(如正弦、余弦、正切)的迭代近似方法。
该算法基于旋转操作,通过一系列迭代步骤逐渐逼近所需的角度值。
Cordic算法最初由Volder在1959年提出,并被广泛应用于计算机领域中需要高效计算三角函数的场景。
其核心思想是将复杂的三角运算转化为一系列简单的位移、加减和比较等基本操作,从而实现了高速且低资源消耗的计算。
cordic atan 查表法
CORDIC(Coordinate Rotation Digital Computer)算法是一种用于计算三角函数、双曲函数、指数和对数等复杂数学运算的高效算法。
其中,计算正切值(atan)是CORDIC算法的一个应用。
CORDIC算法使用迭代的方式逐步逼近所需的函数值,而不是直接计算。
在计算正切值时,CORDIC算法通过一系列的加法、减法、移位和乘法操作,逐步缩小误差范围,最终得到精确的结果。
查表法是一种预先计算并存储一系列数值,以便在需要时快速查找的方法。
在CORDIC算法中,可以使用查表法来加速计算过程。
通过预先计算一系列可能的输入对应的函数值,并将这些值存储在表中,当需要计算函数值时,只需查找表中的值即可。
在计算正切值时,CORDIC算法结合查表法可以进一步减少迭代次数,提高计算效率。
通过将预先计算好的正切值存储在表中,算法可以直接查找所需的函数值,而不需要通过迭代逐步逼近。
总的来说,CORDIC算法和查表法的结合可以在计算正切值时实现高效的数值计算。
通过迭代和查表两种方法的结合,可以大大减少计算时间和复杂度,提高计算精度和效率。
三角函数求导公式推导三角函数是高等数学中的重要内容,涉及到多个方面的知识和技能。
其中,求导是三角函数研究中的基本操作,也是其应用中必不可少的一环。
本文将从定义入手,逐步推导三角函数的求导公式,让读者深入理解其中的原理,掌握实用技能。
一、概述三角函数包括正弦函数、余弦函数、正切函数等,其定义如下:正弦函数:y=sin x余弦函数:y=cos x正切函数:y=tan x其中,x为自变量,y为函数值。
三角函数的定义域均为实数集R,值域均为区间[-1,1]。
二、求导基础知识在推导三角函数的求导公式之前,我们需要掌握一些基础知识。
1.导数的定义函数f(x)在点x0处的导数定义为:f'(x0)=lim(h→0)[f(x0+h)-f(x0)]/h即当自变量x在x0处取一个很小的变化h时,函数f(x)在该点的变化趋势,即切线斜率。
2.求导的规律①常数函数导数为0:(c)'=0②幂函数求导:(x^n)'=n*x^(n-1)③指数函数求导:(e^x)'=e^x④对数函数求导:(lnx)'=1/x(以下简称公式1、公式2、……)三、三角函数的求导公式1.正弦函数的求导公式根据导数的定义,我们有:sin'(x0)=lim(h→0)[sin(x0+h)-sin(x0)]/h=lim(h→0)[sinx0*cosh+cosx0*sinh-sinx0]/h=sin(x0)*lim(h→0)[cos(h)-1]/h+cos(x0)*lim(h→0)sinh/h=cos(x0)综上可得:(sin x)'=cos x2.余弦函数的求导公式同样,根据导数的定义,我们有:cos'(x0)=lim(h→0)[cos(x0+h)-cos(x0)]/h=lim(h→0)[cosx0*cosh-sinx0*sinh-cosx0]/h=-sin(x0)*lim(h→0)sinh/h+cos(x0)*lim(h→0)[cos(h)-1]/h=-sin(x0)综上可得:(cos x)'=-sin x3.正切函数的求导公式对于正切函数,我们利用求导的规律,将其转化为两个三角函数的比值,即:tan x=sin x/cos x因此有:(tan x)'=(sin x/cos x)'=sin'x/cos x-sin x/cos^2x*cos'x=cos x/cos^2x-sin^2x/cos^2x=1/cos^2x综上可得:(tan x)'=sec^2x四、结论与应用通过以上推导过程,我们得出了三角函数的求导公式:(sin x)'=cos x(cos x)'=-sin x(tan x)'=sec^2x这些公式是三角函数求导中的基础,应用广泛。
三角函数诱导公式及推导过程
**定义三角函数诱导公式**
三角函数诱导公式指的是将一个三角函数的值求出来给另一个函数,而另一个函数的运算结果又可以传给另一个三角函数,并进行计算的一系列算法。
**推导过程**
三角函数的推导过程可以使用三角函数的变换关系,即:
1. 对任意三角函数y=f(x),有y=f(x+2πk),k∈Z;
2. 存在tan(θ/2),sinθ/2,cosθ/2 与tanθ、sinθ、cosθ 的关系;
3. 对sinhθ和coshθ,可以用sinh2x、cosh2x 代替 sinh x、cosh x,反之亦然;
4. 对sin2x 和cos2x,也可以用sin2x/2+cos2x/2、sin2x/2-cos2x/2 代替sinx、cosx;
5. 对sin(90°-θ) 和cos(90°-θ),可以用sinθ、cosθ 代替 sin(90°-θ)、
cos(90°-θ);
以上是将一个三角函数诱导为另一个三角函数的基本公式,有了这些基本公式,可以用推导的思路,把一个三角函数诱导为另一个三角函数,并可以将这一过程反复进行,最终可以得到所求结果。
cordic算法求角度的verilog实现Cordic算法是一种用于快速计算三角函数的算法,可以通过迭代的方式求解给定的角度值。
在Verilog语言中,我们可以实现Cordic算法来计算指定角度的正弦和余弦值。
本文将详细介绍如何使用Verilog实现Cordic算法来求解角度。
首先,我们需要了解Cordic算法的原理。
Cordic算法基于旋转的思想,通过一系列乘法和移位运算来逼近给定的角度值。
具体的算法可以分为三个步骤:旋转、缩放和校正。
首先,我们需要定义一些常量和变量来实现Cordic算法。
在Verilog中,我们可以使用参数和寄存器来实现。
下面是一个简单的Verilog代码段,用于定义Cordic算法的常量和变量:```verilog`define ANGLE_WIDTH 16 // 定义角度宽度`define ITERATIONS 16 // 定义迭代次数module cordic(input wire signed [`ANGLE_WIDTH-1:0] angle, // 输入角度output wire signed [2*`ANGLE_WIDTH-1:0] sin_value, // 输出正弦值output wire signed [2*`ANGLE_WIDTH-1:0] cos_value // 输出余弦值);reg signed [2*`ANGLE_WIDTH-1:0] x; // x坐标reg signed [2*`ANGLE_WIDTH-1:0] y; // y坐标reg signed [2*`ANGLE_WIDTH-1:0] z; // 角度// 在这里实现Cordic算法endmodule```在上述代码中,我们定义了输入角度、输出正弦值和余弦值的位宽。
同时,我们定义了x、y和z三个寄存器来保存计算过程中的坐标和角度。
接下来,我们需要实现Cordic算法的主要逻辑。
首先,我们需要初始化x、y和z的值。
三角函数的级数展开与近似计算三角函数是数学中重要的函数之一,经常在各个领域的计算和分析中使用。
在实际应用中,我们常常需要对三角函数进行求值和近似计算。
级数展开是一种常用的方法,可以将三角函数表示为无限级数的形式,从而方便进行计算和近似。
一、正弦函数的级数展开与近似计算正弦函数是最常见的三角函数之一,其级数展开形式为:sin(x) = x - x^3/3! + x^5/5! - x^7/7! + ...这个级数展开被称为幂级数或泰勒级数,其中x是弧度制下的角度。
在实际计算中,我们通常只取级数展开的前几项进行计算,以保证计算结果的准确度和效率。
为了展示级数展开的近似效果,我们可以取一些特定的角度值,例如x=0.5π,计算sin(0.5π)的近似值。
根据级数展开,我们可以取级数展开的前五项进行计算:sin(0.5π) ≈ 0.5π - (0.5π)^3/3! + (0.5π)^5/5! - (0.5π)^7/7!通过计算可得,sin(0.5π) ≈ 0.5π - (0.5π)^3/3! + (0.5π)^5/5! ≈0.70710678这个结果与实际值sin(0.5π) ≈ 0.70710678非常接近,说明级数展开可以有效地进行正弦函数的近似计算。
二、余弦函数的级数展开与近似计算余弦函数也是常见的三角函数之一,其级数展开形式为:cos(x) = 1 - x^2/2! + x^4/4! - x^6/6! + ...同样地,我们可以根据级数展开进行余弦函数的近似计算。
以x=π/3为例,计算cos(π/3)的近似值。
取级数展开的前四项:cos(π/3) ≈ 1 - (π/3)^2/2! + (π/3)^4/4! - (π/3)^6/6!计算可得,cos(π/3) ≈ 1 - (π/3)^2/2! + (π/3)^4/4! ≈ 0.5这个结果与实际值cos(π/3) ≈ 0.5非常接近,说明级数展开可以有效地进行余弦函数的近似计算。
陈老师(22364047) 12:22:08大家好,现在开始我们今天中午的数学学习。
今天安排诱导公式的学习。
诱导公式的记忆有个口诀,大家也许都听过:“奇变偶不变,符号看象限”。
这里的“奇”指±π/2的奇数倍,“变”指变名,就是sina变成cosa,cosa 变sina,tana变cota这样“符号看象限”,指的是根据左边角度所在象限确定其符号,右边的±符号显然要与左边相同,如果左边负,右边就要添加负号。
从这个口诀,我们可知知道,使用诱导公式,一共要分成2步走,①判断是否要“变名”②判断是否要“变号”。
下面我们来看几个例子:sin(π/2+a),首先我们看到这是π/2的1倍,要变名!然后再判断符号(注意判断符号的时候,暂时先把a当作锐角处理)。
π/2加一个锐角,显然是第2象限,sina是一二象限为正,所以sin(π/2+a)=cosa再看sin(π+a),①π是π/2的偶数倍(2倍),所以不变名!②180°再加个锐角,第三象限了, sin在第三象限为负,左边负,右边正,这样就要给等式右边补负号,即sin(π+a)=-sina下面来看看练习题:下列各式不正确的是()A. sin(α+180°)=-sinα B.cos(-α+β)=-cos(α-β)C. sin(-α-360°)=-sinα D.cos(-α-β)=cos(α+β)选B (注意是选错误的)如果用奇偶性的知识看,y=sina,y=tana,y=cota都是奇函数; y=cosa是偶函数。
所以cos(-α+β)=cos(a-β),不会“吐”负号出来(注意360°是sin,cos的周期,可以随便加减360°的整数倍,而值不变)。
sin600°=sin(600°-720°) =sin(-120°)再利用sina是奇函数,“吐”出负号=-sin120°,接下来发动诱导公式:=-sin(180°-60°)=-sin60°=特别地,可以简单记忆:对于sina而言,有“互补化同名,不变号”的快速算法。
同角三角函数关系式锐角,那么90°+α是第二象限角,第二象限角的正弦为正,所以sin(90°+α)=cosα三角函数对称轴与对称中心y=sinx 对称轴:x=kπ+π/2(k∈z) 对称中心:(kπ,0)(k∈z) y=cosx 对称轴:x=kπ(k∈z) 对称中心:(kπ+π/2,0)(k∈z) y=tanx 对称轴:无对称中心:(kπ,0)(k∈z)两角和与差的三角函数cos(α+β)=cosα²cosβ-sinα²sinβcos(α-β)=cosα²cosβ+sinα²sinβsin(α±β)=sinα²cosβ±cosα²sinβtan(α+β)=(tanα+tanβ)/(1-tanα²tanβ)tan(α-β)=(tanα-tanβ)/(1+tanα²tanβ)和差化积公式sinα+sinβ=2sin[(α+β)/2]cos[(α-β)/2]sinα-sinβ=2cos[(α+β)/2]sin[(α-β)/2]cosα+cosβ=2cos[(α+β)/2]cos[(α-β)/2]cosα-cosβ=-2sin[(α+β)/2]sin[(α-β)/2]积化和差公式sinα²cosβ=(1/2)[sin(α+β)+sin(α-β)]cosα²sinβ=(1/2)[sin(α+β)-sin(α-β)]cosα²cosβ=(1/2)[cos(α+β)+cos(α-β)]sinα²sinβ=-(1/2)[cos(α+β)-cos(α-β)]倍角公式sin(2α)=2sinα²cosα=2/(tanα+cotα)cos(2α)=cos²α-sin²α=2cos²α-1=1-2sin²αtan(2α)=2tanα/(1-tan²α)cot(2α)=(cot²α-1)/(2cotα)sec(2α)=sec²α/(1-tan²α)csc(2α)=1/2*secα²cscα三倍角公式sin(3α) = 3sinα-4sin³α =4sinα²sin(60°+α)sin(60°-α)cos(3α) = 4cos³α-3cosα =4cosα²cos(60°+α)cos(60°-α)tan(3α) = (3tanα-tan³α)/(1-3tan²α) =tanαtan(π/3+α)tan(π/3-α)cot(3α)=(cot³α-3cotα)/(3cotα-1)n倍角公式sin(nα)=ncos^(n-1)α²sinα-C(n,3)cos^(n-3)α²sin^3α+C(n,5)cos ^(n-5)α²sin^5α-…cos(nα)=cos^nα-C(n,2)cos^(n-2)α²sin^2α+C(n,4)cos^(n-4)α²si n^4α-…半角公式sin(α/2)=±√((1-cosα)/2)cos(α/2)=±√((1+cosα)/2)tan(α/2)=±√((1-cosα)/(1+cosα))=sinα/(1+cosα)=(1-cosα)/si nαcot(α/2)=±√((1+cosα)/(1-cosα))=(1+cosα)/sinα=sinα/(1-cos α)sec(α/2)=±√((2secα/(secα+1))csc(α/2)=±√((2secα/(secα-1))辅助角公式Asinα+Bcosα=√(A²+B²)sin(α+arctan(B/A))Asinα+Bcosα=√(A²+B²)cos(α-arctan(A/B))万能公式sin(a)= (2tan(a/2))/(1+tan²(a/2))幂级数c0+c1x+c2x2+...+cnxn+...=∑cnxn (n=0..∞)c0+c1(x-a)+c2(x-a)2+...+cn(x-a)n+...=∑cn(x-a)n (n=0..∞)它们的各项都是正整数幂的幂函数, 其中c0,c1,c2,...及a都是常数, 这种级数称为幂级数.泰勒展开式泰勒展开式又叫幂级数展开法f(x)=f(a)+f'(a)/1!*(x-a)+f''(a)/2!*(x-a)2+...+f(n)(a)/n!*(x-a)n+……实用幂级数:e^x = 1+x+x^2/2!+x^3/3!+……+x^n/n!+……ln(1+x)=x-x^2/2+x^3/3-……+(-1)^(k-1)*(x^k)/k (|x|<1)sin x =x-x^3/3!+x^5/5!-……+(-1)^(k-1)*(x^(2k-1))/(2k-1)!+…….(-∞<x<∞)cos x = 1-x^2/2!+x^4/4!-……+(-1)k*(x^(2k))/(2k)!+……(-∞<x<∞)arcsin x = x + 1/2*x^3/3 + 1*3/(2*4)*x^5/5 + ……(|x|<1)arccos x = π- ( x + 1/2*x^3/3 + 1*3/(2*4)*x^5/5 + …… ) (|x|<1) arctan x = x - x^3/3 + x^5/5 -…… (x≤1)sinh x = x+x^3/3!+x^5/5!+……+(-1)^(k-1)*(x^2k-1)/(2k-1)!+…… (-∞<x<∞)cosh x =1+x^2/2!+x^4/4!+……+(-1)k*(x^2k)/(2k)!+……(-∞<x<∞) arcsinh x = x - 1/2*x^3/3 + 1*3/(2*4)*x^5/5 - …… (|x|<1)arctanh x = x + x^3/3 + x^5/5 + ……(|x|<1)在解初等三角函数时,只需记住公式便可轻松作答,在竞赛中,往往会用到与图像结合的方法求三角函数值、三角函数不等式、面积等等。
初中三角函数表口诀
初中三角函数表口诀如下。
三角函数是函数,象限符号坐标注。
函数图象单位圆,周期奇偶增减现。
顶点任意一函数,等于后面两根除。
将其后者视锐角,符号原来函数判。
两角和的余弦值,化为单角好求值,计算证明角先行,注意结构函数名,一加余弦想余弦,一减余弦想正弦,三角函数反函数,实质就是求角度,先求三角函数值,再判角取值范围;利用直角三角形,形象直观好换名,简单三角的方程,化为最简求解集。
学习技巧:
首先,弄清题意,看看有没有简单方法、得数保留几位小数等特别要求;其次,观察题目特点,看看几步运算,有无简便算法;再次,确定运算顺序。
在此基础上利用有关法则、定律进行计算;最后,要仔细检查,看有无错抄、漏抄、算错现象。
解题模型,第一步,观察已知与未知是否为同一个角,若相同,则利用同角的基本关系求解,若不同则进行第二步。
第二步,观察已知与未知是否为同倍角,若相同,则求两角的和差为特殊值,利用已知角表示未知角化为同角问题,进行第一步,若不同则进行第三步。
第三步,因为已知与未知不是同倍角。
所以可将低倍角平分再降次升高角的倍数,或者展开高倍角降低角的倍数,角同倍数后进行第二步。
三角函数快速算法(反正切,正余弦,开平方)2010-09-08 09:14:27| 分类:| 标签:|字号订阅#define REAL float#define TAN_MAP_RES 0.003921569 /* (smallest non-zero value in table) */#define RAD_PER_DEG 0.017453293#define TAN_MAP_SIZE 256#define MY_PPPIII 3.14159#define MY_PPPIII_HALF 1.570796float fast_atan_table[257] = {0.000000e+00, 3.921549e-03, 7.842976e-03, 1.176416e-02,1.568499e-02, 1.960533e-02,2.352507e-02, 2.744409e-02,3.136226e-02, 3.527947e-02, 3.919560e-02,4.311053e-02,4.702413e-02,5.093629e-02, 5.484690e-02, 5.875582e-02,6.266295e-02, 6.656816e-02,7.047134e-02, 7.437238e-02,7.827114e-02, 8.216752e-02, 8.606141e-02, 8.995267e-02,9.384121e-02, 9.772691e-02, 1.016096e-01, 1.054893e-01,1.093658e-01, 1.132390e-01, 1.171087e-01, 1.209750e-01,1.248376e-01, 1.286965e-01, 1.325515e-01, 1.364026e-01,1.402496e-01, 1.440924e-01, 1.479310e-01, 1.517652e-01,1.555948e-01, 1.594199e-01, 1.632403e-01, 1.670559e-01,1.708665e-01, 1.746722e-01, 1.784728e-01, 1.822681e-01,1.860582e-01, 1.898428e-01, 1.936220e-01, 1.973956e-01,2.011634e-01, 2.049255e-01, 2.086818e-01, 2.124320e-01,2.161762e-01, 2.199143e-01, 2.236461e-01, 2.273716e-01,2.310907e-01, 2.348033e-01, 2.385093e-01, 2.422086e-01,2.459012e-01, 2.495869e-01, 2.532658e-01, 2.569376e-01,2.606024e-01, 2.642600e-01, 2.679104e-01, 2.715535e-01,2.751892e-01, 2.788175e-01, 2.824383e-01, 2.860514e-01,2.896569e-01, 2.932547e-01, 2.968447e-01,3.004268e-01,3.040009e-01, 3.075671e-01, 3.111252e-01, 3.146752e-01,3.182170e-01, 3.217506e-01, 3.252758e-01, 3.287927e-01,3.323012e-01, 3.358012e-01, 3.392926e-01, 3.427755e-01,3.462497e-01, 3.497153e-01, 3.531721e-01, 3.566201e-01,3.600593e-01, 3.634896e-01, 3.669110e-01, 3.703234e-01,3.737268e-01, 3.771211e-01, 3.805064e-01, 3.838825e-01,3.872494e-01, 3.906070e-01, 3.939555e-01, 3.972946e-01,4.006244e-01, 4.039448e-01, 4.072558e-01, 4.105574e-01,4.138496e-01, 4.171322e-01, 4.204054e-01, 4.236689e-01,4.269229e-01, 4.301673e-01, 4.334021e-01, 4.366272e-01,4.398426e-01, 4.430483e-01, 4.462443e-01, 4.494306e-01,4.526070e-01, 4.557738e-01, 4.589307e-01, 4.620778e-01,4.652150e-01, 4.683424e-01, 4.714600e-01, 4.745676e-01,4.776654e-01, 4.807532e-01, 4.838312e-01,4.868992e-01,4.899573e-01, 4.930055e-01, 4.960437e-01, 4.990719e-01,5.020902e-01, 5.050985e-01, 5.080968e-01, 5.110852e-01, 5.140636e-01, 5.170320e-01, 5.199904e-01, 5.229388e-01, 5.258772e-01, 5.288056e-01, 5.317241e-01, 5.346325e-01, 5.375310e-01, 5.404195e-01, 5.432980e-01, 5.461666e-01, 5.490251e-01, 5.518738e-01, 5.547124e-01, 5.575411e-01, 5.603599e-01, 5.631687e-01, 5.659676e-01, 5.687566e-01, 5.715357e-01, 5.743048e-01, 5.770641e-01, 5.798135e-01, 5.825531e-01, 5.852828e-01, 5.880026e-01, 5.907126e-01,5.934128e-01, 5.961032e-01, 5.987839e-01,6.014547e-01,6.041158e-01, 6.067672e-01, 6.094088e-01, 6.120407e-01, 6.146630e-01, 6.172755e-01, 6.198784e-01, 6.224717e-01, 6.250554e-01, 6.276294e-01, 6.301939e-01, 6.327488e-01, 6.352942e-01, 6.378301e-01, 6.403565e-01, 6.428734e-01, 6.453808e-01, 6.478788e-01, 6.503674e-01, 6.528466e-01, 6.553165e-01, 6.577770e-01, 6.602282e-01, 6.626701e-01, 6.651027e-01, 6.675261e-01, 6.699402e-01, 6.723452e-01, 6.747409e-01, 6.771276e-01, 6.795051e-01, 6.818735e-01, 6.842328e-01, 6.865831e-01, 6.889244e-01, 6.912567e-01,6.935800e-01, 6.958943e-01, 6.981998e-01,7.004964e-01,7.027841e-01, 7.050630e-01, 7.073330e-01, 7.095943e-01, 7.118469e-01, 7.140907e-01, 7.163258e-01, 7.185523e-01, 7.207701e-01, 7.229794e-01, 7.251800e-01, 7.273721e-01, 7.295557e-01, 7.317307e-01, 7.338974e-01, 7.360555e-01, 7.382053e-01, 7.403467e-01, 7.424797e-01, 7.446045e-01, 7.467209e-01, 7.488291e-01, 7.509291e-01, 7.530208e-01, 7.551044e-01, 7.571798e-01, 7.592472e-01, 7.613064e-01, 7.633576e-01, 7.654008e-01, 7.674360e-01, 7.694633e-01, 7.714826e-01, 7.734940e-01, 7.754975e-01, 7.774932e-01, 7.794811e-01, 7.814612e-01, 7.834335e-01, 7.853983e-01, 7.853983e-01};floatmy_abs(float f){if (f >= 0.0){return f;}return -f;}REAL fast_atan2(REAL y, REAL x) {REAL x_abs, y_abs, z;REAL alpha, angle, base_angle;int index;/* don't divide by zero! */if ((y == 0.0) && (x == 0.0))angle = 0.0;else {/* normalize to +/- 45 degree range */y_abs = my_abs(y);x_abs = my_abs(x);//z = (y_abs < x_abs ? y_abs / x_abs : x_abs / y_abs);if (y_abs < x_abs)z = y_abs / x_abs;elsez = x_abs / y_abs;/* when ratio approaches the table resolution, the angle is *//* best approximated with the argument itself... */if (z < TAN_MAP_RES)base_angle = z;else {/* find index and interpolation value */alpha = z * (REAL) TAN_MAP_SIZE - .5;index = (int) alpha;alpha -= (REAL) index;/* determine base angle based on quadrant and *//* add or subtract table value from base angle based on quadrant */base_angle = fast_atan_table[index];base_angle +=(fast_atan_table[index + 1] - fast_atan_table[index]) * alpha;}if (x_abs > y_abs) { /* -45 -> 45 or 135 -> 225 */if (x >= 0.0) { /* -45 -> 45 */if (y >= 0.0)angle = base_angle; /* 0 -> 45, angle OK */elseangle = -base_angle; /* -45 -> 0, angle = -angle */} else { /* 135 -> 180 or 180 -> -135 */angle = 3.14159265358979323846;if (y >= 0.0)angle -= base_angle; /* 135 -> 180, angle = 180 - angle */elseangle = base_angle - angle; /* 180 -> -135, angle = angle - 180 */}} else { /* 45 -> 135 or -135 -> -45 */if (y >= 0.0) { /* 45 -> 135 */angle = 1.57079632679489661923;if (x >= 0.0)angle -= base_angle; /* 45 -> 90, angle = 90 - angle */elseangle += base_angle; /* 90 -> 135, angle = 90 + angle */} else { /* -135 -> -45 */angle = -1.57079632679489661923;if (x >= 0.0)angle += base_angle; /* -90 -> -45, angle = -90 + angle */ elseangle -= base_angle; /* -135 -> -90, angle = -90 - angle */ }}}#ifdef ZERO_TO_TWOPIif (angle < 0)return (angle + TWOPI);elsereturn (angle);#elsereturn (angle);#endif}floatmy_atan(float x, float y){return fast_atan2(y, x);}floatmy_pow(float a){return a*a;}float my_sqrt(float number){long i;float x, y;const float f = 1.5F;x = number * 0.5F;y = number;i = * ( long * ) &y;i = 0x5f3759df - ( i >> 1 );y = * ( float * ) &i;y = y * ( f - ( x * y * y ) );y = y * ( f - ( x * y * y ) );return number * y;}#define ONE_PI (3.14159265)#define TWO_PI (2.0 * 3.14159265)#define ANGLE_UNIT (TWO_PI/10.0)double mx_sin(double rad){double sine;if (rad < 0)sine = rad*(1.27323954 + 0.405284735 * rad); elsesine = rad * (1.27323954 - 0.405284735 * rad); if (sine < 0)sine = sine*(-0.225 * (sine + 1) + 1);elsesine = sine * (0.225 *( sine - 1) + 1);return sine;}double my_sin(double rad){char flag = 1;if (rad >= ONE_PI){rad -= ONE_PI;flag = -1;}return mx_sin(rad) * flag;}float my_cos(double rad){char flag = 1;rad += ONE_PI/2.0;if (rad >= ONE_PI){flag = -1;rad -= ONE_PI;}returnmy_sin(rad)*flag;}。