首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有工具可以把用C写的数学公式转换成Python?

有没有工具可以把用C写的数学公式转换成Python?
EN

Stack Overflow用户
提问于 2016-03-02 16:46:59
回答 4查看 91关注 0票数 0

有时,当代数特别糟糕时,我会使用Mathematica推导出一个公式,然后使用CForm[]将结果表达式转换为可编译的C代码。通常,我也希望在Python中使用这个公式。有没有现成的工具可以做到这一点?举个例子,这是一个最近的公式,正如你所看到的,手动转换不是一件令人愉快的事情:

代码语言:javascript
复制
(Power(a,5)*M + 2*Power(a,3)*M*r*(-2*M + r) + a*M*Power(r,2)*Power(-2*M + r,2) - 
 Sqrt(-(Power(r,3)*Power(Power(a,2) + r*(-2*M + r),2)*(Power(a,4)*M*(-1 + Power(rd,2)) - 
       Power(a,2)*r*(2*M*r + Power(r,2)*Power(rd,2) + Power(M,2)*(-4 + Power(rd,2))) + 
       M*Power(r,2)*(-4*Power(M,2) + 4*M*r + Power(r,2)*(-1 + Power(rd,2)))))))/((Power(a,2)*M - Power(r,3))*Power(Power(a,2) + r*(-2*M + r),2))
EN

回答 4

Stack Overflow用户

发布于 2016-03-02 17:00:03

你不需要转换任何东西。Python和C中的代数运算符具有相同的优先顺序:*、/、+、-,它们都是从左到右的。有关示例https://montcs.bloomu.edu/Information/operator-precedence.C-Python-Pascal.shtml,请参阅。

您只需定义所使用的函数。在您的示例中,我看到了Power()和Sqrt(),它们可能会映射到Python的math.pow()和math.sqrt()。

票数 1
EN

Stack Overflow用户

发布于 2016-03-02 16:50:51

您可以使用Sympy在python中派生公式,然后在python中执行。

这是通常的方式

票数 0
EN

Stack Overflow用户

发布于 2016-03-02 17:01:30

假设您信任这些代码,您可以使用exec

代码语言:javascript
复制
from math import sqrt

formula_str = """
def myfunc(a,r,rd,M):
    return (Power(a,5)*M + 2*Power(a,3)*M*r*(-2*M + r) + a*M*Power(r,2)*Power(-2*M + r,2) - 
    Sqrt(-(Power(r,3)*Power(Power(a,2) + r*(-2*M + r),2)*(Power(a,4)*M*(-1 + Power(rd,2)) - 
    Power(a,2)*r*(2*M*r + Power(r,2)*Power(rd,2) + Power(M,2)*(-4 + Power(rd,2))) + 
    M*Power(r,2)*(-4*Power(M,2) + 4*M*r + Power(r,2)*(-1 + Power(rd,2)))))))/((Power(a,2)*M - Power(r,3))*Power(Power(a,2) + r*(-2*M + r),2))
""".replace("Power","pow").replace("Sqrt","sqrt")

myfunc(5,4,3,2) #output:0.6288528754088698
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35742289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档