尝试实现前向代换法,即以L为下三角矩阵,x,b为向量的解Lx =b问题的求解过程。
这是一项简单的任务:
def tri_solve(L,b):
n = len(b)
x = np.zeros(n)
x[0] = b[0]/L[0,0];
for i in range(1,n):
comp = 0;
for k in range(0,i):
index = L[i,k]
preSolution = x[k]
comp = comp + index * pre
如何计算非方阵的Cholesky分解,用numpy计算马氏距离
def get_fitting_function(G):
print(G.shape) #(14L, 11L) --> 14 samples of dimension 11
g_mu = G.mean(axis=0)
#Cholesky decomposition uses half of the operations as LU
#and is numerically more stable.
L = np.linalg.cholesky(G)
def fitting_f
我必须反演一个大型稀疏矩阵(50000 X 12000)。它最初以numpy.ndarray的形式存储,矩阵的大小约为3.5GB。我已经尝试过使用numpy.linalg.pinv来转换这个矩阵,但是它崩溃了jupyter笔记本内核。将此numpy.ndarray转换为scipy.sparse.csr_matrix (稀疏矩阵格式)是可行的,但我不知道有任何函数可以计算csr_matrix的伪逆。
如何求大型稀疏矩阵的伪逆?
我正在测试scipy.optimize函数curve_fit()。我正在测试一个二次函数,我已经为这个问题手动分配了x和y数据。我确实得到了我的参数值的预期答案,基本上是我输入的每一个猜测。但是,我注意到,对于第一个参数不接近于0的猜测(特别是在1之后),我得到了一个充满无穷大的协方差矩阵。我不知道为什么这么简单的测试失败了。
# python version: 3.9.7
# using a venv
# numpy version: 1.23.2
# scipy version: 1.9.0
import numpy as np
from scipy.optimize import cur
我想要计算向量,
S=A B u,
其中s和u是N维复向量,A是N×M复矩阵,B是M×N复矩阵。当A、B和u的元素表示为浮点数时,以下哪两种方法具有更好的准确性(更有效的数字)?
(1)先计算B。
首先做矩阵向量乘法,
Y=B u
然后,另一个矩阵向量乘法
S=A y
(2)先计算A、B。
首先做矩阵-矩阵乘法,
C=A B
然后,矩阵向量乘法
S=C U
有什么已知的一般规则吗?
顺便说一下,我知道方法(1)比方法(2)效率高得多。
我有一个奇怪的问题,我猜想它来自于数值的精确性(但我不确定)。
我有一个稀疏矩阵(最后是数据)。
x
Out[25]:
<11250x11250 sparse matrix of type '<class 'numpy.float64'>'
with 44547 stored elements in Compressed Sparse Column format>
和向量
z = np.zeros((x.shape[0]))
z[idx] = 0.1
我在试着解决
from scipy.sparse.linalg import
我的任务是对给定的二维5000个数据进行PCA和白化变换。
我对PCA的理解是用协方差矩阵的特征向量分析数据的主轴,并将主轴旋转到x轴!
这就是我所做的。
[BtEvector,BtEvalue]=eig(MYCov);% Eigen value and vector using built-in function
我首先计算了特征值和向量。结果是
BtEvalue=[4.027487815706757,0;0,8.903923357227459]
和
BtEvector=[0.033937679569230,-0.999423951036524;-0.999423951036524,-0.
状态转移矩阵的矩阵乘法应保持范数,但np.matmul 不保留范数。我怎么才能解决这个问题?是否有更好的python模块可以这样做?
我有一个右态转移矩阵A,即s(T)A(τ)=s(t+tau)
其中s(t)是一个与1相加的列矩阵,我们也知道A的每一行也是1的加法。
我们知道,A^n也是自然数中任意n的一个右态转移矩阵。
求稳态分布的一种方法是计算n向无穷远的A^n。以下代码段计算A^(2^n):
def p_multiplier(A,n):
B=copy.deepcopy(A)
for i in range(n):
B=nump
我没有从Matlab函数中得到正确的结果,所以我的数据安排可能是错误的。我查看了我正在使用的函数的帮助文件,以及它所使用的输入"X“必须在表单中。
X的行对应于观察,列对应于变量。
很抱歉,如果这是非常基本的,但我的输入矩阵应该如何安排呢?
我有5个作者,每个作者都有一个长度为18的特征向量(例如,为了简单起见)。
因此,我假设observations是指同一作者的不同特性,而variables是指作者,所以我将输入矩阵安排为[18 x 5],其中每一列都是作者。
这个例子很简单。在SIFT特性的情况下呢?在这里,每个作者将产生一个特征矩阵[128 x num. of keyp
我有一个矩阵A,它的大小是2000*50000倍。我想要计算矩阵A的协方差矩阵,所以我使用下面的Matlab命令:
Y = cov(A)
但是出现了错误:
Out of memory. Type HELP MEMORY for your
options.
Error in test_2 (line 31)
Y = cov(A)
我的D磁盘仍然有250 GB。为什么会出现这个错误?如何解决这个问题?
我有一组具有W个变量的N (N是非常大的)线性方程。
为了提高效率,我需要找到最小数量的可解(具有唯一解)的线性方程。可以假定,当X == Y时,一组含Y变量的X方程有唯一解。
例如,如果我有以下内容作为输入:
2a = b - c
a = 0.5b
b = 2 + a
我想返回方程式集:
a = 0.5b
b = 2 + a
目前,我有一个使用启发式方法的实现。我创建了一个矩阵,列是变量,行是方程。我搜索矩阵以找到一组完全连接的方程,然后逐个尝试删除方程,看看剩余的方程组是否仍然可解,如果它是连续的,如果不是,则返回方程组。
有没有一个已知的算法来解决这个问题,我是不是在尝试重新发明轮子?有