View Code
  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         }
posted on 2012-05-11 14:10  捣乃忒  阅读(215)  评论(0编辑  收藏  举报