双阶乘n!!, n!!≠(n!)! .

5!!=5(5-2)(5-4)=5*3*1=15

计算公式为

其中x可以是正数,负数和0。但不能是负偶数。

用java实现了df()函数计算双阶乘,比如

double d= df(3.1);  //3.2367219415374735

double d= df(-3.1);  //-0.9804732962114218

公式中的gamma函数是用java调用python实现的。

d:/工业/hk/python/表达式.csv

D:/Download/cal.py

程序中只有两个本地路径,一个是java传递给python的命令,一个是python程序的地址。

Java程序为

package greenwood;import java.io.DataInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.text.ParseException;public class dff {//double factorial functionpublic static  double calc2( String stra ) throws IOException, ParseException, InterruptedException {FileWriter fileWriter5 = new FileWriter("d:/工业/hk/python/表达式.csv");//stra="hin( fx1,fx1)";//stra="jin( rj1,rj2)";stra=stra.replaceAll(",","#");fileWriter5.write( stra + "\r\n");fileWriter5.flush();String exe = "python";String command = "D:/Download/cal.py";  String[] cmdArr = new String[] {exe ,command  };Process process = Runtime.getRuntime().exec(cmdArr);InputStream is = process.getInputStream();DataInputStream dis = new DataInputStream(is);String str = dis.readLine();process.waitFor();//System.out.println(str); double df= Double.parseDouble(str.trim());    return df;}public static  double gamma( double a   ) throws IOException, ParseException, InterruptedException {String s1="sympy.gamma("+ a +")";double ds=calc2(  s1 );return ds;}public static  double df( double a   ) throws IOException, ParseException, InterruptedException {double f=0;double d1=gamma( (a+2)/2);double d2=Math.pow(2 , a/2);double d3=Math.pow(  Math.PI/2 , (-1+Math.cos(a*Math.PI))/4  );double d=d1*d2* d3;//System.out.println( d+"  "+d1+" "+d2+"  "+d3  );f=d;return f;}public static void main(String[] args) throws IOException, ParseException, InterruptedException {//double d= df(0);//1//double d= df(1); //1//double d= df(2);//2//double d= df(3);//3//double d= df(4);//8//double d= df(5);//14.99999999999999//double d= df(6); //48//double d= df(7); //104.99999999999868//double d= df(8); //384.0//double d= df(9);  //944.9999999999997//double d= df(-5);  //0.33333333333333415//double d= df(-7);  //-0.06666666666666668//double d= df(-9); //0.009523809523809521//double d= df(3.1); //3.2367219415374735double d= df(-3.1); //-0.9804732962114218System.out.println( d   );}}

Python程序为


import sympy
import math
from sympy import symbols, cancel
import csva = sympy.Symbol('a')
e = sympy.Symbol('e')
m = sympy.Symbol('m')
h = sympy.Symbol('h')
l = sympy.Symbol('l')
lp = sympy.Symbol('lp')
r = sympy.Symbol('r')
EE = sympy.Symbol('EE')
R = sympy.Symbol('R')
r1 = sympy.Symbol('r1')
r2 = sympy.Symbol('r2')
r3 = sympy.Symbol('r3')
σ = sympy.Symbol('σ')
c1 = sympy.Symbol('c1')
c2 = sympy.Symbol('c2')
c3 = sympy.Symbol('c3')μ = sympy.Symbol('μ')
v = sympy.Symbol('v')α = sympy.Symbol('α')
β = sympy.Symbol('β')x = sympy.Symbol('x')
y = sympy.Symbol('y')
z = sympy.Symbol('z')θ1= sympy.Symbol('θ1')
θ2= sympy.Symbol('θ2')
Φ1= sympy.Symbol('Φ1')
Φ2= sympy.Symbol('Φ2')θ= sympy.Symbol('θ')
Ψ= sympy.Symbol('Ψ')
Φ= sympy.Symbol('Φ')
pi=sympy.Symbol('pi')
E=sympy.Symbol('E')
I=sympy.Symbol('I')
sin=sympy.Symbol('sin')
cos=sympy.Symbol('cos')
tan=sympy.Symbol('tan')
diff=sympy.Symbol('diff')
integrate=sympy.Symbol('integrate')pi=sympy.pi
E=sympy.E
sin=sympy.sin
cos=sympy.cos
tan=sympy.tan
diff=sympy.diff
integrate=sympy.integratef = csv.reader(open('d:/工业/hk/python/表达式.csv','r'))
for i in f:f2=(i)f2[0] = f2[0].replace("#", ",")d=(eval(f2[0]))print (  round( d,16 ) )

用java计算小数的双阶乘相关推荐

  1. Java计算1到100阶乘和

    Java计算1到100阶乘和 1.定义一个 factorial类 2.定义一个测试类Cs2 1.定义一个 factorial类 import java.math.BigDecimal; public ...

  2. java 计算小数_java基础之小数计算

    项目中会经常用到小数位的计算.很多人第一感觉会想尝试使用float或者double,然而在精准计算,例如金钱计算中,使用float或者double来计算会出现意想不到后果. 如图所示:并没有得到预期的 ...

  3. java求一个数的阶乘_Java如何使用方法计算一个数字的阶乘值?

    在Java中,如何使用方法来计算一个数字的阶乘值? 这个例子显示了使用9(9)数字的因子计算方法. package com.yiibai; public class CalculatingFactor ...

  4. Java实现若干个数计算平均值并保留小数位 java计算平均值 java四舍五入保留小数

    Java实现若干个数计算平均值并保留小数位 java计算平均值 java四舍五入保留小数 一.需求 1.在项目中,要计算若干个指标的平均值,找了一圈,发现JDK中没有提供,于是乎,造一个. 2.因若干 ...

  5. 1555:计算双阶乘

    1555:计算双阶乘 Description 定义N的双阶乘: N!!=N*(N-2)*(N-4)*....i(i=1 or i=2) 比如5!!=5*3*1=15 而6!!=6*4*2=48 特别的 ...

  6. 计算超大整数的阶乘(java)

    思想 思想来自于网上,将所有的计算结果每一位存储到数组中,利用十进制,每次阶乘对数组中的每一位与目标阶乘,然后计算进位,比如:8!= 5040*8={5,0,4,0}*8={40,0,32,0}={4 ...

  7. java中求5的阶乘

    题目如上所示:java中求5的阶乘是多少? 什么事阶乘呢? 答:阶乘是基斯顿·卡曼(Christian Kramp,1760-1826)于 1808 年发明的运算符号,是数学术语. 一个正整数的阶乘( ...

  8. js计算浮点数出现小数;解决js计算小数问题;js数组相加出现小数;

    原博1 原博2 方案1和方案2都是有效的 情景: 在计算浮点数时候,出现多余小数. 例如: 1.11 + 1 = 2.1100000000000003 为什么计算小数会出现误差? 浮点数值的最高进度是 ...

  9. java中小数后加f_在 Java 中,小数默认为 ,如果要指定 类型请在小数后加 F/f 。_学小易找答案...

    [填空题]Java 语言采用双字节的 编码. [单选题]马斯洛需要层次论所提出的5种需要:生理需要.安全需要.归属需要.( ).自我实现需要 [填空题]String s= " abc &qu ...

最新文章

  1. 凭借识别人的情绪,他们做到了2000多万用户、1000多万订单
  2. python的数据类型和变量的定义及使用
  3. mysql语句中事务可靠性_MYSQL中的事务
  4. locker server启动
  5. linux lua socket编程,CentOs 安装lua,luasocket
  6. 2013蓝桥杯C++B:错误票据
  7. 微信小程序发送验证码短信SDK及文档
  8. WPF 入门教程打印控件
  9. jQuery实现button按钮提交表单
  10. web项目缺少web组件才能与vs一起运行,带razor语法的 asp.net web pages 2.0.0.1
  11. 衣带渐宽终不悔,为“指针”消得人憔悴(二)
  12. 前端进阶知识汇总(持续更新中)
  13. 申请苹果开发者公司账号和邓白氏编码全流程
  14. oracle 列转行
  15. 【jzoj4826】【小澳的葫芦】【二分答案】
  16. 黑色沙漠(黑沙)单机版局域网联机外网公网教程
  17. 微信小程序—收藏功能
  18. LeeTCode:6. Z 字形变换 python实现
  19. 陕西渭南有什么小吃_爱问知识人
  20. KK模组、同步带模组和线性模组的区别在哪里?

热门文章

  1. 什么办法能让鹅长头包 鹅什么药头上头瘤长得快
  2. [java]左键画圆,右键画方
  3. 表空间信息查询(sql语句)
  4. 九价疫苗三针一共多少钱 2022
  5. 平板电脑win10 android比较好,华为MateBook名不副实!Win10平板电脑最合适
  6. 如何通过学习实现人生的逆袭!
  7. EasyRecovery最新版本Photo16电脑数据恢复软件下载
  8. 微信小程序:九宫格抽奖
  9. 赵越,一个优秀的科研工作者
  10. HTML5七夕情人节表白网页制作【3D雪花展开相册】HTML+CSS+JavaScript 程序员表白网页 简单的3D相册制作