查表法处理sin,cos,tan函数-360到360度的值

1、把处理函数放到sincostan.h头文件中

/*********************************公式计算********************************/
/*
1.诱导公式
sin(-a)=-sin(a)
cos(-a)=cos(a)
sin(π2-a)=cos(a)
cos(π2-a)=sin(a)
sin(π2+a)=cos(a)
cos(π2+a)=-sin(a)
sin(π-a)=sin(a)
cos(π-a)=-cos(a)
sin(π+a)=-sin(a)
cos(π+a)=-cos(a)
2.两角和与差的三角函数
sin(a+b)=sin(a)cos(b)+cos(α)sin(b)
cos(a+b)=cos(a)cos(b)-sin(a)sin(b)
sin(a-b)=sin(a)cos(b)-cos(a)sin(b)
cos(a-b)=cos(a)cos(b)+sin(a)sin(b)
tan(a+b)=tan(a)+tan(b)1-tan(a)tan(b)
tan(a-b)=tan(a)-tan(b)1+tan(a)tan(b)
3.和差化积公式
sin(a)+sin(b)=2sin(a+b2)cos(a-b2)
sin(a)−sin(b)=2cos(a+b2)sin(a-b2)
cos(a)+cos(b)=2cos(a+b2)cos(a-b2)
cos(a)-cos(b)=-2sin(a+b2)sin(a-b2)
4.积化和差公式 (上面公式反过来就得到了)
sin(a)sin(b)=-12⋅[cos(a+b)-cos(a-b)]
cos(a)cos(b)=12⋅[cos(a+b)+cos(a-b)]
sin(a)cos(b)=12⋅[sin(a+b)+sin(a-b)]
5.二倍角公式
sin(2a)=2sin(a)cos(b)
cos(2a)=cos2(a)-sin2(a)=2cos2(a)-1=1-2sin2(a)
6.半角公式
sin2(a2)=1-cos(a)2
cos2(a2)=1+cos(a)2
tan(a2)=1-cos(a)sin(a)=sina1+cos(a)
7.万能公式
sin(a)=2tan(a2)1+tan2(a2)
cos(a)=1-tan2(a2)1+tan2(a2)
tan(a)=2tan(a2)1-tan2(a2) 
8.其它公式(推导出来的 ) 
a⋅sin(a)+b⋅cos(a)=a2+b2sin(a+c) 其中 tan(c)=ba
a⋅sin(a)+b⋅cos(a)=a2+b2cos(a-c) 其中 tan(c)=ab
1+sin(a)=(sin(a2)+cos(a2))2
1-sin(a)=(sin(a2)-cos(a2))2 
*/
#ifndef SINCOSTAN_H
#define SINCOSTAN_H double Sin[91]={0.0000,\
0.0174,0.0348,0.0523,0.0697,0.0871,0.1045,0.1218,0.1391,0.1564,\
0.1736,0.1908,0.2079,0.2249,0.2419,0.2588,0.2756,0.2923,0.3090,\
0.3255,0.3420,0.3583,0.3746,0.3907,0.4067,0.4226,0.4383,0.4539,\
0.4694,0.4848,0.4999,0.5150,0.5299,0.5446,0.5591,0.5735,0.5877,\
0.6018,0.6156,0.6293,0.6427,0.6560,0.6691,0.6819,0.6946,0.7071,\
0.7193,0.7313,0.7431,0.7547,0.7660,0.7771,0.7880,0.7986,0.8090,\
0.8191,0.8290,0.8386,0.8480,0.8571,0.8660,0.8746,0.8829,0.8910,\
0.8987,0.9063,0.9135,0.9205,0.9271,0.9335,0.9396,0.9455,0.9510,\
0.9563,0.9612,0.9659,0.9702,0.9743,0.9781,0.9816,0.9848,0.9876,\
0.9902,0.9925,0.9945,0.9961,0.9975,0.9986,0.9993,0.9998,1.0000,};
double Cos[91]={1.0000,\
0.9998,0.9993,0.9986,0.9975,0.9961,0.9945,0.9925,0.9902,0.9876,\
0.9848,0.9816,0.9781,0.9743,0.9702,0.9659,0.9612,0.9563,0.9510,\
0.9455,0.9396,0.9335,0.9271,0.9205,0.9135,0.9063,0.8987,0.8910,\
0.8829,0.8746,0.8660,0.8571,0.8480,0.8386,0.8290,0.8191,0.8090,\
0.7986,0.7880,0.7771,0.7660,0.7547,0.7431,0.7313,0.7193,0.7071,\
0.6946,0.6819,0.6691,0.6560,0.6427,0.6293,0.6156,0.6018,0.5877,\
0.5735,0.5591,0.5446,0.5299,0.5150,0.5000,0.4848,0.4694,0.4539,\
0.4383,0.4226,0.4067,0.3907,0.3746,0.3583,0.3420,0.3255,0.3090,\
0.2923,0.2756,0.2588,0.2419,0.2249,0.2079,0.1908,0.1736,0.1564,\
0.1391,0.1218,0.1045,0.0871,0.0697,0.0523,0.0348,0.0174,0.0000,};
double Tan[91]={0.0000,\
0.0174,0.0349,0.0524,0.0699,0.0874,0.1051,0.1227,0.1405,0.1583,\
0.1763,0.1943,0.2125,0.2308,0.2493,0.2679,0.2867,0.3057,0.3249,\
0.3443,0.3639,0.3838,0.4040,0.4244,0.4452,0.4663,0.4877,0.5095,\
0.5317,0.5543,0.5773,0.6008,0.6248,0.6494,0.6745,0.7002,0.7265,\
0.7535,0.7812,0.8097,0.8390,0.8692,0.9004,0.9325,0.9656,0.9999,\
1.0355,1.0723,1.1106,1.1503,1.1917,1.2348,1.2799,1.3270,1.3763,\
1.4281,1.4825,1.5398,1.6003,1.6642,1.7320,1.8040,1.8807,1.9626,\
2.0503,2.1445,2.2460,2.3558,2.4750,2.6050,2.7474,2.9042,3.0776,\
3.2708,3.4874,3.7320,4.0107,4.3314,4.7046,5.1445,5.6712,6.3137,\
7.1153,8.1443,9.5143,11.430,14.300,19.081,28.636,57.289,0.0000,};/*tan90无限大,设置为0*/
double sin_angle(int angle) {double ret=0.00; if ((angle>=0&&angle<=90)||(angle>=-360&&angle<=-270)){if(angle>0)ret=Sin[angle];else       ret=Sin[360+angle];return ret;} if ((angle>90&&angle<=180)||(angle>-270&&angle<=-180)){if(angle>0)ret=Sin[180-angle];else       ret=Sin[0-angle-180];return ret;}if ((angle>180&&angle<=270)||(angle>-180&&angle<=-90)){if(angle>0)ret=0-Sin[angle-180];else       ret=0-Sin[180+angle];return ret;}		if ((angle>270&&angle<= 360)||(angle>-90&&angle<=0)){if(angle>0)ret=0-Sin[360-angle];else       ret=0-Sin[0-angle];return ret;}  return 0;
}
double cos_angle(int angle) {double ret; if ((angle>=0&&angle<=90)||(angle>=-360&&angle<=-270)){if(angle>0)ret=Cos[angle];else       ret=Cos[360+angle];return ret;} if ((angle>90&&angle<=180)||(angle>-270&&angle<=-180)){if(angle>0)ret=0-Cos[180-angle];else       ret=0-Cos[0-angle-180];return ret;}if ((angle>180&&angle<=270)||(angle>-180&&angle<=-90)){if(angle>0)ret=0-Cos[angle-180];else       ret=0-Cos[180+angle];return ret;}		if ((angle>270&&angle<= 360)||(angle>-90&&angle<=0)){if(angle>0)ret=Cos[360-angle];else       ret=Cos[0-angle];return ret;}return 0;
}
double tan_angle(int angle) {double ret; if ((angle>=0&&angle<=90)||(angle>=-360&&angle<=-270)){if(angle>0)ret=Tan[angle];else       ret=Tan[360+angle];return ret;} if ((angle>90&&angle<=180)||(angle>-270&&angle<=-180)){if(angle>0)ret=0-Tan[180-angle];else       ret=0-Tan[0-angle-180];return ret;}if ((angle>180&&angle<=270)||(angle>-180&&angle<=-90)){if(angle>0)ret=Tan[angle-180];else       ret=Tan[180+angle];return ret;}		if ((angle>270&&angle<= 360)||(angle>-90&&angle<=0)){if(angle>0)ret=0-Tan[360-angle];else       ret=0-Tan[0-angle];return ret;}return ret;
}
#endif 

