专栏首页We微鲜对方向你转账60元--三角函数方法精确位的实现

对方向你转账60元--三角函数方法精确位的实现

今天接到一个小小的任务,让我用最刚强的"C语言"来实现

#include <math.h>的内置函数--->正弦函数...

  emmm,看着酬劳60,闲着没什么事,好吧,那就给你搞一把,于是接下了这个作业,就当自己复习一下C语言吧!

那个学生发了我一份作业的文档在下面,对于sin(x)的值是用泰勒级数公式来清楚的描述正弦函数,,

我就在想我解决了sin(x),那么是不是就解决了cos(x)余弦函数呢!tan(x),cot(x),sec(x)....

这一类的三角函数是不是也就解决了呢?我也会想我的三角函数能实现出来那么对应的反三角函数呢?那么一个"acrsin(x),arccos(x),arctan(x)呢?".

看到这里别慌,千万别放弃思考!!!

同样是利用我们强大的泰勒级数公式可以解决哟!

  上面的就是arcsin(x)的泰勒级数,,你是不是心里有想法了啊!!!

  接下来! 对于刚刚写的sin(x)的实现参考!->明人不说暗话,代码直接上..

  1 #define PI (float)3.1415926
  2 
  3 #define _2PI  (float)6.28318
  4 
  5 #define PI_DIV_2  (float)1.570796
  6 
  7 #include <math.h>
  8 
  9 #include <stdio.h>
 10 
 11 long factorial_iteration(int n){//定义阶乘函数 
 12 
 13     int result = 1;
 14 
 15     while(n>1){
 16 
 17         result *= n;
 18 
 19         n--;
 20 
 21     }
 22 
 23     return result;
 24 
 25 }
 26 
 27 float accuracy(float a,float x){//确定你的第一问精度问题 a表示精度x表示度数 
 28 
 29     x=(x*PI)/180;//将角度转化弧度 
 30 
 31     float singsum;
 32 
 33     for(int i=1;;i++){
 34 
 35         singsum=(pow(x,2*i-1)/factorial_iteration(2*i-1));
 36 
 37         if(singsum<0.00001){
 38 
 39             return i;//返回确定精度的第几项
 40 
 41             break;
 42 
 43         }
 44 
 45     }
 46 
 47 }
 48 
 49 float _sin(float x,double n)
 50 
 51 {
 52 
 53     int sign=1;            //符号
 54 
 55     int itemCnt=n;        //泰勒技级数展开多项式的项数
 56 
 57     int k=0;        
 58 
 59     float result=0;
 60 
 61     float tx;        //展开式中各项的x^(2k)
 62 
 63     int factorial=1;    //展开式中各项的(2k+1)!
 64 
 65     x=(x*PI)/180;//将角度转化弧度 
 66 
 67     //标准化为正值  sin(-x)=-sin(x)
 68 
 69     if(x<0)
 70 
 71     {
 72 
 73         x=-x;
 74 
 75         sign *=-1; 
 76 
 77     }
 78 
 79     //标准化x值到0~2π
 80 
 81     if(x>_2PI)
 82 
 83         x-=_2PI;
 84 
 85     //把0~2π标准到0~π
 86 
 87     if(x>PI)
 88 
 89     {
 90 
 91         x-=PI;    //sin(π+x)=-sin(x)
 92 
 93         sign*=(-1);
 94 
 95     }
 96 
 97     //把0~π标准到0~π/2  sin(π-x)=sin(x) 
 98 
 99     if(x>PI_DIV_2)
100 
101     {
102 
103         x=PI-x;
104 
105     }
106 
107 
108 
109 
110 
111     tx=x;    
112 
113     for(k=0;k<itemCnt;k++)
114 
115     {
116 
117         if(k%2==0)
118 
119         {
120 
121             result += (tx / factorial) ; 
122 
123         }
124 
125         else
126 
127         {
128 
129             result -= (tx / factorial) ;
130 
131         }
132 
133 
134 
135         tx *= (x*x);
136 
137         factorial *= (2*(k+1));
138 
139         factorial *= (2*(k+1)+1);
140 
141     }
142 
143     if(sign == 1)
144 
145         return result;
146 
147     else 
148 
149         return -result;
150 
151 }
152 
153 int main(){
154 
155     double a[6]={0.8,10,25,45,175,399};
156 
157     for(int i=0;i<6;i++){
158 
159         printf("自己定义的%d的正弦函数的值为:  ",a[i]);
160 
161         double q=accuracy(0.0001,a[i]);
162 
163         int b=a[i];
164 
165         double result=_sin(b,q);
166 
167         printf("%f\n",result);
168 
169         printf("程序里面自己定义的%d正弦函数值是:%f\n",a[i],sin(a[i]*PI/180));
170 
171     }    
172 
173 } 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • javaEE健康管理系统

    javaEE健康管理系统主要功能包括:教师登录退出、教师饮食管理、教师健康日志、体检管理等等。本系统结构如下: (1)用户模块: 实现登录功能 实现用户登...

    RunWsh
  • 手把手教你实现"短信轰炸"

    1 ,  当然需要下载python的咯--> Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到:

    RunWsh
  • JAVA_JSP电子政务网

    基本功能包括:前台管网展示、留言板、后台登陆、修改密码、网站公告、政府网站、领导信箱、表格下载、政务公开、便民电话、新闻动态、地区概况、留言管理等。

    RunWsh
  • 概率分布的转换

    前段时间有幸读到了@老师木的文章1,里面在探讨一个问题,为什么在神经网络的节点上面使用的是sigmoid函数?其中谈到一个点:

    流川疯
  • 聊聊golang的error增强

    codecraft
  • 知乎Matisse源码解析,探究高效图片选择库的秘密

    可以看到 Matisse 的可拓展性是非常强的,不仅可以自定义我们需要的主题,而且还可以按照需求来过滤出我们想要的文件,除此之外,Matisse 采用了建造者模...

    Android架构
  • 漫画趣解Linux内核

    当然,同样辛勤劳动的还有这位小老弟,cron进程。看它急得头上都冒汗了,这位老弟不断的看着手表,执行着周期性任务。

    Linux阅码场
  • 腾讯云容器网络 vpc 对比 vxlan 性能测试

    为了弄清楚这两种网络方案下, 容器网络的性能情况,笔者设计并执行了一个简单的对比测试, 对比了吞吐量和时延。

    真的志国
  • git之ssh连接

    用git的人都知道git连接有两种方式,一种是https,一种是ssh。一般都会使用https,简单。

    wade
  • 从 0 开始入门 Chrome Ext 安全(番外篇) -- ZoomEye Tools

    1.《从 0 开始入门 Chrome Ext 安全(一) -- 了解一个 Chrome Ext》 2.《从 0 开始入门 Chrome Ext 安全(二) --...

    Seebug漏洞平台

扫码关注云+社区

领取腾讯云代金券