擅长:python、mysql、java
<p>我不是同情专家,但也许这可以帮助你:</p>
<p>可以定义如下Python方法:</p>
<pre><code>def f(x):
return sin(x)*cos(x)
</code></pre>
<p>您可以使用以下方法创建可求值函数<strong>f1</strong>作为<strong>f</strong>的导数:</p>
^{pr2}$
<p>这个函数f1可以从C++中使用Boosi::Python调用。您可以为函数f1创建一个对象,使用<em>()运算符</em>调用函数,并使用<em>extract<;</em>将结果转换为double。在</p>
<p>下面是一个例子:</p>
<pre><code> namespace py = boost::python;
Py_Initialize();
py::object main_module = py::import("__main__");
py::object main_dict = main_module.attr("__dict__");
py::exec(
"def f(x):\n"
" return sin(x)*cos(x)\n",
main_dict
);
py::exec(
"from sympy import *\n"
"x = symbols('x')\n"
"f1 = lambdify(x, diff(f(x)))\n",
main_dict
);
py::object f1 = main_dict["f1"];
std::cout << py::extract<double>(f1(0.0)) << std::endl;
std::cout << py::extract<double>(f1(1.0)) << std::endl;
return 0;
</code></pre>