相关疑难解决方法(0)

找到全零答案的快速方法

对于每个长度为n + h-1的数组,其值为0和1,我想检查是否存在另一个长度为n的非零数组,其值为-1,0,1,以便所有h内部产品都是零.我天真的做法是

import numpy as np
import itertools
(n,h)= 4,3
for longtuple in itertools.product([0,1], repeat = n+h-1):
    bad = 0
    for v in itertools.product([-1,0,1], repeat = n):
        if not any(v):
            continue
        if (not np.correlate(v, longtuple, 'valid').any()):
            bad = 1
            break
    if (bad == 0):
        print "Good"
        print longtuple
Run Code Online (Sandbox Code Playgroud)

如果我们设置n = 19,这是非常慢的,h = 10这是我想要测试的.

我的目标是找到一个长度单一的"好"数组n+h-1.有没有办法加快这让n = 19h = 10是否可行?

当前的朴素方法需要2 ^(n + h-1)3 ^(n)次迭代,每次迭代大约需要n次.这是311,992,186,885,373,952次迭代n = 19,h = …

python algorithm math optimization numpy

22
推荐指数
2
解决办法
793
查看次数

计算矩阵的零空间

我正在尝试解决一组形式为Ax = 0的方程式.A是已知的6x6矩阵,我使用SVD编写了下面的代码,以获得在某种程度上起作用的向量x.答案大致正确,但不足以对我有用,我怎样才能提高计算的精确度?降低低于1.e-4的eps会导致功能失败.

from numpy.linalg import *
from numpy import *

A = matrix([[0.624010149127497 ,0.020915658603923 ,0.838082638087629 ,62.0778180312547 ,-0.336 ,0],
[0.669649399820597 ,0.344105317421833 ,0.0543868015800246 ,49.0194290212841 ,-0.267 ,0],
[0.473153758252885 ,0.366893577716959 ,0.924972565581684 ,186.071352614705 ,-1 ,0],
[0.0759305208803158 ,0.356365401030535 ,0.126682113674883 ,175.292109352674 ,0 ,-5.201],
[0.91160934274653 ,0.32447818779582 ,0.741382053883291 ,0.11536775372698 ,0 ,-0.034],
[0.480860406786873 ,0.903499596111067 ,0.542581424762866 ,32.782593418975 ,0 ,-1]])

def null(A, eps=1e-3):
  u,s,vh = svd(A,full_matrices=1,compute_uv=1)
  null_space = compress(s <= eps, vh, axis=0)
  return null_space.T

NS = null(A)
print "Null space equals ",NS,"\n"
print dot(A,NS)
Run Code Online (Sandbox Code Playgroud)

python math linear-algebra svd least-squares

12
推荐指数
2
解决办法
6419
查看次数

一种简单的,类似matlab的方法,用于在numpy(和数字格式)中查找小矩阵的零空间

必须有一种简单的方法来获得python的numpy或scipy中的小(例如3x3)矩阵的零空间.

MATLAB可以很好地解决这个问题.让我们说:

A = [1 2 3; 
     2 3 4; 
     2 4 6]

rank(A) % rank is 2 
null(A, 'r') % ask matlab to be ('r') reasonable about 
             % its choice of a vector in A's nullspace
Run Code Online (Sandbox Code Playgroud)

并且最后一个命令的输出是:

 1 
-2 
 1
Run Code Online (Sandbox Code Playgroud)

它似乎 - 这是真的吗? - 在numpy中,事情并不那么简单:

import numpy as np
A = array(([1, 2, 3], [2, 3, 4], [2, 4, 6])) 
np.linalg.matrix_rank(A) # ok, getting the rank of a matrix is this esay, even if
                         # it takes more keystrokes, …
Run Code Online (Sandbox Code Playgroud)

python matlab numpy matrix linear-algebra

9
推荐指数
1
解决办法
5155
查看次数

如何在Python中计算稀疏矩阵的零空间/内核(x:M·x = 0)?

我在网上找到了一些示例,展示了如何在Python中找到常规矩阵的零空间,但我找不到稀疏矩阵(scipy.sparse.csr_matrix)的任何示例.

零空间是指x使得M·x = 0,其中' · '是矩阵乘法.有人知道怎么做这个吗?

此外,在我的情况下,我知道零空间将由单个向量组成.这些信息可以用来提高方法的效率吗?

python numpy linear-algebra scipy sparse-matrix

6
推荐指数
1
解决办法
1159
查看次数