scipyのダウンロードdocumentationは、統合のために使用されるC関数はフォームnquadによって呼び出されるC関数の次元数を知るには? nquad状態の
f(int n, double args[n])
where n is the number of extra parameters and args is an array of doubles of the additional parameters.
であることを、どのようにC関数は、引数の正しい数を使用するために統合されているどのように多くの寸法を知ることになっていますか?
私はに一般documentationで使用されるC関数を変更する場合:私は間の値を取得
#!/usr/bin/env python3
import ctypes
from scipy.integrate import nquad
lib = ctypes.CDLL('func.so')
func = lib.f
func.restype = ctypes.c_double
func.argtypes = (ctypes.c_int, ctypes.c_double)
print(nquad(func, [[0, 1]]))
:
gcc -fPIC -shared func.c -o func.so
でコンパイルし、このPythonプログラムを実行
#include "stdio.h"
double f(int n, double args[]) {
(void)args;
printf("%i\n", n);
return 0;
}
64bit fedora 25では32764と32767が、32bit fedora 25では0が得られます。上記リンクでは、 onはnの値をチェックしませんが、args [0] ... args [2]を使用するので、いくつのディメンションが統合されているか知る方法はありませんか?
とnquadを呼び出す:代わりに、nは異なるべきであるにもかかわらず、64ビットシステムで印刷される内容を変更しない
print(nquad(func, [[0, 1]], args = [1,2,3]))
。私は使用しています
gcc (GCC) 6.3.1 20161221 (Red Hat 6.3.1-1)
Python 3.5.2
scipy 0.18.0
問題は、ドキュメントとテストによれば、nは数値次元の数ではなく、追加のパラメータが必要です。 – user1226313