我的目标是在Python中为谱有限元素编写一个小型库,为此我尝试使用Boost扩展python与C++库,希望它能使我的代码更快.
class Quad {
public:
Quad(int, int);
double integrate(boost::function<double(std::vector<double> const&)> const&);
double integrate_wrapper(boost::python::object const&);
std::vector< std::vector<double> > nodes;
std::vector<double> weights;
};
...
namespace std {
typedef std::vector< std::vector< std::vector<double> > > cube;
typedef std::vector< std::vector<double> > mat;
typedef std::vector<double> vec;
}
...
double Quad::integrate(boost::function<double(vec const&)> const& func) {
double result = 0.;
for (unsigned int i = 0; i < nodes.size(); ++i) {
result += func(nodes[i]) * weights[i];
}
return result;
}
// ---- PYTHON WRAPPER ----
double Quad::integrate_wrapper(boost::python::object const& …
Run Code Online (Sandbox Code Playgroud) 在下面的程序中,SymPy似乎并不理解被积函数是产品的衍生物.有没有办法让它回归u*v
?
import sympy
x = sympy.symbols('x', real=True)
u = sympy.Function('u')
v = sympy.Function('v')
print((u(x) * v(x)).diff(x).integrate(x))
Run Code Online (Sandbox Code Playgroud)
打印:
> Integral(u(x)*Derivative(v(x), x) + v(x)*Derivative(u(x), x), x)
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种在 Sympy 表达式中查找功能参数的可靠方法。例如,在下面的示例中,如何f
从检索operator
?
import sympy
x, y = sympy.symbols('x y')
f = sympy.Function('f')
operator = x*f(x, y).diff(x) + y*f(x, y)
print(operator.free_symbols)
# prints {x, y}
Run Code Online (Sandbox Code Playgroud) 假设我正在用C语言编写一个小型库,其中大部分源代码位于两个文件夹src/A
和中src/B
,并且头文件src/A/a.h
需要包含在其中src/B/b.h
。当为非库项目编写代码时,我通常会这样写
#include "B/b.h"
Run Code Online (Sandbox Code Playgroud)
ina.h
并使用该-Isrc
标志告诉编译器在哪里查找头文件。
现在假设我的库安装在本地,~/mylib
并且我想使用来自a.h
不同项目的函数。只需使用该文件即可包含该文件
#include "~/mylib/src/A/a.h"
Run Code Online (Sandbox Code Playgroud)
不起作用,因为~/mylib/src/B/b.h
可能不属于搜索路径。我的问题是关于解决这个问题的规范方法。这可能很基础,但我没有用C语言做过任何高级编程,并且在网上尝试找到解决方案时也没有成功。
我想到的可能的解决方案如下:
添加~/mylib
到搜索路径,但如果库和客户端项目具有相同名称的头文件(例如src/helpers.h
),则可能会导致问题。是否可以包含一个头文件,而不用我不需要的文件使搜索空间变得混乱?
在库头文件中使用相对路径,但这感觉不太健壮。
谢谢。
python ×2
sympy ×2
boost ×1
c ×1
c++ ×1
calculus ×1
derivative ×1
header-files ×1
performance ×1