在许多情况下,JavaScript的类型强制相等运算符不可传递.例如,请参阅" JavaScript等同传递性很奇怪".
但是,是否有任何情况下,在==没有对称?也就是说,这里a == b是true和b == a是false?
javascript symmetric equivalence ecma262 comparison-operators
我在R中有一个应该是对称的矩阵,但是,由于机器精度,矩阵永远不对称(值相差大约10 ^ -16).因为我知道矩阵是对称的,所以到目前为止我一直在这样做以解决这个问题:
s.diag = diag(s)
s[lower.tri(s,diag=T)] = 0
s = s + t(s) + diag(s.diag,S)
Run Code Online (Sandbox Code Playgroud)
有一个更好的一行命令吗?
我有一个算法问题,我在很多状态之间导出了一个传递矩阵.下一步是对它进行取幂,但它非常大,所以我需要对它进行一些减少.具体来说它包含很多对称性.下面是一些关于通过简单观察可以消除多少节点的示例.
我的问题是,是否有一种算法可以有效地消除有向图中的对称性,类似于我在下面手动完成它的方式.
在所有情况下,初始向量对于所有节点具有相同的值.
在第一个例子中,我们看到b,c,d和e所有的接收值a和对方的一个.因此,它们将始终包含相同的值,我们可以合并它们.

在这个例子中,我们迅速发现,该图形是从视图的点相同a,b,c和d.同样对于它们各自的侧节点,它附着在哪个内节点上也无关紧要.因此,我们可以将图形缩小到仅两个状态.

