使用PyUblas从python访问塔斯马尼亚稀疏网格,Boost.Python版本还有皮尤·茨格。make\u global\u grid的参数类型不匹配

2024-10-03 04:26:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用py_tsg调用来自Python的稀疏网格生成器Tasman(C++编写)。pyètsg网站显示我需要PyUblas和Boost.Python版本作为先决条件。我已经得到了所有的设置,并正在运行第一个例子的问题,以确保一切都是洁净的(在同一个pyètsg链接上给出了早些时候)。你知道吗

所以,除了一件事,一切似乎都很好。。。塔斯马尼亚网格方法中的一个参数之间的类型不匹配:make\ global\ u grid。具体来说,Python正在传递一个numpy.ndarray公司一个pyublas::numpy\u向量的整数,解释器不喜欢它。你知道吗

来源如下:

import scipy, scipy.integrate, itertools
import pyublas
import _py_tsg as tsg

grid = tsg.TSG()
def fn1(x):     return scipy.exp(-x[0]*x[0])*scipy.cos(x[1])
dimension = 2
outputs = 0
level = 7
grid.make_global_grid( dimension, outputs, level, tsg.TypeDepth.type_level, tsg.TypeOneDRule.rule_clenshawcurtis, scipy.array([], dtype=int), 0.0, 0.0 )
points = grid.get_points()
weights = grid.get_weights()
sum = scipy.sum( [w*fn1(x) for (x,w) in zip(points, weights)] )
print("\nExample 1")
print("grid has: %d points" % grid.get_num_points())
print("integral is: %.17f" % sum)
print("error: %.17f" % scipy.fabs( sum - 2.513723354063905e+00 ))

以及堆栈跟踪: Boost.Python.ArgumentError错误:中的Python参数类型 全球电网(TSG,int,int,int,TypeDepth,TypeOneDRule,numpy.ndarray公司,浮动,浮动) 与C++签名不匹配: 生成全局网格(TSG\u Wrap{lvalue},int,int,int,TasGrid::TypeDepth,TasGrid::TypeOneDRule,pyublas::numpy\u vector,double,double)


Tags: pyimportnumpy网格scipylevelpointsgrid
1条回答
网友
1楼 · 发布于 2024-10-03 04:26:04
<>我发现Tasman在4或更高版本中提供了一个Python包装到C++库。如果您遇到类似的问题,请查看塔斯马尼亚文档并使用TSG 4.0或更高版本。。。你知道吗

相关问题 更多 >