小编Eug*_*e B的帖子

无法用icpc打开源文件"bits/c ++ config.h"错误

我正在尝试使用icpc在64位计算机上编译程序.不幸的是,我收到了一条错误消息catastrophic error: cannot open source file "bits/c++config.h".我从这里采纳了一些建议但没有成功.此外,我不会忘记source /opt/intel/bin/compilervars.sh intel64事先跑,我在Ubuntu 13.10,以防这很重要.

c++ ubuntu gcc icc ubuntu-13.10

11
推荐指数
2
解决办法
2万
查看次数

Python中的偏导数

我正在慢慢地从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计算偏导数?任何人都可以提供任何帮助,我将不胜感激。

python numpy derivative

5
推荐指数
1
解决办法
1万
查看次数

访问eigen3中的特征值

我正在尝试设置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).

有谁知道为什么会这样,或者有人可能建议其他方式来访问特征值?

c++ matrix linear-algebra eigen

4
推荐指数
1
解决办法
4560
查看次数

不规则矢量的Numpy乘法避免了循环

我有一个矩阵,说,P大小(X,Y).另外,我有两个矩阵,也就是说,KxKy大小的(M,N)两个,矩阵pk大小的(M,N)和两个向量uvXY分别.例如,它们可以定义如下:

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 …

python numpy matrix matrix-multiplication

3
推荐指数
1
解决办法
833
查看次数