有没有人有评估超几何函数的算法经验?我会对一般参考文献感兴趣,但我会描述我的特殊问题,以防有人处理它.
我的具体问题是评估形式3F2(a,b,1; c,d; 1)的函数,其中a,b,c和d都是正实数,c + d> a + b + 1.有许多特殊情况具有封闭形式的公式,但据我所知,一般没有这样的公式.以零为中心的幂级数收敛于1,但非常缓慢; 连续系数的比率在限制中变为1.也许像Aitken加速这样的东西会有帮助吗?
如何对无限范围内的一维积分进行数值积分(采用什么数值方法,以及使用什么技巧),其中被积函数中的一个或多个函数是1d量子谐振子波函数.其中我想在谐振子基础上计算某些函数的矩阵元素:
披Ñ(X)= N ñ ħ Ñ(X)EXP(-x 2 /2)
其中H Ñ(x)是厄米多项式V m,n =\int _ { - infinity} ^ {infinity} phi m(x)V(x)phi n(x)dx
同样在存在具有不同宽度的量子谐波波函数的情况下.
问题是波函数phi n(x)具有振荡行为,这对于大n是一个问题,并且来自GSL(GNU Scientific Library)的自适应Gauss-Kronrod积分算法花费很长时间来计算,并且具有大的误差.
numerical physics numerical-analysis numerical-methods numerical-integration
我觉得大多数数值分析软件都使用相同的浮点数和双精度数.
如果我是对的,我很想知道原因,因为在我看来,有些计算可以从任意精度算术的使用中受益,特别是当它与有理数表示的结合使用时,在GNU多精度库上完成.
如果我错了,例子会很好.
我很好奇Java数值算法的性能,例如矩阵矩阵双精度乘法,使用最新的JIT机器,例如手动调整的SSE C++ /汇编器或Fortran对应物.
我看过网络,但大部分结果来自差不多10年前,我从那时起就了解Java的进展.
如果您有使用Java进行数字密集型应用程序的经验,您可以分享您的经验.Java在内核中执行的效果如何,其中循环相对较短且内存访问不是很均匀但仍在L1缓存的限制范围内?如果连续多次执行此类内核,JVM可以在运行时优化它吗?
谢谢
比方说,我有3个32位浮点值,a,b,和c,这样(a + b) + c != a + (b + c).是否存在可能类似于Kahan求和的求和算法,它保证这些值可以按任何顺序求和并且总是达到完全相同(相当准确)的总和?我正在寻找一般情况(即不是仅涉及3个数字的解决方案).
是任意精度算术的唯一出路吗?我正在处理非常大的数据集,所以我希望尽可能避免使用任意精度算术的开销.
谢谢!
在CUDA程序中,我最近从使用的测试转换为无限性
return x==INFINITY || x==-INFINITY;
其中INFINITY是从math.h中,至
return !isfinite(x);
得到不同的结果,我感到非常惊讶.gnu.org建议他们实际应该表现得相似.我错过了什么吗?是不允许INFINITY在CUDA内核中使用?
编辑: 
我刚发现isinf并注意到使用检查
return isinf(x);
给出与INFINITY检查相同的结果.为什么不 
 isfinite(x)==!isinf(x)呢?
在C99规范中它说的是remquo:
remquo函数用于实现参数减少,这可以利用商的一些低阶位.注意,x的幅度可能相对于y太大,以至于商的精确表示是不实际的.
在这种情况下什么是"参数减少",什么是可以利用商的一些低阶位的例子?
我有一个无序列表,看起来像这样:
1.1.1
1.1.1.1
1.1.2
1.10.1
1.10.2
1.2.1
1.2.2
1.2.3
1.2.4
1.20.1
1.3.1
我想在Javascript中将其排序为"数字"顺序.
1.1.1
1.1.1.1
1.1.2
1.2.1
1.2.2
1.2.3
1.2.4
1.3.1
1.10.1
1.10.2
1.20.1
我需要哪种功能?
我有一个包含分类和数字列的数据集,我的目标列也是分类.我在Python34中使用Scikit库.我知道在进行任何机器学习方法之前,Scikit需要将所有分类值转换为数值.
我应该如何将分类列转换为数值?我尝试了很多东西,但是我得到了不同的错误,例如"str"对象没有'numpy.ndarray'对象没有属性'items'.
Here is an example of my data:
 UserID  LocationID   AmountPaid    ServiceID   Target
 29876      IS345       23.9876      FRDG        JFD
 29877      IS712       135.98       WERS        KOI
我的数据集保存在CSV文件中,这里是我写的小代码,可以让您了解我想要做的事情:
#reading my csv file
data_dir = 'C:/Users/davtalab/Desktop/data/'
train_file = data_dir + 'train.csv'
train = pd.read_csv( train_file )
#numeric columns:
x_numeric_cols = train['AmountPaid']
#Categrical columns:
categorical_cols = ['UserID' + 'LocationID' + 'ServiceID']
x_cat_cols = train[categorical_cols].as_matrix() 
y_target = train['Target'].as_matrix() 
我需要将x_cat_cols转换为数值并将它们添加到x_numeric_cols,因此我有完整的输入(x)值.
然后我需要将目标函数转换为数值,并将其作为我的最终目标(y)列.
然后我想使用这两个完整集来做一个随机森林:
rf = RF(n_estimators=n_trees,max_features=max_features,verbose =verbose, n_jobs =n_jobs)
rf.fit( x_train, y_train )
谢谢你的帮助!
我们正在努力进行一次单位测试.在调查期间,我们找到了根本原因,这似乎是浮点数的比较(请参阅下面的代码片段,其中我简化了计算,但仍然失败).
TEST_F( MyFloatTest, thisOneDoesFail)
{
    const float toCompare = 0.2f - 1.0f + 0.9f;
    EXPECT_FLOAT_EQ( toCompare, 0.1f );
}
结果是:
实际:0.1预期:比较哪个是:0.099999964
在数学数学方面有一些背景知识,我们仍然无法弄清楚为什么这个测试失败了,而使用std :: numerical_limits :: epsilon的自定义浮点数比较通过了.所以在某些时候我们开始思考,GTest是错的,我们调试了它.它使用奇怪的表达式,我们没有完全抓住.更奇怪的是:即使我只添加1,下面的测试也会通过:
TEST_F( MyFloatTest, thisOnePasses)
{
    const float toCompare = 1.2f - 1.0f + 0.9f;
    EXPECT_FLOAT_EQ( toCompare, 1.1f );
}
我们认为在包含负浮点值时可能会出现问题,但下一个测试也会通过:
TEST_F( MyFloatTest, thisOnePassesAlso)
{
    const float toCompare = 0.2f - 1.0f + 1.9f;
    EXPECT_FLOAT_EQ( toCompare, 1.1f );
}
所以对我们来说,看起来Gtest的EXPECT_FLOAT_EQ宏确实只是零问题.有谁知道这种行为?你有没有在你的环境中看到类似的东西?(顺便说一下:我们使用的是MSVC2015)由于GTest中提到的4 ULP精度,它是否偶然失败?(这对我们来说也不是很清楚).
numerical ×10
math ×4
c ×2
c++ ×2
algorithm ×1
cuda ×1
googletest ×1
java ×1
javascript ×1
optimization ×1
performance ×1
physics ×1
python ×1
scikit-learn ×1
sorting ×1
sse ×1
target ×1