2、main函数调用

#include <stdio.h>
#include "sincostan.h"
int main() {int i;for(i=-360;i<361;i++)printf("sin(%d)=%f\n",i,sin_angle(i));for(i=-360;i<361;i++)printf("cos(%d)=%f\n",i,cos_angle(i));for(i=-360;i<361;i++)printf("tan(%d)=%f\n",i,tan_angle(i));return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/830522.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解决Linux CentOS 7安装了vim编辑器却vim编辑器不起作用、无任何反应

文章目录 前言一、解决vim不起作用&#xff08;卸载重新安装&#xff09;1.重新安装vim2.测试vim是否能正常使用 二、解决vim: error while loading shared libraries: /lib64/libgpm.so.2: file too short报错三、解决vim编辑器不能使用方向键和退格键问题 remove vim-common …

线上线下收银一体化,新零售POS系统引领连锁门店数字化转型-亿发

在市场竞争日益激烈的背景下&#xff0c;没有哪个商家能够永远屹立不倒。随着互联网技术的快速发展&#xff0c;传统的线下门店面临着来自电商和新零售的新型挑战。实体零售和传统电商都需要进行变革&#xff0c;都需要实现线上线下的融合。 传统零售在客户消费之后就与商家失…

Java 为什么设计成 “String” 不能用 “==” 比较值?

Java中的String是一种特殊的对象类型&#xff0c;用于表示字符串。在Java中&#xff0c;String对象的创建和比较是一个重要的话题&#xff0c;其中&#xff0c;操作符在比较String对象时有着特殊的行为。为了了解Java为什么设计成String不能用比较值&#xff0c;需要深入探讨Ja…

数据结构八:线性表之循环队列的设计

上篇博客&#xff0c;学习了栈&#xff0c;我们可以知道他也是一种线性表&#xff0c;遵从先进后出的原则&#xff0c;在本节&#xff0c;我们进一步学习另一种线性表—队列。就像饭堂里排队打饭的的队伍&#xff0c;作为一种先进先出的线性表&#xff0c;他又有哪些特别之处呢…

公网ip申请ssl仅260

现在很多网站都已经绑定域名&#xff0c;因此使用的都是域名SSL证书保护网站传输信息安全&#xff0c;而没有绑定域名只有公网IP地址的网站想要保护传输信息安全就要申请IP SSL证书。IP SSL证书也是由正规CA认证机构颁发的数字证书&#xff0c;用来保护用户的隐私以及数据安全&…

FLUKE万用表17B+的电压档最大内阻

项目中遇到一个测量兆欧级别电阻两端电压的问题&#xff0c;发现按照上图中的电路搭建出来的电路测得的电压为8.25V左右&#xff0c;按理说应为9V才对&#xff0c;后来想到万用表测量电压档不同的档位会有不同内阻&#xff0c;测量的电阻应远小于万用表电压档内阻才有效。本次测…

Creo Assembly “Save As“时,为什么关联的Drawing无法Save As

问题描述&#xff1a; Creo Assembly 进行“另存为”&#xff0c;勾选了“Copy Drawings”。但操作结果是&#xff0c;该Assembly相关联的Drawing没有被“另存为”。 原因分析&#xff1a; 查看Workspace&#xff0c;发现该Assembly a.asm相关联的Drawing为b.drw&#xff0…

帕金森患者锻炼的小妙招

亲爱的读者朋友们&#xff0c;大家好&#xff01;在这个阳光明媚的一天&#xff0c;我们要和大家分享一份特别的健康礼赞——专为帕金森患者量身定制的锻炼方案。让我们一起走进帕金森患者的世界&#xff0c;了解他们如何通过科学的锻炼方法&#xff0c;改善身体状况&#xff0…

【前端】表格合并如何实现?

简言 介绍实现表格合并的一种方法。 表格合并 表格合并操作是一个比较复杂的操作&#xff0c;它主要分为以下步骤&#xff1a; 获取选中区域选择合并显示的单元格实现合并操作。 我们就逐一实现这三步&#xff0c;最后实现一个较完整的合并操作。&#xff08;不考虑边界情…

区块链交易所开发

在当今数字化时代&#xff0c;区块链技术以其独特的去中心化、安全性和透明性&#xff0c;正在逐步改变我们的生活。其中&#xff0c;区块链交易所作为连接区块链技术与广大投资者的桥梁&#xff0c;其开发与发展备受关注。本文将从技术进步与市场需求两个维度&#xff0c;探讨…

mySQL商城项目实战 (终)(全部表)(1-88张)

本章无sql语句&#xff0c;直接放转出的sql文件。 88张表结果如图! 资源在已经与文章绑定&#xff0c; 在navicat工具中&#xff0c;执行以下步骤 在新建的数据库中右键,点击【运行sql文件】&#xff0c;运行绑定的资源&#xff0c;之后您就可以在您的navicat中看到我建好的8…

Kafka 3.x.x 入门到精通(08)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通&#xff08;08&#xff09;——对标尚硅谷Kafka教程 5. Kafka优化5.1 资源配置5.1.1 操作系统5.1.2 磁盘选择5.1.3 网络带宽5.1.4 内存配置5.1.5 CPU选择 5.2 集群容错5.2.1 副本分配策略5.2.2 故障转移方案5.2.3 数据备份与恢复 5.3 参数配置优化5.4 数…

【c++】mutable是一个关键字,用于指定一个类成员可以在一个const成员函数中被修改。

mutable是一个关键字,用于指定一个类成员可以在一个const成员函数中被修改。通常,当一个成员函数被声明为const时,这意味着这个函数不能修改它所属的对象。然而,有时候你可能需要在一个const成员函数中修改某个成员变量。这时,你就可以使用mutable关键字。webrtc的StunReq…

机器学习:深入解析SVM的核心概念(问题与解答篇)【三、核函数】

核函数 **问题一&#xff1a;为什么说是有限维就一定存在高维空间可分呢&#xff1f;**原始空间与特征空间为什么映射到高维空间可以实现可分核函数的作用 **问题二&#xff1a;最终怎么得到函数**从对偶问题到决策函数的步骤&#xff1a;结论 **问题三&#xff1a;为什么说特征…

在国内 PMP 有多少含金量?

PMP认证并不是对所有人都有价值&#xff0c;也并不是考到它必须会升值加薪&#xff0c;那可能就有人会问了&#xff0c;那我为什么还要考PMP&#xff1f;此言差矣&#xff0c;我个人项目管理行业混迹了这么多年了&#xff0c;真正对我有用的证书除了学历以外就是PMP认证了&…

Ubuntu 24.04 LTS (Noble Numbat) 正式版发布

Ubuntu 24.04 LTS (Noble Numbat) 正式版发布 Canonical 的第 10 个长期支持版本在性能工程、企业安全和开发人员体验方面树立了新标准 请访问原文链接&#xff1a;Ubuntu 24.04 LTS (Noble Numbat) 正式版发布&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。…

搭建基础镜像(centos+jdk)

搭建基础镜像&#xff08;centosjdk&#xff09; 1. 目录结构1.1 应用目录2.2 镜像目录 2. 编写Dockerfile2.1 设置工作目录2.2 解决时间同步问题&#xff08;设置时区&#xff09;2.3 核心逻辑2.4 设置环境变量 3. 构建镜像3.1 构建镜像3.2 导出镜像 1. 目录结构 1.1 应用目录…

10.MMD 室内场景导入背景视频和灯光

导入背景视频 1. 导入人物和场景 场景是Akali’s room&#xff0c;可以在墙壁上添加视频 先添加主场景 2. 修改视频文件格式 在背景里选择导入背景视频文件 需要将mp4视频格式转化为AVI格式 方法一 先将视频导入格式工厂 点击配置 将视频编码改成DivX 再开始处理 …

DockerUI安装使用

DockerUI安装使用 主机环境 [roottest01 ~]# uname -a Linux test01 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux [roottest01 ~]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (Core)安装 [roottest01 ~]# doc…

【算法基础实验】图论-UnionFind连通性检测之quick-find

Union-Find连通性检测之quick-find 理论基础 在图论和计算机科学中&#xff0c;Union-Find 或并查集是一种用于处理一组元素分成的多个不相交集合&#xff08;即连通分量&#xff09;的情况&#xff0c;并能快速回答这组元素中任意两个元素是否在同一集合中的问题。Union-Fin…