1 /// <summary>
2 /// 计算余弦函数值
3 /// sinx的平方+cos的平方=1
4 /// </summary>
5 /// <param name="number"></param>
6 /// <returns></returns>
7 private static double Cos(double number)
8 {
9 //误差
10 double gap = 0.00000001;
11 //每一项的值
12 double everyOne = 0;
13 //结果
14 double result = 0;
15 //将数据转化为弧度值
16 double angle = (number * 3.14) / 180;
17 //循环变量
18 int n = 1;
19 //正负标志
20 int option = 1;
21 //误差范围外循环
22 do
23 {
24 //求通用项的值
25 everyOne = Power(angle, 2 * n - 2) / (Factorial(2 * n - 2)) * option;
26 option = -option;
27 result += everyOne;
28 n++;
29 } while (everyOne >= gap);
30 return result;
31 }
32
33 /// <summary>
34 /// 计算正弦函数值
35 /// </summary>
36 /// <param name="number"></param>
37 /// <returns></returns>
38 private static double Sin(double number)
39 {
40 //误差
41 double gap = 0.00000001;
42 //每一项的值
43 double everyOne = 0;
44 //结果
45 double result = 0;
46 //将数据转化为弧度值
47 double angle = (number * 3.14) / 180;
48 //循环变量
49 int n = 1;
50 //正负标志
51 int option = 1;
52 //误差范围外循环
53 do
54 {
55 //求通用项的值
56 everyOne = Power(angle, 2 * n - 1) / (Factorial(2 * n - 1)) * option;
57 option = -option;
58 result += everyOne;
59 n++;
60 } while (everyOne>=gap);
61 return result;
62 }
63
64 /// <summary>
65 /// 求指定数字的指定次幂
66 /// </summary>
67 /// <param name="angle"></param>
68 /// <param name="p"></param>
69 /// <returns></returns>
70 private static double Power(double number, int power)
71 {
72 double result = 1;
73 if (power == 1)
74 {
75 return number;
76 }
77 else
78 {
79 for (int i = 1; i <= power; i++)
80 {
81 result = result * number;
82 }
83 }
84 return result;
85 }
86
87
88 /// <summary>
89 /// 求阶乘
90 /// </summary>
91 /// <param name="number"></param>
92 /// <returns></returns>
93 private static int Factorial(int number)
94 {
95 if (number > 16)
96 {
97 throw new Exception("超出范围");
98 }
99 int result = 1;
100 for (int i = 1; i <=number; i++)
101 {
102 result = result * i;
103 }
104 return result;
105 }