更新:有些人很合理,不太确定"国家转移矩阵"是什么意思.这里的想法是,您可以将重组问题分解为多个状态类型n.矩阵然后告诉你如何从获取n-1到n.
通常你只对你的一个州的价值感兴趣,但你也需要计算其他州,所以你总能达到一个新的水平.但是,在某些情况下,多个状态是对称的,这意味着它们将始终具有相同的值.显然,计算所有这些都是非常浪费的,所以我们希望减少图形,直到所有节点都"独特".
下面是示例1中缩小图的传递矩阵的示例.
[S_a(n)] [1 1 1] [S_a(n-1)]
[S_f(n)] = [1 0 0]*[S_f(n-1)]
[S_B(n)] [4 0 1] [S_B(n-1)]
Run Code Online (Sandbox Code Playgroud)
任何建议或对论文的参考都表示赞赏.
我在图中有一组MxM 对称矩阵变量,其值我想优化.
有没有办法强制对称条件?
我已经考虑过为损失函数添加一个术语来强制执行它,但这看起来很尴尬和迂回.我希望的是tf.matmul(A,B,symmA=True)
,只有A的三角形部分才会被使用和学习.或者类似的东西tf.upperTriangularToFull(A)会从三角形部分创建一个密集的矩阵.
我很难理解什么应该是一个简单的概念.我在MATLAB中构造了一个真实且对称的向量.当我在MATLAB中进行FFT时,结果具有显着的虚部,即使傅里叶变换的对称规则说实际对称函数的FT也应该是实数和对称的.我的示例代码:
N = 1 + 2^8;
k = linspace(-1,1,N);
V = exp(-abs(k));
Vf1 = fft(fftshift(V));
Vf2 = fft(ifftshift(V));
Vf3 = ifft(fftshift(V));
Vf4 = ifft(ifftshift(V));
Vf5 = fft(V);
Vf6 = ifft(V);
disp([isreal(Vf1) isreal(Vf2) isreal(Vf3) isreal(Vf4) isreal(Vf5) isreal(Vf6)])
Run Code Online (Sandbox Code Playgroud)
结果:
0 0 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
没有真正的对称矢量的组合(i)fft或(i)fftshift导致它们.我尝试过偶数和奇数N(N = 2^8对比N = 1+2^8).
我曾尝试寻找k+flip(k)和有秩序的一些残余eps(1),但残差也是对称的,FFT的虚部不出来是模糊的顺序eps(1),而是用大小相媲美的实部.
我错过了什么令人眼花缭乱的明显事物?
我失踪的明显的事情:
FFT不是所有空间的积分,因此它假定为周期性信号.在上面,我复制了我选择偶数期间的最后一点N,因此没有办法将它移动到零开始,而没有小数索引,这是不存在的.
关于我选择的一个词k.这不是任意的.我试图解决的实际问题是生成模型FTIR干涉图,然后我将进行FFT以获得光谱.k是干涉仪行进的距离,它在波数中转换为频率.在实际问题中,将存在各种缩放因子,使得生成函数V将产生物理上有意义的数字.
我想生成一个随机的实对称方阵,条目均匀分布在0和1之间.我的尝试是:
a = rand(5);
b = a + a.'
我担心的是,虽然矩阵a是根据文档http://www.mathworks.com.au/help/techdoc/ref/rand.html统一分布的,但矩阵b可能不是,因为两个随机数的平均值可能不是与原始号码相同.
我试图使用
hist(a);
hist(b)
但不确定如何解释结果图.编辑:根据Oli矩阵b不再均匀分布,是否有办法实现这一目标?
nxn需要使用所需属性构建大小矩阵.
n甚至.(作为算法的输入)0到n-1对于各种n,可能需要任何一种可能的输出.
input
2
output
0 1
1 0
Run Code Online (Sandbox Code Playgroud)
input
4
output
0 1 3 2
1 0 2 3
3 2 0 1
2 3 1 0
Run Code Online (Sandbox Code Playgroud)
现在,我想到的唯一想法是以递归方式强制构建组合并修剪.
如何以迭代的方式有效地完成这项工作?
给定笛卡尔坐标中的多边形(不是必要的凸面),我想知道是否有任何方法可以检查该多边形的对称性?
我可以想到一个O(N)解决方案:使用旋转卡尺检查每对相对边是否平行并且大小相等.但是,我无法证明该算法的正确性.你能建议更好的解决方案吗?
我有一个对称矩阵.现在,问题在于我需要填充这样的维度矩阵(32**3) x (32**3).我需要填充矩阵的原因是因为在我的程序中我使用它进行各种计算:我正在反转它,我将它与其他矩阵相乘......在我看来,为了执行这些各种你需要实际存储完整矩阵的计算,你不能使用例如只有一半(但我可能是错的,在这种情况下请告诉我应该怎么做).
问题是这样的矩阵对于我的计算机来说太大了,我得到以下错误:
Traceback (most recent call last):
File "program.py", line 191, in <module>
A = zeros((n_x*n_y*n_z. n_x*n_y*n_z), float)
MemoryError
Run Code Online (Sandbox Code Playgroud)
在这里,n_x = 32.那么,我该如何解决这个问题呢?有没有办法存储这么大的矩阵,或者是一种避免存储它的聪明方法?如果我可以使用它们而不会在计算中出错,那么这两种方式对我来说都没问题.
为了完整起见,我在下面报告A矩阵的构建方式:
n_x = n_y = n_z = 32
L_x = L_y = L_z = n_x
A = zeros((n_x*n_y*n_z , n_x*n_y*n_z), float)
P_0 = 50.0
sigma_x = sigma_y = sigma_z = 0.9
sigma_root = np.sqrt(sigma_x**2 + sigma_y**2 + sigma_z**2)
twosigmasquared = 2.*sigma_root**2
for l in range(n_x*n_y*n_z):
for m in range(n_x*n_y*n_z):
A[l][m] …Run Code Online (Sandbox Code Playgroud) python symmetric matrix-inverse bigdata matrix-multiplication
我想生成一个关于轴的所有排列对称的随机(高斯)张量。最后,我希望所有条目具有相同的分布,因此对所有排列求和并通过 sqrt(k!) 重新缩放(其中 k 是我的张量的阶数)之类的技巧不起作用。例如:
import numpy as np
from itertools import permutations
noise_buffer = np.random.normal(size=n*n*n).reshape(n,n,n)/np.sqrt(6);
noise = np.zeros([n,n,n]);
for i in permutations([0,1,2]):
noise += np.transpose(noise_buffer,axes=list(i))
Run Code Online (Sandbox Code Playgroud)
我可以遍历所有坐标 (-1) 并适当地重新缩放,但这很耗时。
您知道有哪个图书馆实现了这一点吗?或者你知道有什么快速实施的方法吗?