我正在尝试使用icpc在64位计算机上编译程序.不幸的是,我收到了一条错误消息catastrophic error: cannot open source file "bits/c++config.h".我从这里采纳了一些建议但没有成功.此外,我不会忘记source /opt/intel/bin/compilervars.sh intel64事先跑,我在Ubuntu 13.10,以防这很重要.
我正在慢慢地从C转向Python。这次我需要从给定的网格中计算出偏导数。我知道如何在C中执行此操作,因此目前我仅使用内联适配器,即
def dz(x,X,Y,Z,dx):
y = numpy.zeros((X,Y,Z), dtype='double');
code = """
int i, j, k;
for (i=0; i<X-1; i++){
for(k=0; k<Y; k++){
for (j=0; j<Z; j++){
y[i,k,j] = (x[i+1, k, j] - x[i, k, j])/dx;
}
}
}
for (j=0; j<Z; j++){
for(k=0; k<Y; k++){
y[X-1,k,j] = - x[X-1, k, j]/dx;
}
}
"""
weave.inline(code, ['x', 'y', 'dx', 'X', 'Y', 'Z'], \
type_converters=converters.blitz, compiler = 'gcc');
return y;
Run Code Online (Sandbox Code Playgroud)
如x和所示y,其中和是3D numpy数组,第二个循环代表边界条件。当然,我可以在纯Python中实现相同的逻辑,但是代码效率很低。但是,我想知道是否可以使用纯numpy计算偏导数?任何人都可以提供任何帮助,我将不胜感激。
我正在尝试设置eigen3特征值求解器,看起来我遇到了一些复杂问题.代码编译得很好,但在某些时候失败了.失败的代码是
EigenSolver<MatrixXd> eigensolver(A);
cout << "tell me something" << endl;
Matrix<complex<double>, -1, 1, 0, -1, 1> E = eigensolver.eigenvalues();
cout << "tell me something more" << endl;
cout << E;
Run Code Online (Sandbox Code Playgroud)
和输出错误消息:
tell me something
tell me something more
(3.5,1.93649)
class_out: /usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:407: Eigen::internal::traits<Derived>::Scalar &Eigen::DenseCoeffsBase<Derived, 1>::operator()(Eigen::internal::traits<Derived>::Index) [with Derived = Eigen::Matrix<std::complex<double>, -1, 1, 0, -1, 1>]: Assertion `index >= 0 && index < size()' failed.
(3.5,-1.93649)Aborted
Run Code Online (Sandbox Code Playgroud)
这看起来有点奇怪,但它看起来不像<<普通的操作员问题
cout << eigensolver.eigenvalues();
Run Code Online (Sandbox Code Playgroud)
工作正常,也cout适用于普通矩阵.另外,我用Mathematica检查了A的特征值,我得到了(3.5,1.93649)和(3.5,-1.93649).
有谁知道为什么会这样,或者有人可能建议其他方式来访问特征值?
我有一个矩阵,说,P大小(X,Y).另外,我有两个矩阵,也就是说,Kx和Ky大小的(M,N)两个,矩阵pk大小的(M,N)和两个向量u和v的X和Y分别.例如,它们可以定义如下:
import numpy as np
P = np.zeros((X,Y));
pk = np.random.rand(M,N);
Kx = np.random.rand(M,N);
Ky = np.random.rand(M,N);
u = np.random.rand(X);
v = np.random.rand(Y);
Run Code Online (Sandbox Code Playgroud)
在实际代码中,它们当然不是随机的,但这对于这个例子来说无关紧要.问题是,如果存在与以下内容相当的纯粹numpy:
for m in range(0, M):
for n in range(0, N):
for i in range(0,X):
for j in range(0,Y):
Arg = Kx[m,n]*u[i] + Ky[m,n]*v[j];
P[i,j] += pk[m,n]*np.cos(Arg);
Run Code Online (Sandbox Code Playgroud)
所有M,N,X,Y …
c++ ×2
matrix ×2
numpy ×2
python ×2
derivative ×1
eigen ×1
gcc ×1
icc ×1
ubuntu ×1
ubuntu-13.10 ×1