乘以列主矩阵linq

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了乘以列主矩阵linq相关的知识,希望对你有一定的参考价值。

如您所见,对于行主矩阵来说,乘法很容易。

但在我的情况下我有列主矩阵,我如何使用linq乘以列主矩阵?

enter image description here


行主矩阵

double[][] M1 = { {a1, b1}, {a2, b2}, {a3, b3} };
double[] M2 = { a, b };

double[] M3 = M1.Select(inner => inner.Zip(M2, (x, y) => x*y).Sum()).ToArray();

列主要矩阵

double[][] M1 = {{a1,a2,a3},{b1,b2,b3}};

double[] M2 = { a, b };

double[] M3 = ?;

这些都是预期的结果。 (抱歉对于编写样本太懒了)。

A = a1*a + b1*b;
B = a2*a + b2*b;
C = a3*a + b3*b;
答案

我错过了groupby解决方案。

double[] M3 = M1.SelectMany(inner => inner.Select((x, i) => (x, i))
                  .GroupBy(t => t.i, t => t.x, (t, e) => 
                      e.Zip(M2, (x, y) => x * y).Sum()))
                        .ToArray();

以上是关于乘以列主矩阵linq的主要内容,如果未能解决你的问题,请参考以下文章

怎样判断矩阵每行每列主对角线以及反对的线上元素之和都相等。

用列主元消去法分别解方程组Ax=b,用MATLAB程序实现(最有效版)

C# 列主元素(Gauss)消去法 计算一元多次方程组

此矩阵运算的正式名称(将矩阵列乘以列向量)?

Matlab数值微分

一阶矩阵乘以四阶矩阵怎么做