说我已经定义了以下表达式:
from sympy import *
N, D, i, j, d = symbols("N D i j d", integer=True)
beta, gamma = symbols(r'\beta \gamma')
X = IndexedBase("X", shape=(N, D))
# r(i, j) = euclidian distance between X[i] and X[j]
r = lambda i, j: sqrt(Sum((X[i, d] - X[j, d])**2, (d, 1, D)))
expr = r(i, j)**2 + r(i, j)
Run Code Online (Sandbox Code Playgroud)
该expr变量现在显示是这样的:
尽管对于这个最小的示例来说这很好,但是在较大的表达式中会变得很混乱。这确实阻碍了我查看以后在对所有r(i,j),导数等求和时发生的情况的能力。
我的问题:有没有办法告诉SymPy有关信息r(i, j),以便可以将其显示为以下形式:
同时在后续表达式中仍表现出与以往相同的行为?
我知道我可以制作r一个Function显示为所需的,但是随后在随后的计算中将无法正常工作(例如,派生将是抽象的,而不进行评估)。
任何帮助将非常感激!
我已经成功地使用cppyy为我正在研究的C++项目进行自动python绑定.我最近加入了Eigen库,但是我很难和cppyy一起使用它.有没有人有这方面的经验,或者知道我应该怎么做?
我有回购的以下结构(仅显示相关部分):
.
??? CMakeLists.txt
??? build
??? external
?? eigen
??? include
?? all .hpp files
??? src
?? all .cpp files
??? python
?? qmc.py
Run Code Online (Sandbox Code Playgroud)
这里external/eigen是Eigen GitHub回购的副本.该qmc.py文件是cppyy魔法发生的地方,它看起来像这样(在尝试添加Eigen之前,这个工作正常)
import cppyy
import tempfile
import os
import glob
try:
current_dir = os.path.dirname(__file__)
except NameError:
current_dir = os.getcwd()
source_dir = os.path.dirname(current_dir)
install_dir = os.path.join(source_dir, 'build')
include_dir = os.path.join(source_dir, 'include')
eigen_dir = os.path.join(source_dir, 'external', 'eigen')
print(current_dir, source_dir, include_dir, install_dir)
def cmake_run(build_type='Release', c_compiler='gcc', cxx_compiler='g++'): …Run Code Online (Sandbox Code Playgroud) 我对 Haskell 比较陌生,我意识到我可能会逆流而上,但尽管如此,我会问:
假设我有一个简短的 Haskell 脚本:
import Data.List.Split (splitOn)
main :: IO ()
main = do
let orders = splitOn "x" "axbxc"
putStrLn $ head orders
Run Code Online (Sandbox Code Playgroud)
如果我只使用标准函数,我可以用ghc <script.hs>. 因为我依赖split包提供splitOn功能,所以编译失败。
project.cabal现在,我可以毫无困难地使用和文件设置一个 cabal 项目,Setup.hs以便实际编译它。然而,对于独立脚本来说,这感觉像是很多额外的样板。
那么,有没有办法针对某些外部包编译单个 .hs 文件?类似于 Python 中的操作可以通过pip install something“将包安装到解释器中”来完成,即有没有办法将额外的包“安装到 ghc”中,这样我只需要向 ghc 提供一些额外的链接标志?