三角恒等变换公式如下:
1、二倍角公式:
sin(2α)=2sinα·cosα
cos(2α)=cos^2(α)-sin^2(α)=2cos^2(α)-1=1-2sin^2(α)
tan(2α)=2tanα/[1-tan^2(α)]
2、三倍角公式:
sin3α=3sinα-4sin^3(α)
cos3α=4cos^3(α)-3cosα
3、半角公式:
sin^2(α/2)=(1-cosα)/2
cos^2(α/2)=(1+cosα)/2
tan^2(α/2)=(1-cosα)/(1+cosα)
tan(α/2)=sinα/(1+cosα)=(1-cosα)/sinα
4、万能公式:
sinα=2tan(α/2)/[1+tan^2(α/2)]
cosα=[1-tan^2(α/2)]/[1+tan^2(α/2)]
tanα=2tan(α/2)/[1-tan^2(α/2)]
5、积化和差公式:
sinα·cosβ=(1/2)[sin(α+β)+sin(α-β)]
cosα·sinβ=(1/2)[sin(α+β)-sin(α-β)]
cosα·cosβ=(1/2)[cos(α+β)+cos(α-β)]
sinα·sinβ=-(1/2)[cos(α+β)-cos(α-β)]
6、和差化积公式:
sinα+sinβ=2sin[(α+β)/2]cos[(α-β)/2]
sinα-sinβ=2cos[(α+β)/2]sin[(α-β)/2]
cosα+cosβ=2cos[(α+β)/2]cos[(α-β)/2]
cosα-cosβ=-2sin[(α+β)/2]sin[(α-β)/2]
三角函数的起源:
早期对于三角函数的研究可以追溯到古代,古希腊三角术的奠基人是公元前2世纪的喜帕恰斯,他按照古巴比伦人的做法,将圆周分为360等份(即圆周的弧度为360度,与现代的弧度制不同),对于给定的弧度,他给出了对应的弦的长度数值,这个记法和现代的正弦函数是等价的。
喜帕恰斯实际上给出了最早的三角函数数值表,然而古希腊的三角学基本是球面三角学,这与古希腊人研究的主体是天文学有关,梅涅劳斯在他的著作《球面学》中使用了正弦来描述球面的梅涅劳斯定理。
古希腊三角学与其天文学的应用在埃及的托勒密时代达到了高峰,托勒密在《数学汇编》(Syntaxis Mathematica)中计算了36度角和72度角的正弦值,还给出了计算和角公式和半角公式的方法,托勒密还给出了所有0到180度的所有整数和半整数弧度对应的正弦值。
正弦函数y=asin(ωx+φ)+b
各常数值对函数图像的影响:
φ:决定波形与x轴位置关系或横向移动距离(左加右减)
ω:决定周期(最小正周期t=2π/∣ω∣)
a:决定峰值(即纵向拉伸压缩的倍数)
b:表示波形在y轴的位置关系或纵向移动距离(上加下减)
作图方法运用“五点法”作图
“五点作图法”即取当x分别取0,π/2,π,3π/2,2π时y的值。
求出正弦函数的方法:先找出最高点和最低点的纵坐标相减,除以2,求出a
再由(最高点纵坐标+最低点纵坐标)/2求出b
再根据图像求出周期t(周期的算法有多种,例如最高点横坐标减去最低点横坐标的差的绝对值2)则ω的绝对值=2π/t
最后,图中应该有某个点标有坐标,再将坐标带入函数中,求出φ(一般情况下,φ都有范围。)
这样就可以算出正弦函数
以经验看来你是要做单片机方面波形输出,DAC输出,或者做模拟示波器什么的。
有两种办法:
一是查表法,优点是计算量少,占用RAM少,算法简单,缺点是占用储存内存较多,参数比较固定。
查表法的基本思路就是,通过把sin函数进行采样,得到的值记录成一个表,将表以数组的形式放在程序中,通过循环读取数组的值达到查表的目的。
二是计算值法,优缺点跟查表法恰好相反。
计算值法的基本思路是通过特定算法,将特定时间所需的特定值计算出来。
这里给你提供一个计算值法的核心代码,作为指导建议,根据实际情况修调。
double SinWave(double scale,int cycle_time)
{
int a;
double PI = 31416;
int resolution_ratio = 100;//分辨率,描述采样量,越高的分辨率计算越多
for(a=0;a<resolution_ratio;a++)
{
DAC_OUT(scale sin(2PIa/resolution_ratio));
delay(cycle_time/resolution_ratio);
}
}
void delay(int us)
{
//
}
void DAC_OUT(int data)
{
//
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)