sympy 计算表达式

 

from sympy import *

def test_matrix():
    A = Matrix([[x, x*y], [sin(z)+4, x**z]])
    sol = Matrix([[1, 2], [sin(3)+4, 1]])
    f = lambdify((x,y,z), A, modules="sympy")
    assert f(1,2,3) == sol
    f = lambdify((x,y,z), (A, [A]), modules="sympy")
    assert f(1,2,3) == (sol,[sol])

 

 

https://www.kutu66.com/Python-Module-Examples/article_66605

实例 1

 

复制

def test_threaded():
    @threaded
    def function(expr, *args):
        return 2*expr + sum(args)
    assert function(Matrix([[x, y], [1, x]]), 1, 2) == 
        Matrix([[2*x + 3, 2*y + 3], [5, 2*x + 3]])
    assert function(Eq(x, y), 1, 2) == Eq(2*x + 3, 2*y + 3)
    assert function([x, y], 1, 2) == [2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以帮你回答这个问题。 首先,需要在C++中使用pybind11库来调用Python代码。pybind11是一个开源的库,可以方便地将C++和Python代码结合起来。它提供了一个简单的接口,可以将C++数据类型转换为Python数据类型,并在C++代码中使用Python模块。 接下来,需要在Python中使用sympy库来计算表达式sympy是一个Python库,可以进行符号计算,并支持各种数学操作,如求导、积分、解方程等等。 在Python中,可以使用以下代码计算表达式: ```python import sympy x = sympy.Symbol('x') expr = sympy.parse_expr('x**2 + 2*x + 1') result = expr.subs(x, 3) print(result) ``` 这段代码中,首先定义了一个符号变量x,然后使用parse_expr函数将字符串转换为表达式。最后,使用subs函数将x的替换为3,并打印结果。 最后,在C++中调用Python代码,可以使用以下代码: ```c++ #include <pybind11/pybind11.h> namespace py = pybind11; int main() { py::module sympy = py::module::import("sympy"); py::object x = sympy.attr("Symbol")("x"); py::object expr = sympy.attr("parse_expr")("x**2 + 2*x + 1"); py::object result = expr.attr("subs")(x, 3); std::cout << py::str(result) << std::endl; return 0; } ``` 这段代码中,首先导入sympy模块,然后定义符号变量x和表达式expr。最后,使用subs函数计算表达式,并将结果转换为字符串打印出来。 这就是使用pybind11调用Python sympy计算表达式的基本方法。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值