赞
踩
- public class Test01 {
-
- /**
- * 获取泰勒展开式的第num项
- * 通项为x的num次方除以num的阶乘
- * @param x
- * @param num
- * @return
- */
- public static double every(double x, int num) {
- double res = Math.pow(x, num) / func(num);
- return res;
- }
-
- /**
- * 获取e的x次方的值 具体值为泰勒展开式到num项
- * @param x
- * @param num
- * @return
- */
- public static double get(double x, int num) {
- double res = 0;
- for (int i = 0; i <= num; i++) {
- double every = every(x, i);
- res += every;
- }
- return res;
- }
- /**
- * 返回num的阶乘
- * @param num
- * @return
- */
- public static int func(int num) {
- int res = 1;
- for (int i = 1; i <= num; i++) {
- res *= i;
- }
- return res;
- }
-
- /**
- * 分别计算展开到0-50项的e的0.1次方的值
- * @param args
- */
- public static void main(String[] args) {
- for (int i = 0; i < 50; i++) {
- System.out.println(get(0.1, i));
- }
- }
- }
get函数为获取泰勒展开i项时候e的0.1次方
但是由于基本数据类型的限制后面的值变成了Infinity
可以改用BigDecimal类进行精确计算。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。