mathematica打包java_将Mathematica函数转换为Java形式

在大型数学项目中,需要将Wolfram Mathematica的方程转换为Java代码。当前,一个简单的Python脚本能处理部分转换,如括号、乘法、除法和三角函数,但遇到幂函数时遇到困难。寻求解决方案来处理Mathematica的幂函数,将其转换为Java的Math.pow形式。
摘要由CSDN通过智能技术生成

我们正在进行一个大型的数学项目,其中有许多由Wolfram Mathematica制作的长方程和导数。我们有1000多个很长的方程。在

主程序用Java编写,Mathematica只用于生成方程。我们的目标是将“Mathematica”形式转换为“Java”形式的方程。然后我们可以直接将生成的代码复制/粘贴到“Java”代码中。在

例如,我们有一个Mathematica形式的短方程:Sqrt[((Cos[R]*X1 - X2)^2 + (Sin[R]*Y1 - Y2)^2)/S^2]/S

我们希望它是Java格式的,所以这是预期的结果:

^{pr2}$

下面是简短的python脚本,它管理一些函数:E = "Sqrt[((Cos[R]*X1 - X2)^2 + (Sin[R]*Y1 - Y2)^2)/S^2]/S"

E = E.replace("[", "(") # Replaces Square brackets with normal brackets

E = E.replace("]", ")") # Replaces Square brackets with normal brackets

E = E.replace("*", " * ") # Add some spaces for easier reading

E = E.replace("/", " / ") # Add some spaces for easier reading

E = E.replace("Cos", "Math.cos") # Change "Mathematica" cos to "Java" cos

E = E.replace("Sin", "Math.sin") # Change "Mathematica" sin to "Java" sin

E = E.replace("Sqrt", "Math.sqrt") # Change "Mathematica" SQRT to "Java" SQRT

# Converting Power function is missing here... This is a must :)

print(E)

上述代码产生:Math.sqrt(((Math.cos(R) * X1 - X2)^2 + (Math.sin(R) * Y1 - Y2)^2) / S^2) / S

问题是我们没有找到幂函数的解。我们想使用python regex,但找不到合适的解决方案。问题是幂函数必须将括号内的所有内容都取出来,例如:(Math.cos(R) * X1 - X2)^2 >>>> Math.pow(Math.cos(R) * X1 - X2, 2)

我希望有人能有一个快速而奇特的解决办法。否则我需要花点时间写一个长而“脏”的脚本,这将解决这个问题。在

感谢您的帮助:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值