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

我们正在进行一个大型的数学项目,其中有许多由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)

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

感谢您的帮助:)

我们正在进行一个大型的数学项目,其中有许多由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) 我希望有人能有一个快速而奇特的解决办法。否则我需要花点时间写一个长而“脏”的脚本,这将解决这个问题。在 感谢您的帮助:)
经验分享 程序员 微信小程序 职场和发展