小编ang*_*ian的帖子

scipy eigh给出正半定矩阵的负特征值

我有一些scipy eigh函数的问题,返回正半定矩阵的负特征值.以下是MWE.

hess_R函数返回一个正半定矩阵(它是秩1矩阵和对角矩阵的总和,两者都带有非负数项).

import numpy as np
from scipy import linalg as LA

def hess_R(x):
    d = len(x)
    H = np.ones(d*d).reshape(d,d) / (1 - np.sum(x))**2
    H = H + np.diag(1 / (x**2))
    return H.astype(np.float64)

x = np.array([  9.98510710e-02 ,  9.00148922e-01 ,  4.41547488e-10])
H = hess_R(x)
w,v = LA.eigh(H)
print w
Run Code Online (Sandbox Code Playgroud)

印刷的特征值是

[ -6.74055241e-271   4.62855397e+016   5.15260753e+018]
Run Code Online (Sandbox Code Playgroud)

如果我更换np.float64np.float32在return语句hess_R,我得到

[ -5.42905303e+10   4.62854925e+16   5.15260506e+18]
Run Code Online (Sandbox Code Playgroud)

相反,所以我猜这是一种精确的问题.

有没有办法来解决这个问题?从技术上讲,我不需要使用eigh,但我认为这是我的其他错误的根本问题(取这些矩阵的平方根,得到NaN等)

python precision numpy scipy eigenvalue

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

在R中显示变量的精确值

> x <- 1.00042589212565
> x
[1] 1.000426
Run Code Online (Sandbox Code Playgroud)

如果我想打印确切的值x,我该怎么做?

对不起,如果这是一个愚蠢的问题.我试着谷歌搜索"R"和"确切"或"圆形",但我得到的是关于如何舍入的文章.

先感谢您!

r r-faq

3
推荐指数
2
解决办法
5465
查看次数

舍入BigDecimal的科学记数法

我想BigDecimal用科学记数法打印,以便在小数点后面有5位数字.例如:-3.12345E-51,9.12345E100

.setScale()在这种情况下不起作用,因为我事先并不知道科学记数法中的数字的指数.而且,BigDecimal似乎没有getExponent()办法.

实现这一目标的最佳方法是什么?先感谢您.

java bigdecimal

0
推荐指数
1
解决办法
1595
查看次数

标签 统计

bigdecimal ×1

eigenvalue ×1

java ×1

numpy ×1

precision ×1

python ×1

r ×1

r-faq ×1

scipy ×1